WdfDpcCreate 함수(wdfdpc.h)
[KMDF에만 적용]
WdfDpcCreate 메서드는 프레임워크 DPC 개체를 만들고 EvtDpcFunc 콜백 함수를 등록합니다.
구문
NTSTATUS WdfDpcCreate(
[in] PWDF_DPC_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFDPC *Dpc
);
매개 변수
[in] Config
호출자가 할당한 WDF_DPC_CONFIG 구조체에 대한 포인터입니다.
[in] Attributes
새 DPC 개체의 특성을 지정하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.
[out] Dpc
새 프레임워크 DPC 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.
반환 값
WdfDpcCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
잘못된 매개 변수가 지정되었습니다. |
|
DPC 개체를 할당할 수 없습니다. |
|
부모 개체가 WDF_OBJECT_ATTRIBUTES 구조에 지정되지 않았습니다. |
|
WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버는 프레임워크 디바이스 개체 또는 부모 체인이 프레임워크 디바이스 개체로 이어지는 개체를 참조하지 않습니다. |
|
WDF_DPC_CONFIG 구조체의 AutomaticSerialization 멤버는 TRUE로 설정되지만 부모 개체의 실행 수준은WdfExecutionLevelPassive로 설정됩니다. |
WdfDpcCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.
이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.
설명
드라이버는 일반적으로 EvtDriverDeviceAdd 콜백 함수 내에서 WdfDpcCreate를 호출합니다.
드라이버는 DPC 개체를 만들 때 WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버에서 부모 개체를 지정해야 합니다. 부모 개체는 프레임워크 디바이스 개체 또는 부모 체인이 프레임워크 디바이스 개체로 이어지는 모든 개체일 수 있습니다. 프레임워크는 디바이스 개체를 삭제할 때 DPC 개체를 삭제합니다.
WdfDpcCreate를 호출하면 프레임워크 DPC 개체가 만들어지고 EvtDpcFunc 콜백 함수가 등록됩니다. 콜백 함수 실행을 예약하려면 드라이버가 WdfDpcEnqueue를 호출해야 합니다.
드라이버가 프레임워크 타이머 개체 에 대해 EvtCleanupCallback 또는 EvtDestroyCallback 콜백 함수를 제공하는 경우 프레임워크는 IRQL = PASSIVE_LEVEL 이러한 콜백 함수를 호출합니다.
DPC 개체 사용에 대한 자세한 내용은 인터럽트 서비스를 참조하세요.
예제
다음 코드 예제에서는 WDF_DPC_CONFIG_INIT 구조를 초기화한 다음 DPC 개체를 만듭니다.
WDF_DPC_CONFIG dpcConfig;
WDF_OBJECT_ATTRIBUTES dpcAttributes;
NTSTATUS status;
WDF_DPC_CONFIG_INIT(
&dpcConfig,
MyEvtDpcFunc
);
dpcConfig.AutomaticSerialization = TRUE;
WDF_OBJECT_ATTRIBUTES_INIT(&dpcAttributes);
dpcAttributes.ParentObject = pDevExt->WdfDevice;
status = WdfDpcCreate(
&dpcConfig,
&dpcAttributes,
&pDevExt->CompleteWriteDpc
);
if (!NT_SUCCESS(status)) {
return status;
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
머리글 | wdfdpc.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조) |
IRQL | <=DISPATCH_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |