EVT_WDF_DRIVER_DEVICE_ADD回调函数 (wdfdriver.h)
[适用于 KMDF 和 UMDF]
驱动程序的 EvtDriverDeviceAdd 事件回调函数在即插即用 (PnP) 管理器报告存在设备时执行设备初始化操作。
语法
EVT_WDF_DRIVER_DEVICE_ADD EvtWdfDriverDeviceAdd;
NTSTATUS EvtWdfDriverDeviceAdd(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit
)
{...}
参数
[in] Driver
表示驱动程序的框架驱动程序对象的句柄。
[in, out] DeviceInit
指向框架分配 的WDFDEVICE_INIT 结构的指针。
返回值
如果操作成功,EvtDriverDeviceAdd 回调函数必须返回STATUS_SUCCESS。 否则,此回调函数必须返回 Ntstatus.h 中定义的错误状态值之一。 有关更多信息,请参见下面的“备注”部分。
注解
每个支持 PnP 设备的基于框架的驱动程序都必须提供 EvtDriverDeviceAdd 回调函数。 在调用 WdfDriverCreate 之前,驱动程序必须将回调函数的地址置于其WDF_DRIVER_CONFIG结构中。
在总线驱动程序检测到具有硬件标识符 (ID) 与驱动程序支持的硬件 ID 匹配的设备后,框架调用驱动程序的 EvtDriverDeviceAdd 回调函数。 通过提供 INF 文件指定驱动程序支持的硬件 ID,操作系统在首次将其中一台设备连接到计算机时使用该文件来安装驱动程序。 有关系统如何使用 INF 文件和硬件 ID 的详细信息,请参阅 安装程序如何选择驱动程序。
驱动程序的 EvtDriverDeviceAdd 回调函数通常至少执行以下一些初始化操作:
-
创建 I/O 队列 ,以便驱动程序可以接收 I/O 请求。
-
创建 应用程序用来与设备通信的设备接口。
- 初始化 Windows Management Instrumentation (WMI) 支持。
-
如果驱动程序处理设备中断,则创建中断对象。
-
如果驱动程序处理 DMA 操作, (DMA) 事务启用直接内存访问。
如果驱动程序的 EvtDriverDeviceAdd 回调函数创建设备对象但不返回STATUS_SUCCESS,框架将删除设备对象及其子设备。
如果函数驱动程序的 EvtDriverDeviceAdd 回调函数未返回STATUS_SUCCESS,则 I/O 管理器不会为设备生成设备堆栈。
如果筛选器驱动程序的 EvtDriverDeviceAdd 回调函数未返回STATUS_SUCCESS,框架会将返回值转换为STATUS_SUCCESS,并且 I/O 管理器在没有筛选器驱动程序的情况下生成设备堆栈。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfdriver.h (包括 Wdf.h) |
IRQL | PASSIVE_LEVEL |