Démarrage d’un périphérique dans un pilote de bus
Un pilote de bus démarre un appareil enfant ( PDO enfant) avec une procédure telle que la suivante dans sa routine DispatchPnP :
Démarrez l’appareil.
Les étapes exactes varient d’un appareil à l’autre.
Par exemple, le pilote de bus PCI programme ses registres de mappage pour activer les demandes sur le bus PCI. Le pilote de bus ISA PnP active le carte ISA PnP afin que le pilote de fonction puisse y accéder.
Terminez l’IRP.
Si les opérations de démarrage du pilote de bus ont réussi, le pilote définit Irp-IoStatus.Status> sur STATUS_SUCCESS et appelle IoCompleteRequest en spécifiant un renforcement de priorité de IO_NO_INCREMENT. Le pilote de bus retourne STATUS_SUCCESS de sa routine DispatchPnP .
Si le pilote de bus rencontre une erreur lors de ses opérations de démarrage, il définit une erreur status dans l’IRP, appelle IoCompleteRequest avec IO_NO_INCREMENT et retourne l’erreur à partir de sa routine DispatchPnP.
Si un pilote de bus a besoin d’un certain temps pour démarrer l’appareil, il peut marquer l’IRP comme étant en attente et retourner STATUS_PENDING.