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 方法,该方法创建表示 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_INIT 和 WDF_OBJECT_ATTRIBUTES 结构。 这些结构由 GPIO_CLX_ProcessAddDevicePreDeviceCreate 调用修改,该调用位于 WdfDeviceCreate 调用之前。 WdfDeviceCreate 调用中的输出参数 Device是 GPIO_CLX_ProcessAddDevicePostDeviceCreate 调用的输入参数,该参数遵循 WdfDeviceCreate 调用。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始可用。 |
目标平台 | 普遍 |
标头 | gpioclx.h |
库 | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |