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 回调函数通常至少执行以下一些初始化操作:

某些驱动程序(尤其是筛选器驱动程序)可能不会为某些设备创建设备对象。 如果 EvtDriverDeviceAdd 回调函数未创建设备对象,则除非遇到错误,否则它仍必须返回STATUS_SUCCESS。

如果驱动程序的 EvtDriverDeviceAdd 回调函数创建设备对象但不返回STATUS_SUCCESS,则框架将删除设备对象及其子设备。

如果函数驱动程序的 EvtDriverDeviceAdd 回调函数不返回STATUS_SUCCESS,则 I/O 管理器不会为设备生成设备堆栈。

如果筛选器驱动程序的 EvtDriverDeviceAdd 回调函数未返回STATUS_SUCCESS,则框架会将返回值转换为STATUS_SUCCESS,并且 I/O 管理器在没有筛选器驱动程序的情况下生成设备堆栈。

要求

   
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
Header wdfdriver.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

WDFDEVICE_INIT

WDF_DRIVER_CONFIG

WdfDriverCreate