Iniciando um dispositivo em um motorista de barramento
Um motorista de ônibus inicia um dispositivo filho ( PDO filho) com um procedimento como o seguinte em sua rotina DispatchPnP :
Inicie o dispositivo.
As etapas exatas variam de dispositivo para dispositivo.
Por exemplo, o driver de barramento PCI programa seus registros de mapeamento para habilitar solicitações no barramento PCI. O driver de barramento ISA PnP habilita o cartão ISA do PnP para que o driver de função possa acessá-lo.
Conclua o IRP.
Se as operações de início do driver de ônibus foram bem-sucedidas, o driver define Irp-IoStatus.Status> como STATUS_SUCCESS e chama IoCompleteRequest especificando um aumento de prioridade de IO_NO_INCREMENT. O motorista do ônibus retorna STATUS_SUCCESS de sua rotina DispatchPnP .
Se o motorista do ônibus encontrar um erro durante suas operações de início, o driver definirá um erro status no IRP, chamarÁ IoCompleteRequest com IO_NO_INCREMENT e retornará o erro de sua rotina DispatchPnP.
Se um motorista de ônibus exigir algum tempo para iniciar o dispositivo, ele poderá marcar o IRP como pendente e retornar STATUS_PENDING.