Função WdfCmResourceListRemoveByDescriptor (wdfresource.h)
[Aplica-se somente ao KMDF]
O método WdfCmResourceListRemoveByDescriptor remove um descritor de recursos especificado de uma lista de recursos especificada.
Sintaxe
void WdfCmResourceListRemoveByDescriptor(
[in] WDFCMRESLIST List,
[in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
);
Parâmetros
[in] List
Um identificador para um objeto de lista de recursos da estrutura que representa uma lista de recursos de hardware para um dispositivo.
[in] Descriptor
Um ponteiro para uma estrutura CM_PARTIAL_RESOURCE_DESCRIPTOR que descreve um recurso de hardware.
Retornar valor
Nenhum
Comentários
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
O método WdfCmResourceListRemoveByDescriptor remove o descritor de recurso que corresponde ao parâmetro Descriptor . Para localizar uma correspondência, o método compara o descritor de recursos especificado com os descritores de recurso na configuração lógica, byte para byte.
Quando WdfCmResourceListRemoveByDescriptor remove o descritor de recurso que tem o valor de índice n, o valor de índice do próximo descritor de recursos muda de n+1 para n.
Para obter mais informações sobre listas de recursos, consulte Recursos de hardware para drivers de Framework-Based.
Exemplos
O exemplo de código a seguir procura descritores de recursos de porta nas listas de recursos de um dispositivo. Para cada recurso de porta que o exemplo encontra, ele verifica se o endereço da porta está dentro de um determinado intervalo. Se o endereço da porta estiver fora do intervalo, o exemplo removerá o descritor das listas de recursos brutos e traduzidos.
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 | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfresource.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.) |
IRQL | <=DISPATCH_LEVEL |
Regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |