다음을 통해 공유


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 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 지정되었습니다.
STATUS_INSUFFICIENT_RESOURCES
DPC 개체를 할당할 수 없습니다.
STATUS_WDF_PARENT_NOT_SPECIFIED
부모 개체가 WDF_OBJECT_ATTRIBUTES 구조에 지정되지 않았습니다.
STATUS_INVALID_DEVICE_REQUEST
WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버는 프레임워크 디바이스 개체 또는 부모 체인이 프레임워크 디바이스 개체로 이어지는 개체를 참조하지 않습니다.
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
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)

추가 정보

EvtDpcFunc

EvtDriverDeviceAdd

WDF_DPC_CONFIG

WDF_DPC_CONFIG_INIT

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDpcEnqueue