次の方法で共有


IoReportTargetDeviceChange 関数 (wdm.h)

IoReportTargetDeviceChange ルーチンは、デバイスでカスタム イベントが発生したことを PnP マネージャーに通知します。

構文

NTSTATUS IoReportTargetDeviceChange(
  [in] PDEVICE_OBJECT PhysicalDeviceObject,
  [in] PVOID          NotificationStructure
);

パラメーター

[in] PhysicalDeviceObject

報告されるデバイスの PDO へのポインター。

[in] NotificationStructure

カスタム イベントを記述する呼び出し元が指定した TARGET_DEVICE_CUSTOM_NOTIFICATION 構造体へのポインター。 PnP マネージャーは、イベントの通知に登録されているドライバーにこの構造体を送信します。

NotificationStructureFileObjectNULL である必要があります。 NotificationStructureイベント には、イベントのカスタム GUID が含まれている必要があります。 NotificationStructure の他のフィールドは、カスタム イベントに応じて入力する必要があります。

PnP マネージャーは NotificationStructure を入力します。FileObject フィールドは、登録者に通知を送信する場合に使用します。

戻り値

IoReportTargetDeviceChange は、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態の値は次のとおりです。

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST
呼び出し元は、GUID_TARGET_DEVICE_QUERY_REMOVEなどのシステム PnP イベントを指定しました。 このルーチンは、カスタム イベント専用です。

注釈

デバイスでカスタム イベントが発生したことを IoReportTargetDeviceChange が PnP マネージャーに通知した後、PnP マネージャーは、デバイス上の通知に登録されたドライバーにイベントの通知を送信します。 このルーチンを使用して、GUID_TARGET_DEVICE_REMOVE_COMPLETEなどのシステム PnP イベントを報告しないでください。

カスタム デバイス イベントを定義するドライバーは 、IoReportTargetDeviceChange を呼び出して、カスタム イベントが発生したことを PnP マネージャーに通知します。 カスタム通知は、ボリューム ラベルの変更などのイベントに使用できます。

ドライバーは、デッドロックを防ぐために、このルーチンではなく、このルーチンの非同期形式 である IoReportTargetDeviceChangeAsynchronous を呼び出す必要があります。

特定のカーネル モード コンポーネントでは、この同期ルーチンを呼び出すことができます。 たとえば、ファイル システムは IoReportTargetDeviceChange を呼び出して、コンポーネントが排他的アクセスのためにボリュームを開こうとしたときに"ボリュームから降りる" カスタム イベントを報告できます。 ファイル システム ボリュームの通知に登録するクライアントは、PnP 通知コールバック ルーチンで排他オープンを要求しないように注意してください。

カスタム通知構造体には、独自の GUID を持つドライバー定義イベントが含まれています。 ドライバー ライターは、Uuidgen.exe または Guidgen.exe (Microsoft Windows SDKに含まれる) を使用して GUID を生成できます。

IoReportTargetDeviceChange の呼び出し元は、システム スレッドのコンテキストで IRQL = PASSIVE_LEVELで実行されている必要があります。 IRQL > PASSIVE_LEVELからのターゲット デバイスの変更を報告するには、 IoReportTargetDeviceChangeAsynchronous を呼び出します。

IoReportTargetDeviceChange は、Windows 98/Me ではサポートされていません。STATUS_NOT_IMPLEMENTEDを返します。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

IoReportTargetDeviceChangeAsynchronous

TARGET_DEVICE_CUSTOM_NOTIFICATION