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 함수에서 만든 프로세스는 lpTimerAttributes가 CreateWaitableTimer 매개 변수를 경우 타이머 개체에 대한 핸들을 상속할 수.
  • 프로세스는 DuplicateHandle 함수에 대한 호출에서 타이머 개체 핸들을 지정할 수 있습니다. 결과 핸들은 다른 프로세스에서 사용할 수 있습니다.
  • 프로세스는 OpenWaitableTimer 호출하거나 CreateWaitableTimer 함수를 타이머 개체의 이름을 지정할 수 있습니다.
CloseHandle 함수를 사용하여 핸들을 닫습니다. 프로세스가 종료되면 시스템이 핸들을 자동으로 닫습니다. 타이머 개체는 마지막 핸들이 닫혔을 때 제거됩니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0400 이상으로 정의합니다. 자세한 내용은 Windows 헤더사용하는 참조하세요.

타이머를 창에 연결하려면 SetTimer 함수를 사용합니다.

예제

CreateWaitableTimer사용하는 예제는 대기 가능한 타이머 개체사용하는 참조하세요.

요구 사항

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

참고 항목

CancelWaitableTimer

closeHandle

CreateProcess

CreateWaitableTimerEx

DuplicateHandle

FILETIME

개체 이름

OpenWaitableTimer

SECURITY_ATTRIBUTES

SetWaitableTimer

동기화 함수

대기 가능한 타이머 개체