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