IoReportTargetDeviceChange 函数 (wdm.h)
IoReportTargetDeviceChange 例程通知 PnP 管理器设备上发生了自定义事件。
语法
NTSTATUS IoReportTargetDeviceChange(
[in] PDEVICE_OBJECT PhysicalDeviceObject,
[in] PVOID NotificationStructure
);
参数
[in] PhysicalDeviceObject
指向所报告设备的 PDO 的指针。
[in] NotificationStructure
指向调用方提供的描述自定义事件的 TARGET_DEVICE_CUSTOM_NOTIFICATION 结构的指针。 PnP 管理器将此结构发送给注册以获取事件通知的驱动程序。
NotificationStructure。FileObject 必须为 NULL。 NotificationStructure。事件 必须包含事件的自定义 GUID。 必须为自定义事件填充 NotificationStructure 的其他字段。
PnP 管理器填写 NotificationStructure。向注册者发送通知时的 FileObject 字段。
返回值
IoReportTargetDeviceChange 返回STATUS_SUCCESS或适当的错误状态。 可能的错误状态值包括以下内容。
返回代码 | 说明 |
---|---|
|
调用方指定了系统 PnP 事件,例如GUID_TARGET_DEVICE_QUERY_REMOVE。 此例程仅适用于自定义事件。 |
注解
在 IoReportTargetDeviceChange 通知 PnP 管理器设备上发生了自定义事件后,PnP 管理器会将事件的通知发送给在设备上注册通知的驱动程序。 请勿使用此例程来报告系统 PnP 事件,例如GUID_TARGET_DEVICE_REMOVE_COMPLETE。
定义自定义设备事件的驱动程序调用 IoReportTargetDeviceChange 来通知 PnP 管理器自定义事件已发生。 自定义通知可用于卷标签更改等事件。
驱动程序应调用此例程的异步形式 IoReportTargetDeviceChangeAsynchronous,而不是此例程,以防止死锁。
某些内核模式组件可以调用此同步例程。 例如,当组件尝试打开卷进行独占访问时,文件系统可以调用 IoReportTargetDeviceChange 来报告“get off the volume”自定义事件。 在文件系统卷上注册通知的客户端注意不要在 PnP 通知回调例程中请求独占打开。
自定义通知结构包含驱动程序定义的事件及其自己的 GUID。 驱动程序编写器可以使用Microsoft Windows SDK) 中包含的 Uuidgen.exe 或 Guidgen.exe (生成 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) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅“备注”部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , PowerIrpDDis (wdm) |