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로 설정합니다.
| 타이머 플래그 비트 | 묘사 |
|---|---|
| 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 지정된 명목 만료 시간과 기간 매개 변수를 ExSetTimer 루틴에 더 정확하게 일치합니다. 자세한 내용은 타이머 High-Resolution 참조하세요.
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 |