CreateSemaphoreExA 함수(winbase.h)
명명되거나 명명되지 않은 세마포 개체를 만들거나 열고 개체에 대한 핸들을 반환합니다.
통사론
HANDLE CreateSemaphoreExA(
[in, optional] LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
[in] LONG lInitialCount,
[in] LONG lMaximumCount,
[in, optional] LPCSTR lpName,
DWORD dwFlags,
[in] DWORD dwDesiredAccess
);
매개 변수
[in, optional] lpSemaphoreAttributes
SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수가 NULL
구조체의 lpSecurityDescriptor 멤버는 새 세마포에 대한 보안 설명자를 지정합니다. 이 매개 변수가 NULL
[in] lInitialCount
세마포 개체의 초기 개수입니다. 이 값은 0보다 크거나 같아야 하며 lMaximumCount
[in] lMaximumCount
세마포 개체의 최대 개수입니다. 이 값은 0보다 커야 합니다.
[in, optional] lpName
세마포 개체의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이름은 MAX_PATH 문자로 제한됩니다. 이름 비교는 대/소문자를 구분합니다.
lpName 명명된 기존 세마포 개체의 이름과 일치하는 경우 lInitialCount 및 lMaximumCount 매개 변수는 만들기 프로세스에 의해 이미 설정되었으므로 무시됩니다.
lpName 기존 이벤트, 뮤텍스, 대기 가능한 타이머, 작업 또는 파일 매핑 개체의 이름과 일치하면 함수가 실패하고 GetLastError 함수가 ERROR_INVALID_HANDLE반환합니다. 이러한 개체는 동일한 네임스페이스를 공유하기 때문에 발생합니다.
이름에는 전역 또는 세션 네임스페이스에서 개체를 명시적으로 만드는 "전역" 또는 "로컬" 접두사를 가질 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스
개체는 프라이빗 네임스페이스에서 만들 수 있습니다. 자세한 내용은 개체 네임스페이스참조하세요.
dwFlags
이 매개 변수는 예약되어 있으며 0이어야 합니다.
[in] dwDesiredAccess
세마포 개체의 액세스 마스크입니다. 액세스 권한 목록은 동기화 개체 보안 및 액세스 권한참조하세요.
반환 값
함수가 성공하면 반환 값은 세마포 개체에 대한 핸들입니다. 함수 호출 전에 명명된 세마포 개체가 있는 경우 함수는 기존 개체에 대한 핸들을 반환하고 getLastError
함수가 실패하면 반환 값은 NULL
발언
세마포 개체의 상태는 개수가 0보다 크면 신호를 받고, 개수가 0과 같으면 서명되지 않습니다. lInitialCount 매개 변수는 초기 개수를 지정합니다. 개수는 lMaximumCount 매개 변수에 지정된 값보다 작거나 0보다 클 수 없습니다.
호출 프로세스의 스레드는
여러 프로세스에 동일한 세마포 개체의 핸들이 있을 수 있으므로 프로세스 간 동기화에 개체를 사용할 수 있습니다. 사용할 수 있는 개체 공유 메커니즘은 다음과 같습니다.
- CreateProcess 함수에서 만든 자식 프로세스는 lpSemaphoreAttributes가 CreateSemaphoreEx 사용 상속의 매개 변수를 사용하는 경우 세마포 개체에 대한 핸들을 상속할 수 있습니다.
- 프로세스는 DuplicateHandle 함수를 호출할 때 세마포 개체 핸들을 지정하여 다른 프로세스에서 사용할 수 있는 중복 핸들을 만들 수 있습니다.
- 프로세스는 [OpenSemaphore](.)를 호출할 때 세마포 개체의 이름을 지정할 수 있습니다. /synchapi/nf-synchapi-signalobjectandwait.md) 또는 CreateSemaphoreEx 함수입니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
closeHandle
동기화 함수