Función WdfCmResourceListRemoveByDescriptor (wdfresource.h)
[Solo se aplica a KMDF]
El método WdfCmResourceListRemoveByDescriptor quita un descriptor de recursos especificado de una lista de recursos especificada.
Sintaxis
void WdfCmResourceListRemoveByDescriptor(
[in] WDFCMRESLIST List,
[in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
);
Parámetros
[in] List
Identificador de un objeto de lista de recursos de marco que representa una lista de recursos de hardware para un dispositivo.
[in] Descriptor
Puntero a una estructura de CM_PARTIAL_RESOURCE_DESCRIPTOR que describe un recurso de hardware.
Valor devuelto
None
Observaciones
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
El método WdfCmResourceListRemoveByDescriptor quita el descriptor de recursos que coincide con el parámetro Descriptor . Para buscar una coincidencia, el método compara el descriptor de recursos especificado con los descriptores de recursos de la configuración lógica, byte para byte.
Cuando WdfCmResourceListRemoveByDescriptor quita el descriptor de recursos que tiene el valor de índice n, el valor de índice del descriptor de recursos siguiente cambia de n+1 a n.
Para obtener más información sobre las listas de recursos, consulte Recursos de hardware para controladores de Framework-Based.
Ejemplos
En el ejemplo de código siguiente se buscan descriptores de recursos de puerto en las listas de recursos de un dispositivo. Para cada recurso de puerto que encuentra el ejemplo, comprueba si la dirección del puerto está dentro de un intervalo determinado. Si la dirección del puerto está fuera del intervalo, en el ejemplo se quita el descriptor de las listas de recursos sin procesar y traducidas.
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;
}
}
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | wdfresource.h (incluya Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |