WdfTimerCreate 함수(wdftimer.h)

[KMDF 및 UMDF에 적용]

WdfTimerCreate 메서드는 프레임워크 타이머 개체를 만듭니다.

구문

NTSTATUS WdfTimerCreate(
  [in]  PWDF_TIMER_CONFIG      Config,
  [in]  PWDF_OBJECT_ATTRIBUTES Attributes,
  [out] WDFTIMER               *Timer
);

매개 변수

[in] Config

WDF_TIMER_CONFIG 구조체에 대한 포인터입니다.

[in] Attributes

새 타이머 개체에 대한 개체 특성을 포함하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.

[out] Timer

새 프레임워크 타이머 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.

반환 값

WdfTimerCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_WDF_PARENT_NOT_SPECIFIED
Attributes 매개 변수가 NULL이거나 Attributes가 지정한WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버가 NULL입니다.
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 지정되었습니다.
STATUS_INVALID_DEVICE_REQUEST
WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버는 프레임워크 디바이스 개체 또는 부모 체인이 프레임워크 디바이스 개체로 이어지는 개체를 참조하지 않았습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리가 부족했습니다.
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
WDF_TIMER_CONFIG 구조체의 AutomaticSerialization 멤버가 TRUE로 설정되었지만 부모 디바이스 개체의 실행 수준이WdfExecutionLevelPassive로 설정되었습니다.
 

WdfTimerCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.

이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

드라이버가 WdfTimerCreate를 호출할 때 WDF_OBJECT_ATTRIBUTES 구조를 제공해야 하며 구조체의 ParentObject 멤버에 부모 개체를 지정해야 합니다. 부모 개체는 프레임워크 디바이스 개체이거나 부모 체인이 프레임워크 디바이스 개체로 이어지는 모든 개체일 수 있습니다. 프레임워크는 디바이스 개체를 삭제할 때 타이머 개체를 삭제합니다.

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

드라이버가 프레임워크 타이머 개체 에 대해 EvtCleanupCallback 또는 EvtDestroyCallback 콜백 함수를 제공하는 경우 프레임워크는 IRQL = PASSIVE_LEVEL 이러한 콜백 함수를 호출합니다.

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

예제

다음 코드 예제에서는 WDF_TIMER_CONFIG 구조체와 WDF_OBJECT_ATTRIBUTES 구조를 초기화한 다음 WdfTimerCreate를 호출합니다.

WDF_TIMER_CONFIG  timerConfig;
WDF_OBJECT_ATTRIBUTES  timerAttributes;
WDFTIMER  timerHandle;
NTSTATUS  status;

WDF_TIMER_CONFIG_INIT(
                      &timerConfig,
                      MyEvtTimerFunc
                      );

timerConfig.AutomaticSerialization = TRUE;

WDF_OBJECT_ATTRIBUTES_INIT(&timerAttributes);
timerAttributes.ParentObject = DeviceHandle;

status = WdfTimerCreate(
                        &timerConfig,
                        &timerAttributes,
                        &timerHandle
                        );

if (!NT_SUCCESS(status)) {
    return status;
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 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)

추가 정보

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WDF_TIMER_CONFIG

WDF_TIMER_CONFIG_INIT

WdfTimerStart