Crear una lista de requisitos de recursos
Cuando un controlador de autobús detecta un dispositivo secundario, el controlador es responsable de crear una lista de requisitos de recursos para el dispositivo. Cada elemento de la lista es una configuración lógica para el dispositivo.
Una vez que el controlador notifica el dispositivo durante la enumeración de bus, el marco llama a la función de devolución de llamada EvtDeviceResourceResourceRequirementsQuery del controlador. Esta función de devolución de llamada recibe un identificador de un objeto resource-requirements-list que representa una lista de requisitos de recursos vacíos.
A continuación, el controlador debe hacer lo siguiente para agregar información a una lista de requisitos de recursos:
Cree una configuración lógica vacía.
Para cada configuración lógica que especifique el controlador, el controlador debe llamar a WdfIoResourceListCreate para crear una configuración lógica vacía.
Agregue descriptores de recursos a la configuración lógica.
Para agregar descriptores de recursos a una configuración lógica, el controlador debe hacer lo siguiente para cada tipo de recurso de hardware que requiera el dispositivo:
- Rellene una estructura de IO_RESOURCE_DESCRIPTOR asignada por el controlador, que especifica un intervalo de valores válidos para un recurso determinado.
- Llame a WdfIoResourceListAppendDescriptor o WdfIoResourceListInsertDescriptor para agregar el contenido de la estructura IO_RESOURCE_DESCRIPTOR a una configuración lógica.
Si un dispositivo usa más de una instancia de un tipo de recurso, todos los controladores de la pila que acceden al recurso deben tener en cuenta el orden en que se agregan los recursos. Por ejemplo, si un dispositivo requiere dos intervalos de direcciones de puerto de E/S, todos los controladores que acceden a los descriptores de recursos deben tener en cuenta el orden en que se agregan los dos intervalos a la configuración lógica.
Agregue la configuración lógica a la lista de requisitos de recursos.
Para agregar una configuración lógica a la lista de requisitos de recursos del dispositivo, el controlador llama a WdfIoResourceRequirementsListAppendIoResList o WdfIoResourceRequirementsListInsertIoResList.
Al asignar recursos a un dispositivo, el administrador de PnP intenta coincidir con los requisitos de la primera configuración lógica de la lista. Si los recursos necesarios para esa configuración no están disponibles, el administrador de PnP coincide con la siguiente configuración de la lista para la que están disponibles los recursos.
Si el controlador admite un dispositivo que no es PnP, el controlador normalmente también debe llamar a WdfIoResourceResourceRequirementsListSetSlotNumber y WdfIoResourceRequirementsListSetInterfaceType.
Una vez que se devuelve la función de devolución de llamada EvtDeviceResourceResourceRequirementsQuery del controlador, el marco pasa la lista de requisitos de recursos al administrador de PnP.