다음을 통해 공유


OpenSemaphoreW 함수(synchapi.h)

기존 명명된 세마포 개체를 엽니다.

구문

HANDLE OpenSemaphoreW(
  [in] DWORD   dwDesiredAccess,
  [in] BOOL    bInheritHandle,
  [in] LPCWSTR lpName
);

매개 변수

[in] dwDesiredAccess

세마포 개체에 대한 액세스입니다. 지정된 개체의 보안 설명자가 호출 프로세스에 대해 요청된 액세스를 허용하지 않으면 함수가 실패합니다. 액세스 권한 목록은 동기화 개체 보안 및 액세스 권한을 참조하세요.

[in] bInheritHandle

이 값이 TRUE이면 이 프로세스에서 만든 프로세스는 핸들을 상속합니다. 그렇지 않으면 프로세스에서 이 핸들을 상속하지 않습니다.

[in] lpName

열 세마포의 이름입니다. 이름 비교는 대/소문자를 구분합니다.

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

터미널 서비스: 이름에는 전역 또는 세션 네임스페이스에서 개체를 명시적으로 여는 "전역" 또는 "로컬" 접두사를 가질 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스를 참조하세요.

참고 빠른 사용자 전환은 터미널 서비스 세션을 사용하여 구현됩니다. 로그온하는 첫 번째 사용자는 세션 0을 사용하고, 로그온할 다음 사용자는 세션 1 등을 사용합니다. 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 터미널 서비스에 대해 설명된 지침을 따라야 합니다.

반환 값

함수가 성공하면 반환 값은 세마포 개체에 대한 핸들입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

OpenSemaphore 함수를 사용하면 여러 프로세스가 동일한 세마포 개체의 핸들을 열 수 있습니다. 함수는 일부 프로세스가 CreateSemaphore 함수를 사용하여 세마포를 이미 만든 경우에만 성공합니다. 호출 프로세스는 dwDesiredAccess 매개 변수에 지정된 액세스 제한에 따라 대기 함수와 같은 세마포 개체에 대한 핸들이 필요한 모든 함수에서 반환된 핸들을 사용할 수 있습니다.

DuplicateHandle 함수를 사용하여 핸들을 복제할 수 있습니다. CloseHandle 함수를 사용하여 핸들을 닫습니다. 프로세스가 종료되면 시스템이 핸들을 자동으로 닫습니다. 세마포 개체는 마지막 핸들이 닫혔을 때 제거됩니다.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 synchapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CloseHandle

CreateSemaphore

DuplicateHandle

개체 이름

ReleaseSemaphore

세마포 개체

동기화 함수