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 報告「離開磁碟區」自定義事件。 註冊文件系統磁碟區通知的用戶端會小心,不要在 PnP 通知回呼例程中要求獨佔開啟。
自定義通知結構包含驅動程式定義的事件及其本身的 GUID。 驅動程式寫入器可以產生具有 Uuidgen.exe 或 Guidgen.exe 的 GUID(包含在 windows SDK Microsoft)。
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) |