デバイスの開始
PnPマネージャは、 IRP_MN_START_DEVICE 要求をドライバーに送信して、新しく列挙されたデバイスを起動するか、リソース再調整のために停止した既存のデバイスを再起動します。
関数ドライバとフィルタードライバーは、 IoCompletion ルーチンを設定し、 IRP_MN_START_DEVICE 要求をデバイススタックの下に渡し、すべての下位ドライバーがIRPを終了するまで、開始操作を延期する必要があります。 デバイススタックの最下位ドライバーである親バスドライバーは、デバイスが他のドライバーによってアクセスされる前に、デバイスに対する開始操作を実行する最初のドライバーでなければなりません。
開始操作の適切なシーケンス処理を行うために、Windows 2000 以降バージョンの Windows の PnP マネージャーは、デバイスインターフェースの公開を延期し、開始 IRP が成功するまでデバイスに対する作成要求をブロックします。
デバイスのドライバーが IRP_MN_START_DEVICE 要求に失敗すると、PnP マネージャーは IRP_MN_REMOVE_DEVICE 要求をデバイススタックに送信します (Windows 2000 以降のバージョンの Windows の場合)。 このIRPに応答して、デバイスのドライバーは、開始操作を取り消し(開始IRPに成功した場合)、 AddDevice 操作を元に戻し、デバイススタックからデタッチします。 PnP マネージャーは、このようなデバイスを 「失敗した開始」 としてマークします。
このセクションは、次のトピックで構成されています。