Création d’objets d’appareil dans un pilote de bus

Chaque pilote de bus doit créer un objet d’appareil framework lorsqu’il découvre qu’un appareil enfant est connecté à un appareil parent. L’appareil parent est généralement un bus, mais il peut également s’agir d’un appareil multifonction pour lequel chaque fonction nécessite un ensemble distinct de pilotes (par exemple, une carte son qui prend en charge l’audio numérique et midi). Les objets d’appareil créés par les pilotes de bus sont appelés objets d’appareil physique (PDO), car chacun représente une connexion réelle d’un élément matériel (l’enfant) à un autre (le parent).

Le processus d’identification et de création de rapports sur les appareils connectés à un bus est appelé énumération de bus.

Pour plus d’informations sur l’énumération de bus, consultez Énumération des appareils sur un bus.

Un pilote de bus peut appeler un ensemble de méthodes d’initialisation d’objet d’appareil framework, qui stockent des informations dans la structure WDFDEVICE_INIT . En outre, les pilotes de bus peuvent appeler des méthodes d’initialisation PDO du framework.

La création d’un objet d’appareil framework pour un appareil enfant énuméré comprend généralement les étapes suivantes :

Si le pilote rencontre une erreur lors de l’initialisation de la structure WDFDEVICE_INIT qu’il a obtenue à partir de WdfPdoInitAllocate, le pilote doit appeler WdfDeviceInitFree au lieu de WdfDeviceCreate.

Une fois que le pilote de bus a créé l’objet d’appareil, il appelle généralement WdfDeviceSetPnpCapabilities et WdfDeviceSetPowerCapabilities pour signaler les fonctionnalités d’Plug-and-Play et d’alimentation de l’appareil.

Chaque pilote de bus est également le pilote de fonction de l’adaptateur de bus. Par conséquent, le pilote doit également fournir une fonction de rappel EvtDriverDeviceAdd . Cette fonction de rappel crée un objet d’appareil fonctionnel (FDO) pour chaque adaptateur de bus sur le système. Pour plus d’informations sur la création d’objets FDO, consultez Création d’objets d’appareil dans un pilote de fonction.