Prise en charge du PnP et de la gestion de l’alimentation dans les pilotes logiciels uniquement
Les pilotes logiciels uniquement sont des pilotes qui n’accèdent à aucun matériel. Certains pilotes logiciels uniquement résident dans une pile de pilotes qui n’accède pas au matériel. Étant donné que ces pilotes n’accèdent pas au matériel, ils n’ont généralement pas à effectuer d’opérations PnP ou de gestion de l’alimentation.
D’autres pilotes logiciels uniquement sont des pilotes de filtre : ils résident dans une pile de pilotes qui accèdent au matériel, mais les pilotes de filtre n’accèdent pas au matériel. Lorsqu’un pilote de filtre reçoit une demande d’E/S qui spécifie une opération PnP ou de gestion de l’alimentation, le pilote transmet généralement la demande au pilote suivant. L’infrastructure intercepte ces requêtes et les transmet, de sorte que les pilotes basés sur l’infrastructure ne voient jamais les requêtes.
Si vous écrivez un pilote logiciel uniquement, votre pilote crée des objets de périphérique , mais vous n’avez généralement pas besoin de fournir de fonctions de rappel d’événements pour gérer les événements PnP ou de gestion de l’alimentation. Si le pilote utilise des objets de file d’attente d’infrastructure, vous devez définir le membre PowerManaged de la structure WDF_IO_QUEUE_CONFIG de la file d’attente sur WdfFalse ou WdfUseDefault.
Quelques pilotes logiciels uniquement sont également des pilotes de fonction. En d’autres termes, un seul pilote peut agir en tant que pilote logiciel uniquement pour prendre en charge un périphérique virtuel qui n’accède pas au matériel, et en tant que pilote de fonction pour prendre en charge un périphérique matériel.