Partager via


Prise en charge du PnP et de la gestion de l’alimentation dans les pilotes de fonction

Les pilotes de fonction contrôlent le fonctionnement d’un appareil et accèdent donc au matériel de l’appareil. Ces pilotes doivent prendre en charge les opérations PnP et de gestion de l’alimentation et inscrire généralement plusieurs fonctions de rappel d’événements lorsqu’ils créent des objets d’appareil.

En règle générale, la fonction de rappel d’événement EvtDriverDeviceAdd d’un pilote de fonction appelle WdfDeviceInitSetPnpPowerEventCallbacks pour inscrire les fonctions de rappel suivantes :

  • EvtDevicePrepareHardware, qui fournit les ressources affectées par le système de l’appareil au pilote. Le pilote peut effectuer des opérations, telles que le mappage de la mémoire relative du bus de l’appareil dans l’espace d’adressage virtuel du processeur, qui rendent le matériel accessible au pilote.

  • EvtDeviceD0Entry, qui effectue des opérations, telles que le chargement du microprogramme, qui sont nécessaires chaque fois que l’appareil du pilote entre dans son état de fonctionnement (D0).

  • EvtDeviceD0Exit, qui effectue des opérations nécessaires chaque fois que l’appareil du pilote quitte son état de fonctionnement (D0) et entre dans un état de faible consommation.

  • EvtDeviceReleaseHardware, qui libère toutes les ressources système allouées par EvtDevicePrepareHardware .

Comme toutes les fonctions de rappel définies par l’infrastructure, celles de la liste précédente sont facultatives. Vous devez les fournir uniquement si votre pilote en a besoin.

Les pilotes de fonction peuvent appeler WdfDeviceSetPnpCapabilities et WdfDeviceSetPowerCapabilities pour signaler les fonctionnalités PnP et de gestion de l’alimentation d’un appareil au système d’exploitation.

En règle générale, vous allez utiliser les files d’attente d’E/S gérées par l’alimentation de l’infrastructure pour la plupart des demandes d’E/S. Si une file d’E/S est gérée par l’alimentation, l’infrastructure transmet les requêtes au pilote uniquement si son appareil est dans son état de fonctionnement (D0). Pour plus d’informations sur les files d’attente d’E/S gérées par l’alimentation, consultez Gestion de l’alimentation pour les files d’attente d’E/S.

En règle générale, le pilote de fonction de l’appareil est le propriétaire de la stratégie d’alimentation de la pile de pilotes. Le propriétaire de la stratégie d’alimentation détermine l’état d’alimentation approprié pour un appareil et envoie les requêtes à la pile des pilotes de l’appareil chaque fois que l’état d’alimentation de l’appareil doit changer. Pour les pilotes basés sur l’infrastructure, l’infrastructure gère cette responsabilité. Vous n’avez donc pas besoin de fournir du code dans votre pilote pour demander des modifications dans l’état d’alimentation d’un appareil.

Le propriétaire de la stratégie d’alimentation a deux responsabilités supplémentaires : il contrôle la capacité d’un appareil à entrer dans un état de faible consommation lorsqu’il est inactif et que le système reste dans son état de fonctionnement (S0) et il contrôle la capacité de l’appareil à générer un signal de veille lorsqu’il détecte un événement externe à partir d’un état de faible consommation. Si votre appareil dispose de fonctionnalités d’inactivité ou de veille, votre pilote de fonction peut fournir des fonctions de rappel supplémentaires. Pour plus d’informations sur les responsabilités du propriétaire de la stratégie d’alimentation, consultez Propriété power policy.