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或適當的錯誤狀態。 可能的錯誤狀態值包括下列專案。
傳回碼 | Description |
---|---|
|
呼叫端指定了系統 PnP 事件,例如GUID_TARGET_DEVICE_QUERY_REMOVE。 此例程僅適用於自定義事件。 |
備註
在 IoReportTargetDeviceChange 通知 PnP 管理員在裝置上發生自定義事件之後,PnP 管理員會將事件的通知傳送給已在裝置上註冊通知的驅動程式。 請勿使用此例程來報告系統 PnP 事件,例如GUID_TARGET_DEVICE_REMOVE_COMPLETE。
定義自定義裝置事件的驅動程式會呼叫 IoReportTargetDeviceChange ,通知 PnP 管理員已發生自定義事件。 自定義通知可用於磁碟區標籤變更之類的事件。
驅動程式應該呼叫此例程的異步形式 IoReportTargetDeviceChangeAsynchronous,而不是此例程,以防止死結。
某些核心模式元件可以呼叫這個同步例程。 例如,當元件嘗試開啟磁碟區以進行獨佔存取時,文件系統可以呼叫 IoReportTargetDeviceChange 來報告「關閉磁碟區」自定義事件。 註冊文件系統磁碟區通知的用戶端會小心,不要在 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 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅一节) |
DDI 合規性規則 | HwStorPortProhibitedDDIs (storport) 、 PowerIrpDDis (wdm) |