Condividi tramite


Funzione WdfCmResourceListRemoveByDescriptor (wdfresource.h)

[Si applica solo a KMDF]

Il metodo WdfCmResourceListRemoveByDescriptor rimuove un descrittore di risorse specificato da un elenco di risorse specificato.

Sintassi

void WdfCmResourceListRemoveByDescriptor(
  [in] WDFCMRESLIST                    List,
  [in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
);

Parametri

[in] List

Handle per un oggetto elenco risorse framework che rappresenta un elenco di risorse hardware per un dispositivo.

[in] Descriptor

Puntatore a una struttura CM_PARTIAL_RESOURCE_DESCRIPTOR che descrive una risorsa hardware.

Valore restituito

nessuno

Osservazioni

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Il metodo WdfCmResourceListRemoveByDescriptor rimuove il descrittore di risorse corrispondente al parametro Descriptor . Per trovare una corrispondenza, il metodo confronta il descrittore di risorse specificato con i descrittori di risorse nella configurazione logica, byte per byte.

Quando WdfCmResourceListRemoveByDescriptor rimuove il descrittore di risorse con il valore di indice n, il valore di indice del descrittore di risorsa successivo cambia da n+1 a n.

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

Esempio

L'esempio di codice seguente cerca i descrittori delle risorse delle porte negli elenchi di risorse di un dispositivo. Per ogni risorsa porta trovata dall'esempio, verifica se l'indirizzo della porta è compreso in un determinato intervallo. Se l'indirizzo della porta non rientra nell'intervallo, l'esempio rimuove il descrittore dagli elenchi di risorse non elaborati e tradotti.

NTSTATUS
MyEvtDeviceRemoveAddedResources(
    WDFDEVICE Device,
    WDFCMRESLIST ResourcesRaw,
    WDFCMRESLIST ResourcesTranslated
    )
{    
    ULONG i, count;

    pDevExt = DeviceGetExtension(Device);
    count = WdfCmResourceListGetCount(ResourcesRaw);

    for (i = 0; i < count; i++) {
        PCM_PARTIAL_RESOURCE_DESCRIPTOR descriptor;

        descriptor = WdfCmResourceListGetDescriptor(
                                                    ResourcesRaw,
                                                    i
                                                    );

        if (descriptor->Type != CmResourceTypePort) {
            continue;
        }

        if (descriptor->u.Port.Start.QuadPart < pDevExt->Ranges[0].MinAddress ||
             descriptor->u.Port.Start.QuadPart > pDevExt->Ranges[0].MaxAddress)
        {
            WdfCmResourceListRemoveByDescriptor(
                                                ResourcesRaw,
                                                descriptor
                                                );

            // The descriptor may not be the same in the raw and translated resource lists, so use an index for the second removal

            WdfCmResourceListRemove(
                                                ResourcesTranslated,
                                                i
                                                );
            break;
        }
    }
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfresource.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

CM_PARTIAL_RESOURCE_DESCRIPTOR

WdfCmResourceListRemove