다음을 통해 공유


개체 이름

명명된 개체는 프로세스에서 개체 핸들을 쉽게 공유할 수 있는 방법을 제공합니다. 프로세스에서 명명된 이벤트, 뮤텍스, 세마포 또는 타이머 개체를 만든 후 다른 프로세스는 이름을 사용하여 적절한 함수(OpenEvent, OpenMutex, OpenSemaphore또는 OpenWaitableTimer)를 호출하여 개체에 대한 핸들을 열 수 있습니다. 이름 비교는 대/소문자를 구분합니다.

이벤트, 세마포, 뮤텍스, 대기 가능 타이머, 파일 매핑 및 작업 개체의 이름은 동일한 네임스페이스를 공유합니다. 다른 형식의 개체에서 사용 중인 이름을 사용하여 개체를 만들려고 하면 함수가 실패하고 GetLastErrorERROR_INVALID_HANDLE반환됩니다. 따라서 명명된 개체를 만들 때 고유한 이름을 사용하고 중복 이름 오류에 대한 함수 반환 값을 확인해야 합니다.

동일한 형식의 개체에서 사용 중인 이름을 사용하여 개체를 만들려고 하면 함수가 성공하여 핸들을 기존 개체로 반환하고 GetLastErrorERROR_ALREADY_EXISTS반환하는. 예를 들어 CreateMutex 함수 호출에 지정된 이름이 기존 뮤텍스 개체의 이름과 일치하는 경우 함수는 기존 개체에 대한 핸들을 반환합니다. 이 경우 createMutex 호출은 OpenMutex 함수에 대한 호출과 동일합니다. 따라서 여러 프로세스가 동일한 뮤텍스에 CreateMutex 사용하는 것은 다른 프로세스가 OpenMutex호출하는 동안 CreateMutex 호출하는 하나의 프로세스를 갖는 것과 같습니다. 단, 만들기 프로세스가 먼저 시작되었는지 확인할 필요가 없습니다. 그러나 뮤텍스 개체에 이 기술을 사용하는 경우 호출 프로세스 중 어느 것도 뮤텍스의 즉각적인 소유권을 요청하지 않아야 합니다. 여러 프로세스가 즉각적인 소유권을 요청하는 경우 실제로 초기 소유권을 가져오는 프로세스를 예측하기 어려울 수 있습니다.

터미널 서비스 환경에는 이벤트, 세마포, 뮤텍스, 대기 가능한 타이머, 파일 매핑 개체 및 작업 개체에 대한 전역 네임스페이스가 있습니다. 또한 각 터미널 서비스 클라이언트 세션에는 이러한 개체에 대한 별도의 네임스페이스가 있습니다. 터미널 서비스 클라이언트 프로세스는 "Global\" 또는 "Local\" 접두사로 개체 이름을 사용하여 전역 또는 세션 네임스페이스에 개체를 명시적으로 만들 수 있습니다. 자세한 내용은 커널 개체 네임스페이스 참조하세요. 빠른 사용자 전환은 터미널 서비스 세션을 사용하여 구현됩니다(각 사용자는 다른 세션에 로그인). 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 터미널 서비스에 대해 설명된 지침을 따라야 합니다.

동기화 개체는 프라이빗 네임스페이스에서 만들 수 있습니다. 자세한 내용은 개체 네임스페이스참조하세요.

명명된 개체 사용하여