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, ExCancelTimerExDeleteTimer 루틴에 대한 후속 호출에서 이 포인터를 제공합니다. 드라이버가 ExTimerCallback 콜백 루틴에 대한 포인터를 ExAllocateTimer 루틴에 대한 입력 매개 변수로 제공하는 경우 운영 체제는 이 타이머 개체를 ExTimerCallback 루틴에 입력 매개 변수로 전달합니다.

타이머는 알림 타이머 또는 동기화 타이머일 수 있습니다. 알림 타이머가 신호를 받으면 모든 대기 스레드가 대기를 충족합니다. 이 타이머의 상태는 명시적으로 다시 설정될 때까지 신호를 유지합니다. 동기화 타이머가 만료되면 단일 대기 스레드가 해제될 때까지 상태가 신호로 설정됩니다. 그런 다음 타이머가 신호가 없는 상태로 다시 설정됩니다.

EX_TIMER_HIGH_RESOLUTION 플래그 비트가 특성에 설정된 경우 운영 체제는 필요에 따라 시스템 클록의 해상도를 증가하므로 타이머가 만료되는 시간은 DueTimePeriod 매개 변수에서 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

추가 정보

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback