Запуск устройства в драйвере шины

Водитель шины запускает дочернее устройство (дочернее PDO) с процедурой, например следующей в подпрограмме DispatchPnP :

  1. Запустите устройство.

    Точные шаги зависят от устройства к устройству.

    Например, драйвер шины PCI настраивает свои регистры сопоставления, чтобы активировать запросы на шине PCI. Драйвер шины ISA PnP включает ISA PnP карту, чтобы драйвер функциональности мог получить к ней доступ.

  2. Завершите IRP.

    Если начальные операции водителя шины были успешными, драйвер задает Irp-IoStatus.Status> значение STATUS_SUCCESS и вызывает IoCompleteRequest, указав приоритет повышения IO_NO_INCREMENT. Драйвер шины возвращает STATUS_SUCCESS из подпрограммы DispatchPnP.

    Если драйвер шины сталкивается с ошибкой во время выполнения стартовых операций, он устанавливает состояние ошибки в IRP, вызывает IoCompleteRequest с IO_NO_INCREMENT и возвращает ошибку из своей подпрограммы DispatchPnP.

Если драйверу требуется некоторое время для запуска устройства, он может пометить IRP как в состоянии ожидания и вернуть STATUS_PENDING.