다음을 통해 공유


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 개체를 할당할 수 없습니다.
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 메서드가 반환할 수 있는 다른 반환 값 목록은 Framework 개체 만들기 오류참조하세요.

이 메서드는 다른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