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) |