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 方法,该方法创建设备对象 (FDO) 表示 GPIO 控制器。 否则,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 调用中的输出参数 DeviceGPIO_CLX_ProcessAddDevicePostDeviceCreate调用的输入参数,它遵循 WdfDeviceCreate 调用。

要求

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

另请参阅

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate