ExAllocateTimer 함수(wdm.h)
ExAllocateTimer 루틴은 타이머 개체를 할당하고 초기화합니다.
구문
PEX_TIMER ExAllocateTimer(
[in, optional] PEXT_CALLBACK Callback,
[in, optional] PVOID CallbackContext,
[in] ULONG Attributes
);
매개 변수
[in, optional] Callback
드라이버 구현 ExTimerCallback 콜백 루틴에 대한 포인터입니다. 운영 체제는 타이머가 만료되면 이 루틴을 호출합니다. 이 매개 변수는 선택 사항이며 콜백 루틴이 필요하지 않은 경우 NULL 일 수 있습니다.
[in, optional] CallbackContext
콜백 매개 변수가 가리키는 콜 백 루틴의 컨텍스트 값입니다. 운영 체제는 지정된 경우 이 값을 ExTimerCallback 콜백 루틴에 매개 변수로 전달합니다. 이 매개 변수는 일반적으로 콜백 루틴에서 사용하는 컨텍스트 정보를 포함하는 호출자 정의 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 컨텍스트 정보가 필요하지 않은 경우 NULL 로 설정할 수 있습니다.
[in] Attributes
타이머 특성입니다. 이 매개 변수를 0으로 설정하거나 다음 타이머 플래그 비트 중 하나 이상의 비트 OR로 설정합니다.
타이머 플래그 비트 | Description |
---|---|
EX_TIMER_HIGH_RESOLUTION | 고해상도 타이머. 고해상도 클록을 사용하여 타이머를 더 정확하게 만듭니다. |
EX_TIMER_NO_WAKE | 절 해제 없음 타이머입니다. 타이머의 만료 시간과 지연 허용 시간을 초과할 때까지 프로세서를 해제하는 타이머 지연을 만료합니다. |
EX_TIMER_NOTIFICATION | 알림 타이머. 타이머를 동기화 타이머 대신 알림 타이머로 만듭니다. 이 플래그가 설정되지 않은 경우 타이머는 동기화 타이머입니다. |
EX_TIMER_NOTIFICATION 플래그 비트는 어떤 다른 플래그 비트가 설정되든 관계없이 설정할 수 있습니다.
EX_TIMER_HIGH_RESOLUTION 및 EX_TIMER_NO_WAKE 플래그 비트는 상호 배타적입니다. 호출자가 이러한 플래그 비트를 모두 설정하는 경우 루틴 버그가 검사됩니다.
타이머 특성에 대한 자세한 내용은 비고를 참조하세요.
반환 값
이 루틴은 호출에 성공하면 EX_TIMER 구조체에 대한 포인터를 반환합니다. 이 구조체는 루틴이 할당하고 초기화한 타이머 개체입니다. 호출이 실패하면 루틴은 NULL을 반환합니다.
설명
이 루틴은 새 타이머 개체에 대한 포인터를 반환합니다. 타이머를 사용하기 위해 호출 드라이버는 ExSetTimer, ExCancelTimer 및 ExDeleteTimer 루틴에 대한 후속 호출에서 이 포인터를 제공합니다. 드라이버가 ExTimerCallback 콜백 루틴에 대한 포인터를 ExAllocateTimer 루틴에 대한 입력 매개 변수로 제공하는 경우 운영 체제는 이 타이머 개체를 ExTimerCallback 루틴에 입력 매개 변수로 전달합니다.
타이머는 알림 타이머 또는 동기화 타이머일 수 있습니다. 알림 타이머가 신호를 받으면 모든 대기 스레드가 대기를 충족합니다. 이 타이머의 상태는 명시적으로 다시 설정될 때까지 신호를 유지합니다. 동기화 타이머가 만료되면 단일 대기 스레드가 해제될 때까지 상태가 신호로 설정됩니다. 그런 다음 타이머가 신호가 없는 상태로 다시 설정됩니다.
EX_TIMER_HIGH_RESOLUTION 플래그 비트가 특성에 설정된 경우 운영 체제는 필요에 따라 시스템 클록의 해상도를 증가하므로 타이머가 만료되는 시간은 DueTime 및 Period 매개 변수에서 ExSetTimer 루틴에 지정된 명목 만료 시간에 더 정확하게 일치합니다. 자세한 내용은 고해상도 타이머를 참조하세요.
EX_TIMER_NO_WAKE 플래그 비트가 특성에 설정된 경우 타이머는 프로세서를 저전력 상태에서 불필요하게 절전 모드에서 해제하지 않도록 방지합니다. 자세한 내용은 No-Wake 타이머를 참조하세요.
ExAllocateTimer 는 타이머 개체에 대한 스토리지를 할당합니다. 이 개체가 더 이상 필요하지 않은 경우 호출자는 ExDeleteTimer 루틴을 호출하여 이 개체를 해제해야 합니다.
콜백 매개 변수는 선택 사항입니다. ExTimerCallback 루틴을 제공하지 않는 드라이버는 타이머 개체에 대한 대기 작업을 대신 시작할 수 있습니다. 드라이버 스레드는 KeWaitForSingleObject 또는 KeWaitForMultipleObjects 와 같은 루틴을 호출하여 타이머가 만료되기를 기다릴 수 있습니다. 타이머가 만료되면 타이머 개체에 신호가 전송됩니다.
자세한 내용은 ExXxxTimer 루틴 및 EX_TIMER 개체를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1 시작해서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | Ntoskrnl.lib |
IRQL | <= DISPATCH_LEVEL |