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

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

如果驱动程序的 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

另请参阅

WDFDEVICE_INIT

WDF_DRIVER_CONFIG

WdfDriverCreate