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。 可能的返回值包括以下错误代码。
返回代码 | 说明 |
---|---|
|
调用方不是 GpioClx 的已注册客户端。 |
|
内存不足。 |
注解
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_INIT 和 WDF_OBJECT_ATTRIBUTES 结构。 这些结构由 WdfDeviceCreate 调用之前的 GPIO_CLX_ProcessAddDevicePreDeviceCreate 调用修改。 WdfDeviceCreate 调用中的输出参数 Device 是GPIO_CLX_ProcessAddDevicePostDeviceCreate调用的输入参数,它遵循 WdfDeviceCreate 调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | gpioclx.h |
Library | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |