Creación de objetos de dispositivo en un controlador de bus

Cada controlador de bus debe crear un objeto de dispositivo de marco cuando detecta que un dispositivo secundario está conectado a un dispositivo primario. El dispositivo primario suele ser un bus, pero también puede ser un dispositivo multifunción para el que cada función requiere un conjunto independiente de controladores (como una tarjeta de sonido que admite audio digital y MIDI). Los objetos de dispositivo que crean los controladores de bus se denominan objetos de dispositivo físico (PPO) porque cada uno representa una conexión real de un elemento de hardware (el elemento secundario) a otro (el elemento primario).

El proceso de identificación e notificación de los dispositivos que están conectados a un bus se denomina enumeración de bus.

Para obtener más información sobre la enumeración de bus, vea Enumeración de los dispositivos en un bus.

Un controlador de bus puede llamar a un conjunto de métodos de inicialización de objetos de dispositivo de marco, que almacenan información en la estructura WDFDEVICE_INIT . Además, los controladores de autobús pueden llamar a métodos de inicialización de PDO del marco.

La creación de un objeto de dispositivo de marco para un dispositivo secundario enumerado normalmente incluye los pasos siguientes:

Si el controlador encuentra un error al inicializar la estructura WDFDEVICE_INIT que obtuvo de WdfPdoInitAllocate, el controlador debe llamar a WdfDeviceInitFree en lugar de WdfDeviceCreate.

Una vez que el controlador de bus ha creado el objeto de dispositivo, normalmente llama a WdfDeviceSetPnpCapabilities y WdfDeviceSetPowerCapabilities para notificar las funcionalidades de energía y Plug and Play del dispositivo.

Cada controlador de bus también es el controlador de función para el adaptador de bus. Por lo tanto, el controlador también debe proporcionar una función de devolución de llamada EvtDriverDeviceAdd . Esta función de devolución de llamada crea un objeto de dispositivo funcional (FDO) para cada adaptador de bus del sistema. Para obtener más información sobre la creación de FDO, consulte Creación de objetos de dispositivo en un controlador de funciones.