Control de solicitudes de enumeración

El administrador de PnP puede solicitar un controlador de autobús para enumerar sus elementos secundarios en cualquier momento. (Si está familiarizado con las interfaces WDM, las solicitudes de enumeración se IRP_MN_QUERY_DEVICE_RELATIONS solicitudes con un tipo de relación de BusRelations). Los controladores basados en marcos no ven estas solicitudes. En su lugar, el marco controla las solicitudes mediante la información que se almacena en la lista secundaria de un dispositivo. El controlador es responsable de mantener actualizada la lista secundaria para que el marco pueda proporcionar información correcta cuando el administrador de PnP solicite una enumeración.

Los controladores de bus basados en framework que admiten la enumeración dinámica pueden recibir una solicitud para volver a enumerar un dispositivo secundario determinado. El controlador de funciones del dispositivo secundario podría enviar dicha solicitud después de que el controlador detecte un error del dispositivo. (El marco admite este tipo de solicitud mediante la implementación de la interfaz REENUMERATE_SELF_INTERFACE_STANDARD , que es una interfaz estándar definida por el controlador que se define en wdm.h).

Los controladores de bus basados en marco que admiten la enumeración dinámica pueden proporcionar una función de devolución de llamada EvtChildListDeviceReenumerate , que el marco llama cuando recibe una solicitud de reenumeración del controlador de un dispositivo secundario. Si esta función de devolución de llamada devuelve TRUE o no existe, el marco marca el dispositivo secundario como ya no está presente e informa al administrador de PnP de que la lista secundaria del controlador de bus ha cambiado. Como resultado, el administrador de PnP solicita una reenumeración y el marco llama a la función de devolución de llamada EvtChildListCreateDevice del controlador, que crea un nuevo PDO para el dispositivo secundario.