다음을 통해 공유


개체 이름

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

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

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

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

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

명명된 개체 사용