다음을 통해 공유


GPIO_CLX_ProcessAddDevicePreDeviceCreate 함수(gpioclx.h)

GPIO_CLX_ProcessAddDevicePreDeviceCreate 메서드는 WdfDeviceCreate 메서드에 입력 매개 변수로 전달되는 두 구조체로 초기화 정보를 로드합니다.

통사론

NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
  [in]      WDFDRIVER              Driver,
  [in, out] PWDFDEVICE_INIT        DeviceInit,
  [out]     PWDF_OBJECT_ATTRIBUTES FdoAttributes
);

매개 변수

[in] Driver

GPIO 컨트롤러 드라이버의 프레임워크 드라이버 개체에 대한 WDFDRIVER 핸들입니다.

[in, out] DeviceInit

프레임워크 할당 WDFDEVICE_INIT 구조체에 대한 포인터입니다. 이 메서드는 초기화 정보를 이 구조에 로드합니다. 반환할 때 이 구조체는 WdfDeviceCreate 메서드에 대한 입력 매개 변수로 사용할 준비가 된 것입니다.

[out] FdoAttributes

호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 메서드는 초기화 정보를 이 구조에 로드합니다. 반환할 때 이 구조체는 WdfDeviceCreate 메서드에 대한 입력 매개 변수로 사용할 준비가 된 것입니다.

반환 값

GPIO_CLX_ProcessAddDevicePreDeviceCreate 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 반환 값에는 다음 오류 코드가 포함됩니다.

반환 코드 묘사
STATUS_INVALID_PARAMETER
호출자가 GpioClx의 등록된 클라이언트가 아닙니다.
STATUS_INSUFFICIENT_RESOURCES
메모리 부족.

발언

GPIO 컨트롤러 드라이버는 GPIO 컨트롤러를 나타내는 디바이스 개체(FDO)를 만드는 WdfDeviceCreate 메서드를 호출하기 전에 EvtDriverDeviceAdd 콜백 함수에서 이 메서드를 호출해야 합니다. 그렇지 않으면 GPIO 프레임워크 확장(GpioClx)이 I/O 요청을 처리하거나 새 프레임워크 디바이스 개체에 대한 인터럽트 처리를 처리할 수 없습니다.

예제

다음 코드 예제에서는 "XYZ" GPIO 컨트롤러 디바이스에 대한 GPIO 컨트롤러 드라이버의 EvtDriverDeviceAdd 콜백 함수를 보여줍니다.

NTSTATUS
  XyzEvtDriverDeviceAdd(
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
    )
{
    WDFDEVICE Device;
    WDF_OBJECT_ATTRIBUTES FdoAttributes;
    NTSTATUS Status;

    Status = GPIO_CLX_ProcessAddDevicePreDeviceCreate(Driver,
                                                      DeviceInit,
                                                      &FdoAttributes);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

    //
    // Call the framework to create the device and attach it to the lower stack.
    //

    Status = WdfDeviceCreate(&DeviceInit, &FdoAttributes, &Device);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

    Status = GPIO_CLX_ProcessAddDevicePostDeviceCreate(Driver, Device);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

ExitDeviceAdd:
    return Status;
}

앞의 코드 예제에서 WdfDeviceCreate 호출은 GPIO 컨트롤러 디바이스를 나타내는 프레임워크 디바이스 개체를 만듭니다. 이 호출의 두 입력 매개 변수는 WDFDEVICE_INITWDF_OBJECT_ATTRIBUTES 구조체를 가리킵니다. 이러한 구조는 WdfDeviceCreate 호출 앞에 오는 GPIO_CLX_ProcessAddDevicePreDeviceCreate 호출에 의해 수정됩니다. WdfDeviceCreate 호출에서 디바이스 출력 매개 변수는 WdfDeviceCreate 호출을 따르는 GPIO_CLX_ProcessAddDevicePostDeviceCreate 호출에 대한 입력 매개 변수입니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8부터 사용할 수 있습니다.
대상 플랫폼 보편적
헤더 gpioclx.h
라이브러리 Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

참고 항목

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate