Partager via


Exemple de pile d’appareils WDM

Cette section décrit les objets d’appareil qu’un ensemble de pilotes peut créer pour le matériel USB. Cet exemple montre les objets WDM et comment ils se superposent.

La figure suivante montre les objets de périphérique que les pilotes d'exemple créent. Pour plus d’informations, consultez les couches de pilotes WDM : exemple.

Diagramme illustrant des exemples de couches d'objets de périphérique WDM pour un joystick USB.

À partir du bas de cette figure, les objets de périphérique dans les piles de périphériques exemples incluent :

  1. Un PDO et un FDO pour le bus PCI.

    Le pilote de bus racine énumère le bus système interne (bus racine) et crée une PDO pour chaque appareil qu’il trouve. L’un de ces PDO est destiné au bus PCI. (La figure ne montre pas les PDO et FDO pour le bus racine.)

    Le gestionnaire PnP identifie le pilote PCI comme pilote de fonction pour le bus PCI, charge le pilote (s’il n’est pas déjà chargé) et transmet l’opération PDO au pilote PCI. Dans sa routine AddDevice , le pilote PCI crée un FDO pour le bus PCI (IoCreateDevice) et attache l’objet FDO à la pile d’appareils (IoAttachDeviceToDeviceStack) pour le bus PCI. Le pilote PCI crée et attache cette FDO dans le cadre de ses responsabilités en tant que pilote de fonction pour le bus PCI.

    Cet exemple n’inclut pas de pilotes de filtre pour le bus PCI.

  2. Un PDO et un FDO pour le contrôleur hôte USB.

    Le gestionnaire PnP dirige le pilote PCI pour démarrer son appareil (IRP_MN_START_DEVICE), puis interroge le pilote PCI pour ses enfants (IRP_MN_QUERY_DEVICE_RELATIONS avec le type de relation BusRelations). En réponse, le pilote PCI énumère les appareils sur son bus. Dans cet exemple, le pilote PCI recherche un contrôleur hôte USB et crée une PDO pour cet appareil. La flèche large dans la figure indique que le contrôleur hôte USB est un « enfant » du bus PCI. Le pilote PCI crée des PDO pour ses appareils enfants dans le cadre de ses responsabilités en tant que pilote de bus pour le bus PCI.

    Le gestionnaire PnP identifie la paire de pilotes miniclass/classe du contrôleur hôte USB comme pilote de fonction pour le contrôleur hôte USB et charge la paire de pilotes. Le gestionnaire PnP appelle la paire de pilotes au moment approprié pour créer et attacher une FDO pour le contrôleur hôte USB.

    Cet exemple n’inclut pas de pilotes de filtre pour le contrôleur hôte USB.

  3. Un PDO et un FDO pour le hub USB.

    Le contrôleur hôte USB énumère son bus, localise le hub USB dans le seul port et crée une PDO pour le hub. Le pilote du hub USB crée et attache une FDO pour le hub.

    Cet exemple n’inclut pas de pilotes de filtre pour le hub USB.

  4. Un PDO, un FDO et deux DOS de filtre pour l’appareil joystick.

    Le pilote du hub USB énumère son bus, localise un périphérique HID (le joystick) et crée un PDO pour le joystick.

    Dans cet exemple, un pilote de filtre de niveau inférieur est configuré dans le Registre pour les appareils joystick, de sorte que le gestionnaire PnP charge le pilote de filtre. Le pilote de filtre détermine qu’il est pertinent pour l’appareil et crée et attache un filtre DO à la pile d’appareils.

    Le gestionnaire PnP détermine que le pilote de fonction pour le périphérique joystick est la paire de pilotes HID class/miniclass et charge ces pilotes. La paire de pilotes se compose d’un pilote miniclass lié à une DLL de pilote de classe. Ensemble, ils agissent en tant que pilote fonctionnel pour l’appareil. La paire de pilotes classe/miniclasse crée un objet de périphérique, le FDO, et l’attache à la pile de périphériques.

    Un pilote de filtre de niveau supérieur crée et attache une opération de filtrage à la pile d’appareils, de manière similaire au filtre de niveau inférieur.

Le pilote du bus parent crée toujours le PDO au bas de la pile d'appareils pour un dispositif particulier. Lorsque les pilotes gèrent les IRP PnP ou d'alimentation, ils doivent transmettre chaque IRP jusqu'à la pile de dispositifs vers le PDO et son pilote de bus associé.

La figure suivante montre les mêmes piles d’appareils que la figure précédente, mais met en évidence les objets d’appareil que chaque pilote crée et gère.

diagramme illustrant des exemples de couches d’objets d’appareil du point de vue du pilote.

Un gestionnaire de bus couvre plusieurs piles d'appareils. Un pilote de bus crée l’objet FDO pour son adaptateur ou contrôleur de bus et crée un PDO pour chacun de ses périphériques enfants.