次の方法で共有


無効にするためのデバイスの停止 (Windows 98/Me)

Windows 98/Me では、デバイス マネージャーがデバイスを無効にすると、PnP マネージャーが 停止 IRP を発行します。 (Windows 2000 以降のバージョンの Windows では、この状況で 削除 IRP が発行されます)。

PnP マネージャーは、次の順序で停止 IRP を送信します。

  1. PnP マネージャーは、 IRP_MN_QUERY_STOP_DEVICE を発行し、デバイスのドライバーがデバイスを停止できるかどうかを確認します。

    デバイス スタック内のすべてのドライバーが STATUS_SUCCESS を返す場合、ドライバーはデバイスをすばやく停止できる状態 (停止保留中) に移行させます。

    PnP マネージャーは、デバイスを無効にするために必要な数のデバイス スタックを照会します。

  2. IRP_MN_QUERY_STOP_DEVICE が成功した場合、PnP マネージャーはデバイスを停止する IRP_MN_STOP_DEVICE を発行します。

    PnP マネージャーは、デバイスの前回のクエリ停止 IRP が正常に完了した場合にのみ、停止 IRP を送信します。 停止 IRP 停止に応て、ドライバーは、デバイスのハードウェア リソース (I/O ポートなど) を解放し、デバイスへのアクセスを必要とするすべての IRP を失敗させます。

  3. IRP_MN_QUERY_STOP_DEVICE が失敗した場合、PnP マネージャーは IRP_MN_CANCEL_STOP_DEVICE を送信して、クエリを取り消します。

    IRP_MN_CANCEL_STOP_DEVICE に応答して、デバイスのドライバーは、開始状態にデバイスを返し、デバイスの I/O 要求の処理を再開します。

    PnP マネージャーは、スタック内の 1 つのドライバーが要求に失敗した場合、デバイス スタックのクエリ停止を取り消します。 PnP マネージャーは、1 つのデバイス スタックでのみクエリ停止を取り消すと、クエリに失敗したドライバーの上に接続されたすべてのドライバーが停止保留中の状態になっているため、 IRP_MN_CANCEL_STOP_DEVICE 要求を送信します。 IRP_MN_CANCEL_STOP_DEVICE が成功すると、ドライバーはデバイスを起動状態に戻しました。

デバイスが無効にされる場合、受信 IRP をキューに登録できません。なぜなら、デバイスが再び有効になるか保証できないためです。 その結果、データが失われる可能性があります。