Função WdfIoResourceListInsertDescriptor (wdfresource.h)

[Aplica-se somente ao KMDF]

O método WdfIoResourceListInsertDescriptor insere um descritor de recursos na configuração lógica de uma lista de requisitos de recursos.

Sintaxe

NTSTATUS WdfIoResourceListInsertDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor,
  [in] ULONG                   Index
);

Parâmetros

[in] ResourceList

Um identificador para um objeto de lista de intervalo de recursos de estrutura que representa uma configuração lógica de recursos de hardware para um dispositivo.

[in] Descriptor

Um ponteiro para uma estrutura IO_RESOURCE_DESCRIPTOR que descreve um recurso de hardware.

[in] Index

Um valor baseado em zero que é usado como um índice no conjunto de descritores de recursos que já estão na configuração lógica especificada pelo ResourceList . Para adicionar um descritor de recursos ao final da configuração lógica, especifique WDF_INSERT_AT_END ou o valor retornado de WdfIoResourceListGetCount.

Retornar valor

WdfIoResourceListInsertDescriptor retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_ACCESS_DENIED
O driver não tinha permissão para adicionar descritores à configuração lógica.
STATUS_INSUFFICIENT_RESOURCES
A estrutura não pôde alocar espaço para armazenar o descritor.
STATUS_ARRAY_BOUNDS_EXCEEDED
O valor especificado pelo parâmetro Index era muito grande.
 

Um bug do sistema marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

O método WdfIoResourceListInsertDescriptor insere o descritor de recurso para o qual o parâmetro Descriptor aponta para a configuração lógica especificada pelo parâmetro ResourceList , na frente do descritor de recurso que o valor index identifica.

Para adicionar um descritor de recurso ao final de uma configuração lógica, especifique WDF_INSERT_AT_END ou o valor retornado de WdfIoResourceListGetCount para o valor index . Como alternativa, use o método WdfIoResourceListAppendDescriptor .

A estrutura copia o conteúdo da estrutura IO_RESOURCE_DESCRIPTOR no armazenamento interno, de modo que a rotina do driver que chama WdfIoResourceListInsertDescriptor pode alocar a estrutura localmente. Depois que o driver chamar WdfIoResourceListInsertDescriptor, o driver poderá reutilizar a estrutura IO_RESOURCE_DESCRIPTOR .

Para obter mais informações sobre listas de requisitos de recursos e configurações lógicas, consulte Recursos de hardware para drivers de Framework-Based.

Exemplos

O exemplo de código a seguir inicializa um descritor de recursos e adiciona o descritor ao final de uma configuração lógica.

IO_RESOURCE_DESCRIPTOR descriptor;

RtlZeroMemory(&descriptor, sizeof(descriptor));

descriptor.Option = 0;
descriptor.Type = CmResourceTypePort;
descriptor.ShareDisposition = CmResourceShareDeviceExclusive;
descriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
descriptor.u.Port.Length = 1;
descriptor.u.Port.Alignment = 0x01;
descriptor.u.Port.MinimumAddress.QuadPart = 0;
descriptor.u.Port.MaximumAddress.QuadPart = 0xFFFF;

status = WdfIoResourceListInsertDescriptor(
                                           logConfig,
                                           &descriptor,
                                           WDF_INSERT_AT_END
                                           );
if (!NT_SUCCESS(status)) {
    return status;
}

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)

Confira também

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListAppendDescriptor