Partager via


Utilisation de WDF pour développer un pilote

Cette rubrique fournit une vue d’ensemble générale des objets d’infrastructure que vous utiliserez pour développer un pilote KMDF (Kernel-Mode Driver Framework). Sauf indication contraire, vous utiliserez les mêmes objets pour développer un pilote UMDF (User-Mode Driver Framework) à partir d’UMDF version 2.

Les pilotes WDF (Windows Driver Frameworks) se composent d’une routine DriverEntry et d’un ensemble de fonctions de rappel d’événements définies par les objets Windows Driver Framework utilisés par les pilotes basés sur l’infrastructure. Les fonctions de rappel appellent des méthodes d’objet que le framework exporte. Le Kit de pilotes Windows (WDK) contient des exemples de pilotes WDF qui montrent comment implémenter les fonctions de rappel d’événement d’un pilote. Vous pouvez télécharger ces exemples à partir du Centre de développement Windows - Matériel. Pour plus d’informations sur les exemples disponibles, consultez Exemples de pilotes KMDF et Exemples de pilotes UMDF.

Lorsque vous créez un pilote WDF, vous effectuez généralement les opérations suivantes :

  • Utilisez un objet de pilote d’infrastructure pour représenter votre pilote.

    La routine DriverEntry du pilote doit appeler WdfDriverCreate pour créer un objet pilote d’infrastructure qui représente le pilote. La méthode WdfDriverCreate enregistre également la fonction de rappel EvtDriverDeviceAdd du pilote, que le framework appelle chaque fois que le gestionnaire Plug-and-Play (PnP) signale l’existence d’un appareil pris en charge par le pilote.

  • Utilisez des objets d’appareil framework pour prendre en charge pnP et la gestion de l’alimentation dans votre pilote.

    Tous les pilotes doivent appeler WdfDeviceCreate pour créer un objet de périphérique d’infrastructure pour chaque appareil pris en charge par un pilote. Un appareil peut être un élément matériel branché à l’ordinateur, ou il peut s’agir d’un appareil logiciel uniquement. Les objets d’appareil framework prennent en charge les opérations PnP et de gestion de l’alimentation, et les pilotes peuvent inscrire des fonctions de rappel d’événements qui notifient le pilote lorsqu’un appareil entre ou quitte son état de fonctionnement.

    Pour plus d’informations sur les objets d’appareil d’infrastructure, consultez Prise en charge du PnP et de la gestion de l’alimentation dans votre pilote.

  • Utilisez des objets de file d’attente d’infrastructure et des objets de requête d’infrastructure pour prendre en charge les opérations d’E/S dans votre pilote.

    Tous les pilotes qui reçoivent des demandes de contrôle d’E/S de lecture, d’écriture ou de périphérique provenant d’applications ou d’autres pilotes doivent appeler WdfIoQueueCreate pour créer des objets de file d’attente d’infrastructure qui représentent des files d’attente d’E/S. En règle générale, les pilotes inscrivent un ou plusieurs gestionnaires de requêtes pour chaque file d’attente d’E/S. Lorsque le gestionnaire d’E/S envoie une demande d’E/S au pilote, l’infrastructure crée un objet de demande d’infrastructure pour la demande, place l’objet de requête dans une file d’attente d’E/S et appelle l’un des gestionnaires de requêtes du pilote pour informer le pilote qu’une demande est disponible. Le pilote obtient la demande d’E/S et peut mettre en file d’attente, terminer, annuler ou transférer la demande.

    Pour plus d’informations sur l’utilisation des objets de file d’attente et des objets de requête de l’infrastructure, consultez Objets de file d’attente d’infrastructure et Objets de requête d’infrastructure.

  • Utilisez des objets d’interruption d’infrastructure pour gérer les interruptions d’appareil.

    Les pilotes qui gèrent les interruptions de périphérique doivent appeler WdfInterruptCreate pour créer un objet d’interruption d’infrastructure pour chaque interruption et inscrire des fonctions de rappel. Ces fonctions de rappel activent et désactivent l’interruption et servent de routine de service d’interruption (ISR) et d’appel de procédure différée (DPC) pour l’interruption.

    Pour plus d’informations sur les objets d’interruption d’infrastructure, consultez Gestion des interruptions matérielles.

  • Les pilotes KMDF peuvent utiliser les objets d’activation DMA de l’infrastructure et les objets de transaction DMA pour gérer les opérations d’accès direct à la mémoire (DMA) d’un appareil.

    Si le périphérique de votre pilote KMDF prend en charge les opérations DMA, le pilote doit appeler WdfDmaEnablerCreate pour créer un objet d’activation DMA et WdfDmaTransactionCreate pour créer un ou plusieurs objets transactionnels DMA. L’objet de transaction DMA définit une fonction de rappel EvtProgramDma qui programme le matériel de l’appareil pour effectuer une opération DMA.

    Pour plus d’informations sur la prise en charge des opérations DMA, consultez Gestion des opérations DMA dans les pilotes basés sur l’infrastructure.

  • Utilisez les objets cibles d’E/ S de l’infrastructure pour envoyer des demandes d’E/S à d’autres pilotes.

    Pour passer des demandes d’E/S à d’autres pilotes (généralement le pilote inférieur suivant dans la pile de pilotes), votre pilote envoie la demande à un objet cible d’E/S.

    Pour plus d’informations sur les objets cibles d’E/S, consultez Utilisation de cibles d’E/S.

  • Un pilote KMDF peut utiliser les objets de fournisseur WMI de l’infrastructure et les objets d’instance WMI pour prendre en charge les fonctionnalités WMI (Windows Management Instrumentation).

    La plupart des pilotes KMDF doivent prendre en charge WMI et appeler WdfWmiInstanceCreate pour inscrire les fonctions de rappel qui envoient ou reçoivent des données WMI.

    Pour plus d’informations sur WMI, consultez Prise en charge de WMI dans les pilotes basés sur l’infrastructure.

  • Utilisez les fonctionnalités de synchronisation de l’infrastructure.

    Tous les pilotes doivent être conscients des problèmes de synchronisation multiprocesseur et doivent utiliser les techniques de synchronisation fournies par l’infrastructure.

  • Utilisez des objets et des fonctionnalités supplémentaires que le framework fournit.

    L’infrastructure fournit des objets supplémentaires que votre pilote peut utiliser. Pour plus d’informations sur ces objets, consultez Objets de support WDF.