Condividi tramite


Funzione WdfIoResourceRequirementsListRemoveByIoResList (wdfresource.h)

[Si applica solo a KMDF]

Il metodo WdfIoResourceRequirementsListRemoveByIoResList rimuove una configurazione logica da un elenco dei requisiti delle risorse.

Sintassi

void WdfIoResourceRequirementsListRemoveByIoResList(
  [in] WDFIORESREQLIST RequirementsList,
  [in] WDFIORESLIST    IoResList
);

Parametri

[in] RequirementsList

Handle per un oggetto resource-requirements-list framework che rappresenta l'elenco dei requisiti delle risorse di un dispositivo.

[in] IoResList

Handle a un oggetto resource-range-list framework che rappresenta la configurazione logica da rimuovere dall'elenco dei requisiti delle risorse specificato da RequirementsList .

Valore restituito

nessuno

Osservazioni

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Il metodo WdfIoResourceRequirementsListRemoveByIoResList rimuove la configurazione logica associata all'handle specificato dal parametro IoResList .

Quando WdfIoResourceRequirementsListRemoveByIoResList rimuove la configurazione logica con il valore di indice n, il valore di indice della configurazione logica successiva cambia da n+1 a n.

Per altre informazioni sugli elenchi dei requisiti delle risorse, vedere Risorse hardware per i driver di Framework-Based.

Esempio

Nell'esempio di codice seguente vengono eseguite ricerche nelle configurazioni logiche nell'elenco dei requisiti delle risorse di un dispositivo per trovare una configurazione contenente un indirizzo di porta specifico. Se l'esempio trova tale configurazione, rimuove la configurazione.

NTSTATUS
Example_EvtDeviceFilterRemoveResourceRequirements(
    IN WDFDEVICE Device,
    IN WDFIORESREQLIST RequirementsList
    )
{
    ULONG i, j, reqCount, resCount;
    BOOLEAN descriptorFound = FALSE;

    //
    // Obtain the number of logical configurations.
    //
    reqCount = WdfIoResourceRequirementsListGetCount(RequirementsList);

    //
    // Search each logical configuration.
    //
    for (i = 0; i < reqCount; i++) {
        WDFIORESLIST reslist;

        if (descriptorFound) {
            break;
        }
        reslist = WdfIoResourceRequirementsListGetIoResList(RequirementsList, i);

        //
        // Get the number of resource descriptors that
        // are in this logical configuration.
        //
        resCount = WdfIoResourceListGetCount(reslist);

        for (j = 0; j < resCount; j++) {
            PIO_RESOURCE_DESCRIPTOR descriptor;

            //
            // Get the next resource descriptor.
            //
            descriptor = WdfIoResourceListGetDescriptor(
                                 reslist,
                                 j
                                 );

            //
            // Stop if this descriptor is the port descriptor
            // that we're looking for.
            //
            if (descriptor->Type == CmResourceTypePort) {
                if ((descriptor->u.Port.MinimumAddress) == PORT_RANGE_A) {
                    WdfIoResourceRequirementsListRemoveByIoResList(
                                 RequirementsList,
                                 reslist
                                 );
                    descriptorFound = TRUE;
                    break;
            }
        }
    }
...
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfresource.h (includere Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListGetCount

WdfIoResourceListGetDescriptor

WdfIoResourceRequirementsListGetCount

WdfIoResourceRequirementsListGetIoResList

WdfIoResourceRequirementsListRemove