バス ドライバーでのデバイスの開始
バスドライバーは、 DispatchPnP ルーチンの中で、以下のようなプロシージャを使用して子デバイス (子 PDO) を起動します:
デバイスを起動する。
正確な手順はデバイスにより異なります。
例えば、PCIバスドライバーは、PCIバス上の要求を有効にするために、そのマッピングレジスタをプログラムします。 PnP ISAバスドライバーは、関数ドライバーがアクセスできるようにPnP ISAカードを有効化します。
IRPを完了します。
バスドライバーの開始操作が成功した場合、ドライバーは Irp->IoStatus.Status をSTATUS_SUCCESSに設定し、 IoCompleteRequest を、IO_NO_INCREMENTの優先度ブーストを指定して呼び出します。 バスドライバーは、 DispatchPnP ルーチンよりSTATUS_SUCCESSを返します。
バスドライバーは、開始操作中にエラーが発生した場合、IRPにエラーステータスを設定し、 IoCompleteRequest をIO_NO_INCREMENTで呼び出して、 DispatchPnP ルーチンからエラーを返します。
バスドライバーがデバイスの起動に時間を要する場合、IRP を保留としてマークし、STATUS_PENDING を返すことができます。