CreateWaitableTimerW 함수(synchapi.h)
대기 가능한 타이머 개체를 만들거나 엽니다.
개체에 대한 액세스 마스크를 지정하려면 CreateWaitableTimerEx 함수를 사용합니다.
구문
HANDLE CreateWaitableTimerW(
[in, optional] LPSECURITY_ATTRIBUTES lpTimerAttributes,
[in] BOOL bManualReset,
[in, optional] LPCWSTR lpTimerName
);
매개 변수
[in, optional] lpTimerAttributes
새 타이머 개체의 보안 설명자를 지정하고 자식 프로세스가 반환된 핸들을 상속할 수 있는지 여부를 결정하는 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다.
lpTimerAttributes가 NULL이면 타이머 개체는 기본 보안 설명자를 가져오고 핸들을 상속할 수 없습니다. 타이머에 대한 기본 보안 설명자의 ACL은 작성자의 기본 또는 가장 토큰에서 가져옵니다.
[in] bManualReset
이 매개 변수가 TRUE이면 타이머는 수동 재설정 알림 타이머입니다. 그렇지 않으면 타이머는 동기화 타이머입니다.
[in, optional] lpTimerName
타이머 개체의 이름입니다. 이름은 MAX_PATH 문자로 제한됩니다. 이름 비교는 대/소문자를 구분합니다.
lpTimerName이 NULL이면 타이머 개체는 이름 없이 만들어집니다.
lpTimerName이 기존 이벤트, 세마포, 뮤텍스, 작업 또는 파일 매핑 개체의 이름과 일치하면 함수가 실패하고 GetLastError가 ERROR_INVALID_HANDLE 반환합니다. 이 문제는 이러한 개체가 동일한 네임스페이스를 공유하기 때문에 발생합니다.
이름에는 전역 또는 세션 네임스페이스에 개체를 명시적으로 만드는 "전역" 또는 "로컬" 접두사를 가질 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스를 참조하세요. 빠른 사용자 전환은 터미널 서비스 세션을 사용하여 구현됩니다. 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 터미널 서비스에 대해 설명된 지침을 따라야 합니다.
개체는 프라이빗 네임스페이스에서 만들 수 있습니다. 자세한 내용은 개체 네임스페이스를 참조하세요.
반환 값
함수가 성공하면 반환 값은 타이머 개체에 대한 핸들입니다. 함수 호출 전에 명명된 타이머 개체가 있는 경우 함수는 기존 개체에 대한 핸들을 반환하고 GetLastError 는 ERROR_ALREADY_EXISTS 반환합니다.
함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
CreateWaitableTimer에서 반환된 핸들은 TIMER_ALL_ACCESS 액세스 권한으로 만들어집니다. 호출자에게 액세스 권한이 부여된 경우 타이머 개체에 대한 핸들이 필요한 모든 함수에서 사용할 수 있습니다. 다른 사용자를 가장하는 서비스 또는 스레드에서 타이머를 만든 경우 만들 때 타이머에 보안 설명자를 적용하거나 기본 DACL을 변경하여 만들기 프로세스의 기본 보안 설명자를 변경할 수 있습니다. 자세한 내용은 동기화 개체 보안 및 액세스 권한을 참조하세요.
호출 프로세스의 스레드는 대기 함수 중 하나에 대한 호출에서 타이머 개체 핸들을 지정할 수 있습니다.
여러 프로세스에 동일한 타이머 개체에 대한 핸들이 있을 수 있으므로 프로세스 간 동기화에 개체를 사용할 수 있습니다.
- CreateProcess 함수에서 만든 프로세스는 CreateWaitableTimer의 lpTimerAttributes 매개 변수가 상속을 사용하도록 설정하는 경우 타이머 개체에 대한 핸들을 상속할 수 있습니다.
- 프로세스는 DuplicateHandle 함수 호출에서 타이머 개체 핸들을 지정할 수 있습니다. 결과 핸들은 다른 프로세스에서 사용할 수 있습니다.
- 프로세스는 OpenWaitableTimer 또는 CreateWaitableTimer 함수를 호출할 때 타이머 개체의 이름을 지정할 수 있습니다 .
이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0400 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.
타이머를 창에 연결하려면 SetTimer 함수를 사용합니다.
예제
CreateWaitableTimer를 사용하는 예제는 대기 가능한 타이머 개체 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | synchapi.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |