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) |