共用方式為


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 管理員會填入 NotificationStructureFileObject 字段傳送通知給登錄者時。

傳回值

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 的 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)

另請參閱

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION