다음을 통해 공유


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로 설정합니다.

타이머 플래그 비트 묘사
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, ExCancelTimerExDeleteTimer 루틴에 대한 후속 호출에서 이 포인터를 제공합니다. 드라이버가 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

참고 항목

EX_TIMER

exCancelTimer

ExDeleteTimer

exSetTimer

exTimerCallback