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 콜백 함수를 호출하도록 보장합니다. 그러나 WdfTimerStart 는 DueTime에 지정된 값에 관계없이 시스템 클록의 세분성을 재정의할 수 없습니다.
드라이버가 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) |