PnP デバイスの状態遷移
PnP システムでは、デバイスは、構成、開始、リソースの再調整のために停止、場合によっては削除されると、さまざまな PnP 状態を介して遷移します。 このセクションでは、PnP デバイスの状態の概要について説明します。 概要は、ドライバーに必要な PnP サポートのためのロードマップです。 このドキュメントの他の部分では、各状態遷移について詳しく説明します。
次の図は、デバイスの PnP 状態と、デバイスが 1 つの状態から別の状態に遷移する方法を示しています。
前の図の左上から、PnP デバイスは物理的にシステムに物理的に存在し、ユーザーがデバイスを挿入したところか、起動時にデバイスがすでに存在していたかのどちらかです。 デバイスはまだシステム ソフトウェアに認識されていません。
デバイスのソフトウェア構成を開始するには、PnP マネージャーと親バス ドライバーは、デバイスを列挙します。 PnP マネージャーは、場合によってはユーザー モード コンポーネントからの支援を受けてデバイスのドライバーを識別します。これには、ファンクション ドライバーとオプションのフィルター ドライバー ( 複数可) が含まれます。 PnP マネージャーは、ドライバーがまだ読み込まれていない場合は、各ドライバーの DriverEntry ルーチンを呼び出します。 PnP デバイスのレポートと列挙の詳細については、「 実行中のシステムへの PnP デバイスの追加」を参照してください。
ドライバーが初期化されたら、そのデバイスの初期化も準備が完了している必要があります。 PnP マネージャーは、ドライバーが制御する各デバイスのドライバーの AddDevice ルーチンを呼び出します。
ドライバーが PnP マネージャーから IRP_MN_START_DEVICE 要求を受信すると、ドライバーはデバイスを起動し、デバイスの I/O 要求を処理する準備が整います。 IRP_MN_START_DEVICE 要求の処理については、「 デバイスの開始」を参照してください。
PnP マネージャーは、アクティブなデバイスのハードウェア リソースを再構成する必要がある場合は、デバイスのドライバーに IRP_MN_QUERY_STOP_DEVICE および IRP_MN_STOP_DEVICE 要求を送信します。 ハードウェア リソースを再構成した後、PnP マネージャーは、 IRP_MN_START_DEVICE 要求を送信してデバイスを再起動するようにドライバーを指示します。 停止 IRP の処理については、「 デバイスの停止」を参照してください。 (起動時に構成済みデバイスのドライバーは、デバイスが起動する前に IRP_MN_QUERY_STOP_DEVICE 要求と IRP_MN_STOP_DEVICE 要求を受け取ることができますが、この手順は前の図には示されていません)。
Windows 98/Me では、デバイスが無効になっているときに、PnP マネージャーは、 IRP_MN_QUERY_STOP_DEVICE および IRP_MN_STOP_DEVICE 要求も送信します。 これらのシステム上のドライバーも、失敗した開始後に IRP_MN_STOP_DEVICE 要求を受け取ります。
PnP デバイスがシステムから物理的に削除されている場合、または既に削除されている場合、PnP マネージャーはさまざまな削除 IRP をデバイスのドライバーに送信し、デバイスのソフトウェア表現 (デバイス オブジェクトなど) を削除するように指示します。 削除 IRP の処理については、「 デバイスの削除」を参照してください。
ドライバーのすべてのデバイスが削除された後のある時点で、PnP マネージャーは、ドライバーの アンロード ルーチンを呼び出し、ドライバーをアンロードします。