次の方法で共有


IoInvalidateDeviceRelations 関数 (wdm.h)

IoInvalidateDeviceRelations ルーチンは、デバイスの関係 (バス関係、吐出関係、削除関係、ターゲット デバイスの関係など) が変更されたことを PnP マネージャーに通知します。

構文

void IoInvalidateDeviceRelations(
  [in] PDEVICE_OBJECT       DeviceObject,
  [in] DEVICE_RELATION_TYPE Type
);

パラメーター

[in] DeviceObject

デバイスの PDO へのポインター。

[in] Type

変更されたリレーションの種類を記述する DEVICE_RELATION_TYPE 列挙値を指定します。 使用できる値には、 BusRelationsEjectionRelationsRemovalRelationsTargetDeviceRelation などがあります。 Windows 7 以降では、 PowerRelations の値もサポートされています。

戻り値

なし

解説

BusRelations などの一部のリレーションシップの種類では、このルーチンにより、PnP マネージャーまたは電源マネージャーは、デバイスのドライバーにIRP_MN_QUERY_DEVICE_RELATIONS要求を送信することによって、更新された関係情報を収集します。 その他の関係の種類 ( たとえば、ToolbarRelations) の場合、PnP マネージャーは新しいリレーションシップ情報をすぐに収集する必要はありません。PnP マネージャーは、デバイスを取り出す準備をしている場合にのみ、ドライバーの排出関係を照会します。

バス ドライバーが IoInvalidateDeviceRelations を呼び出して、デバイスが消えたことを PnP マネージャーに通知した後、バス ドライバーは、 IRP_MN_REMOVE_DEVICE 要求を受信するまで、そのデバイスの PnP IRP を処理し続ける必要があります。 この IRP に応答して、バス ドライバーはSTATUS_NO_SUCH_DEVICEを返します。 バス ドライバーがIRP_MN_REMOVE_DEVICE要求を正常に完了するまで、バス ドライバーは、デバイスのフラグをチェックするデバイス拡張機能にアクセスできます。

要件

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

こちらもご覧ください

IRP_MN_QUERY_DEVICE_RELATIONS

IRP_MN_REMOVE_DEVICE