Funzione WdfCmResourceListRemoveByDescriptor (wdfresource.h)
[Si applica solo a KMDF]
Il metodo WdfCmResourceListRemoveByDescriptor rimuove un descrittore di risorsa 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 di 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 WdfCmResourceListRemoveByDescript or rimuove il descrittore di risorse corrispondente al parametro descrittore di. 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 risorsa 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 driver Framework-Based.
Esempi
L'esempio di codice seguente cerca i descrittori delle risorse delle porte negli elenchi di risorse di un dispositivo. Per ogni risorsa porta trovata nell'esempio, verifica se l'indirizzo della porta è compreso in un determinato intervallo. Se l'indirizzo della porta non è compreso 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;
}
}
}
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 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) |