IoReportTargetDeviceChange 函数 (wdm.h)

IoReportTargetDeviceChange 例程通知 PnP 管理器设备上发生了自定义事件。

语法

NTSTATUS IoReportTargetDeviceChange(
  [in] PDEVICE_OBJECT PhysicalDeviceObject,
  [in] PVOID          NotificationStructure
);

参数

[in] PhysicalDeviceObject

指向所报告设备的 PDO 的指针。

[in] NotificationStructure

指向描述自定义事件的调用方提供的 TARGET_DEVICE_CUSTOM_NOTIFICATION 结构的指针。 PnP 管理器将此结构发送到注册以通知事件的驱动程序。

NotificationStructureFileObject 必须 NULLNotificationStructure事件 必须包含事件的自定义 GUID。 NotificationStructure 的其他字段必须根据需要填充自定义事件。

PnP 管理器填写 NotificationStructure。向注册者发送通知时,FileObject 字段。

返回值

IoReportTargetDeviceChange 返回STATUS_SUCCESS或适当的错误状态。 可能的错误状态值包括以下内容。

返回代码 描述
STATUS_INVALID_DEVICE_REQUEST
调用方指定了系统 PnP 事件,例如GUID_TARGET_DEVICE_QUERY_REMOVE。 此例程仅适用于自定义事件。

言论

IoReportTargetDeviceChange 通知 PnP 管理器在设备上发生了自定义事件后,PnP 管理器会将事件的通知发送到在设备上注册通知的驱动程序。 请勿使用此例程来报告系统 PnP 事件,例如GUID_TARGET_DEVICE_REMOVE_COMPLETE。

定义自定义设备事件的驱动程序 IoReportTargetDeviceChange 调用,以通知 PnP 管理器发生了自定义事件。 自定义通知可用于卷标签更改等事件。

驱动程序应调用此例程的异步形式,IoReportTargetDeviceChangeAsynchronous(而不是此例程)以防止死锁。

某些内核模式组件可以调用此同步例程。 例如,当组件尝试打开卷进行独占访问时,文件系统可以调用 IoReportTargetDeviceChange 来报告“关闭卷”自定义事件。 在文件系统卷上注册通知的客户端小心翼翼,不要在 PnP 通知回调例程中请求独占打开。

自定义通知结构包含具有其自己的 GUID 的驱动程序定义事件。 驱动程序编写器可以使用 Uuidgen.exe 或 Guidgen.exe(Microsoft Windows SDK 中包含的)生成 GUID。

IoReportTargetDeviceChange 的调用方必须在系统线程的上下文中运行 IRQL = PASSIVE_LEVEL。 若要从 IRQL > PASSIVE_LEVEL 报告目标设备更改,请调用 IoReportTargetDeviceChangeAsynchronous

Windows 98/Me 不支持 IoReportTargetDeviceChange;它返回STATUS_NOT_IMPLEMENTED。

要求

要求 价值
最低支持的客户端 从 Windows 2000 开始可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL(请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION