ioReportTargetDeviceChangeAsynchronous 函数 (wdm.h)

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

语法

NTSTATUS IoReportTargetDeviceChangeAsynchronous(
  [in]           PDEVICE_OBJECT                   PhysicalDeviceObject,
  [in]           PVOID                            NotificationStructure,
  [in, optional] PDEVICE_CHANGE_COMPLETE_CALLBACK Callback,
  [in, out]      PVOID                            Context
);

参数

[in] PhysicalDeviceObject

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

[in] NotificationStructure

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

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

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

[in, optional] Callback

(可选)指向 PnP 管理器在通知为此自定义事件注册的驱动程序后调用的调用方提供的例程。

回调例程具有以下类型:

typedef
VOID
(*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
    IN PVOID Context
    );

设备更改完成的回调例程不应阻止,并且不得调用生成 PnP 事件的同步例程。

PnP 管理器在 IRQL = PASSIVE_LEVEL 调用设备更改完成回调例程。

[in, out] Context

(可选)指向 PnP 管理器传递给 回调 例程的调用方提供的上下文结构。 调用方必须从非分页内存分配此结构。

返回值

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

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

注解

IoReportTargetDeviceChangeAsynchronous 例程通知 PnP 管理器在设备上发生自定义事件后,例程会立即返回:当 PnP 管理器将事件的通知发送到在设备上注册通知的驱动程序时,它不会等待。 请勿使用此例程来报告系统 PnP 事件,例如GUID_TARGET_DEVICE_REMOVE_COMPLETE。

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

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

当驱动程序在处理事件、 IRP_MN_REMOVE_DEVICEIRP_MN_SURPRISE_REMOVAL时调用此例程时,PnP 管理器在驱动程序返回并展开堆栈后调用驱动程序的 回调 例程。

IoReportTargetDeviceChangeAsynchronous 的调用方必须在 IRQL <= DISPATCH_LEVEL运行。 如果驱动程序编写器在 IRQL = DISPATCH_LEVEL调用此例程,则必须从非分页内存中分配 NotificationStructure

要求

   
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDDI (storport)

另请参阅

IoReportTargetDeviceChange

TARGET_DEVICE_CUSTOM_NOTIFICATION