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 结构中的回调函数的地址放在其 WDF_DRIVER_CONFIG 结构中。
该框架调用驱动程序的 EvtDriverDeviceAdd 回调函数后,总线驱动程序检测到硬件标识符(ID)与驱动程序支持的硬件 ID 匹配的设备。 通过提供 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 |