다음을 통해 공유


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 호출의 출력 매개 변수인 DeviceWdfDeviceCreate 호출 뒤에 있는 GPIO_CLX_ProcessAddDevicePostDeviceCreate 호출에 대한 입력 매개 변수입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 사용하여 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 gpioclx.h
라이브러리 Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

추가 정보

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate