Condividi tramite


Creazione di un elenco dei requisiti delle risorse

Quando un driver del bus rileva un dispositivo figlio, il driver è responsabile della creazione di un elenco di requisiti di risorse per il dispositivo. Ogni elemento nell'elenco è una configurazione logica per il dispositivo.

Dopo che il driver segnala il dispositivo durante l'enumerazione del bus, il framework chiama la funzione di callback EvtDeviceResourceResourceRequirementsQuery . Questa funzione di callback riceve un handle per un oggetto resource-requirements-list che rappresenta un elenco di requisiti di risorse vuoto.

Il driver deve quindi eseguire le operazioni seguenti per aggiungere informazioni a un elenco dei requisiti delle risorse:

  • Creare una configurazione logica vuota.

    Per ogni configurazione logica specificata dal driver, il driver deve chiamare WdfIoResourceListCreate per creare una configurazione logica vuota.

  • Aggiungere descrittori di risorse alla configurazione logica.

    Per aggiungere descrittori di risorse a una configurazione logica, il driver deve eseguire le operazioni seguenti per ogni tipo di risorsa hardware richiesta dal dispositivo:

    1. Compilare una struttura di IO_RESOURCE_DESCRIPTOR allocata dal driver, che specifica un intervallo di valori validi per una determinata risorsa.
    2. Chiamare WdfIoResourceListAppendDescriptor o WdfIoResourceListInsertDescriptor per aggiungere il contenuto della struttura IO_RESOURCE_DESCRIPTOR a una configurazione logica.

    Se un dispositivo usa più istanze di un tipo di risorsa, tutti i driver nello stack che accedono alla risorsa devono essere consapevoli dell'ordine in cui vengono aggiunte le risorse. Ad esempio, se un dispositivo richiede due intervalli di indirizzi di porta di I/O, tutti i driver che accedono ai descrittori delle risorse devono essere consapevoli dell'ordine in cui i due intervalli vengono aggiunti alla configurazione logica.

  • Aggiungere la configurazione logica all'elenco dei requisiti delle risorse.

    Per aggiungere una configurazione logica all'elenco dei requisiti delle risorse del dispositivo, il driver chiama WdfIoResourceRequirementsListAppendIoResList o WdfIoResourceRequirementsListInsertIoResList.

    Quando si assegnano risorse a un dispositivo, il gestore PnP tenta di soddisfare i requisiti della prima configurazione logica nell'elenco. Se le risorse necessarie per tale configurazione non sono disponibili, gestione PnP corrisponde alla configurazione successiva nell'elenco per cui sono disponibili le risorse.

    Se il driver supporta un dispositivo non PnP, il driver deve in genere chiamare anche WdfIoResourceRequirementsListSetSlotNumber e WdfIoResourceRequirementsListSetInterfaceType.

Al termine della funzione di callback EvtDeviceResourceRequirementsQuery del driver, il framework passa l'elenco dei requisiti delle risorse al gestore PnP.