다음을 통해 공유


KeCancelTimer 함수(wdm.h)

KeCancelTimer 루틴은 타이머 간격(설정된 경우)이 만료되기 전에 타이머 개체를 큐에서 제거합니다.

구문

BOOLEAN KeCancelTimer(
  [in, out] PKTIMER unnamedParam1
);

매개 변수

[in, out] unnamedParam1

호출자가 스토리지를 제공하는 초기화된 타이머 개체에 대한 포인터입니다.

반환 값

지정된 타이머 개체가 시스템 타이머 큐에 있는 경우 KeCancelTimerTRUE를 반환합니다.

설명

타이머 개체가 현재 시스템 타이머 큐에 있는 경우 큐에서 제거됩니다. DPC 개체가 타이머와 연결된 경우 해당 개체도 취소됩니다. 그렇지 않으면 작업이 수행되지 않습니다.

타이머가 타이머 큐에 있는 경우 루틴은 TRUE 를 반환합니다. 비속어 타이머는 만료되는 즉시 시스템 큐에서 제거됩니다. 따라서 비사용자 타이머의 경우 타이머 DPC가 큐에 대기된 경우 KeCancelTimerFALSE 를 반환합니다. 주기적 타이머는 항상 타이머 큐에 있으므로 KeCancelTimer는 주기적 타이머에 대해 항상 TRUE 를 반환합니다.

이미 실행 중인 DPC가 완료될 때 실행됩니다. 드라이버는 DPC에서 사용하는 리소스를 해제하기 전에 DPC가 완료되었는지 확인해야 합니다. 비협조 타이머의 경우 이벤트 개체와 같은 동기화 기본 형식을 사용하여 드라이버와 DPC 간에 동기화할 수 있습니다. 드라이버는 KeCancelTimer의 반환 코드를 검사 DPC가 실행 중인지 확인할 수 있습니다. 이 경우 DPC는 종료하기 전에 이벤트에 신호를 표시할 수 있으며, 드라이버는 해당 이벤트가 신호되지 않은 상태로 다시 설정될 때까지 기다릴 수 있습니다.

주기적인 타이머 의 경우 KeCancelTimer 는 항상 TRUE를 반환하므로 드라이버는 다른 기술을 사용하여 DPC가 완료될 때까지 기다려야 합니다. KeFlushQueuedDpcs 루틴을 사용하여 DPC가 실행될 때까지 차단합니다.

드라이버는 전역 변수 또는 드라이버 개체 확장에 저장된 데이터에 대해 동기화할 필요가 없습니다. 시스템은 이러한 지역 중 하나를 할당 취소하기 전에 KeFlushQueuedDpcs 를 자동으로 호출합니다.

타이머 개체에 대한 자세한 내용은 타이머 개체 및 DPC를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm)

추가 정보

KeInitializeTimer

KeReadStateTimer

KeSetTimer