共用方式為


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或適當的錯誤狀態。 可能的錯誤狀態值包括下列專案。

傳回碼 Description
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 的驅動程式定義事件。 驅動程式寫入器可以使用包含在 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)

另請參閱

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION