다음을 통해 공유


WdfTimerStart 함수(wdftimer.h)

[KMDF 및 UMDF에 적용]

WdfTimerStart 메서드는 타이머의 시계를 시작합니다.

통사론

BOOLEAN WdfTimerStart(
  [in] WDFTIMER Timer,
  [in] LONGLONG DueTime
);

매개 변수

[in] Timer

WdfTimerCreate호출하여 가져온 프레임워크 타이머 개체에 대한 핸들입니다.

[in] DueTime

시스템 시간 단위(100나노초 간격)의 기간입니다. 프레임워크는 지정된 기간이 경과하면 드라이버의 EvtTimerFunc 콜백 함수를 호출합니다. 기간 값은 다음과 같이 음수 또는 양수일 수 있습니다.

  • 값이 음수이면 기간은 현재 시스템 시간을 기준으로 합니다.
  • 값이 양수이면 기간은 절대 시간을 지정합니다(실제로 1601년 1월 1일에 상대적임).

경고

WDF_TIMER_CONFIGUseHighResolutionTimer 멤버를 WdfTrue설정하는 경우 DueTime 매개 변수가 음수 값으로 설정된 WdfTimerStart 호출해야 합니다. 그렇지 않으면 호출로 인해 시스템이 충돌합니다.

상대 시간은 지정된 기간 내에 발생할 수 있는 시스템 시간 변경의 영향을 받지 않습니다. 절대 시간은 시스템 시간 변경을 반영합니다.

프레임워크는 시간 값을 시스템 시간 단위로 변환하는 시간 변환 함수를 제공합니다.

반환 값

WdfTimerStart 타이머 개체가 시스템의 타이머 큐에 있는 경우 TRUE 반환합니다. 그렇지 않으면 이 메서드는 false 반환합니다. 자세한 내용은 다음 설명 섹션을 참조하세요.

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

발언

드라이버는 타이머가 주기적 타이머인지 여부에 관계없이 항상 WdfTimerStart 호출하여 타이머를 만든 후 시작해야 합니다.

드라이버가 WdfTimerStart호출한 후 프레임워크는 DueTime 매개 변수에 대해 지정된 시간이 경과하면 드라이버의 EvtTimerFunc 콜백 함수를 호출합니다. 이 첫 번째 호출 후에 프레임워크는 드라이버의 WDF_TIMER_CONFIG 구조체의 Period 멤버가 지정한 기간이 경과할 때마다 콜백 함수를 호출합니다.

타이머의 만료는 궁극적으로 시스템 클록의 세분성에 따라 달라집니다. DueTime 지정된 값은 프레임워크가 지정된 DueTime또는 그 이후에 드라이버의 EvtTimerFunc 콜백 함수를 호출하도록 보장합니다. 그러나 WdfTimerStartDueTime에 지정된 값이시스템 클록의 세분성을 재정의할 수 없습니다.

드라이버가 WdfTimerStart 호출하면 해당 타이머 개체가 시스템의 타이머 개체 큐에 추가됩니다. 타이머가 정기 타이머가 아닌 경우 시스템은 타이머의 "기한"이 경과한 후 큐에서 타이머 개체를 제거합니다. 타이머가 주기적 타이머인 경우 드라이버가 WdfTimerStop호출할 때까지 타이머 개체가 큐에 유지됩니다.

드라이버가 만료된 후 비정기 타이머를 다시 시작하기 위해 EvtTimerFunc 콜백 함수에서 WdfTimerStart 호출할 수 있습니다.

WdfTimerStart 드라이버가 이전에 WdfTimerStart 호출하고 타이머 개체가 시간이 경과되지 않았거나 주기적 타이머이기 때문에 시스템 큐에 있는 경우 TRUE 반환합니다. WdfTimerStart TRUE 반환하기 전에 운영 체제는 WdfTimerStart에 대한 새 호출에서 드라이버가지정한 값으로 기간을 다시 설정합니다. 프레임워크는 새 기간이 경과한 후에만 EvtTimerFunc 콜백 함수를 호출합니다.

타이머의 시계를 중지하기 위해 드라이버는 WdfTimerStop호출할 수 있습니다.

프레임워크 타이머 개체에 대한 자세한 내용은 타이머 사용 참조하세요.

예제

다음 코드 예제에서는 타이머를 시작합니다. 프레임워크는 10밀리초 후에 타이머의 EvtTimerFunc 콜백 함수를 호출합니다.

BOOLEAN inTimerQueue;

inTimerQueue = WdfTimerStart(
                             timerHandle,
                             WDF_REL_TIMEOUT_IN_MS(10)
                             );

요구 사항

요구
대상 플랫폼 보편적
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
헤더 wdftimer.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

참고 항목

EvtTimerFunc

WDF_TIMER_CONFIG

WdfTimerCreate

WdfTimerStop