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 控制器驱动程序必须在调用 EvtDriverDeviceAdd 回调函数中调用此方法,然后才能调用 WdfDeviceCreate 方法,该方法创建表示 GPIO 控制器的设备对象(FDO)。 否则,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 结构。 这些结构由 GPIO_CLX_ProcessAddDevicePreDeviceCreate 调用修改,该调用位于 WdfDeviceCreate 调用之前。 WdfDeviceCreate 调用中的输出参数 DeviceGPIO_CLX_ProcessAddDevicePostDeviceCreate 调用的输入参数,该参数遵循 WdfDeviceCreate 调用。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
目标平台 普遍
标头 gpioclx.h
Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

另请参阅

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate