Compartilhar via


Função WdfRegistryQueryMemory (wdfregistry.h)

[Aplica-se a KMDF e UMDF]

O método WdfRegistryQueryMemory recupera os dados atribuídos atualmente a um valor de registro especificado, armazena os dados em um buffer alocado por estrutura e cria um objeto de memória de estrutura para representar o buffer.

Sintaxe

NTSTATUS WdfRegistryQueryMemory(
  [in]            WDFKEY                 Key,
  [in]            PCUNICODE_STRING       ValueName,
  [in]            POOL_TYPE              PoolType,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [out]           WDFMEMORY              *Memory,
  [out, optional] PULONG                 ValueType
);

Parâmetros

[in] Key

Um identificador para um objeto de chave do Registro que representa uma chave do Registro aberta.

[in] ValueName

Um ponteiro para uma estrutura UNICODE_STRING que contém um nome de valor.

[in] PoolType

Um valor do tipo POOL_TYPE que especifica o tipo de memória a ser alocado para o buffer de dados.

[in, optional] MemoryAttributes

Um ponteiro para uma estrutura WDF_OBJECT_ATTRIBUTES que contém atributos de objeto para o novo objeto de memória. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.

[out] Memory

Um ponteiro para um local que recebe um identificador para o novo objeto de memória.

[out, optional] ValueType

Um ponteiro para um local que recebe o tipo de dados. Para obter uma lista de valores de tipo de dados, consulte o membro Tipo de KEY_VALUE_BASIC_INFORMATION. Esse ponteiro é opcional e pode ser NULL.

Retornar valor

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

Código de retorno Descrição
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory não foi chamado em IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_INSUFFICIENT_RESOURCES
Não foi possível alocar um objeto de memória.
STATUS_ACCESS_DENIED
O driver não abriu a chave do Registro com acesso KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS.
STATUS_OBJECT_NAME_NOT_FOUND
O valor do Registro não estava disponível.
STATUS_RESOURCE_DATA_NOT_FOUND
O valor do Registro existe sob a chave especificada, mas está vazio.
 

Para obter uma lista de outros valores retornados que o método WdfRegistryQueryMemory pode retornar, consulte Erros de criação de objeto da estrutura.

Esse método também pode retornar outros valores NTSTATUS.

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

Comentários

Quando um driver chama WdfRegistryQueryMemory, a estrutura aloca um buffer grande o suficiente para manter os dados do valor do Registro especificado. Depois que WdfRegistryQueryMemory retornar, o driver poderá chamar WdfMemoryGetBuffer para obter um ponteiro para o buffer e o tamanho do buffer.

Para obter mais informações sobre objetos de chave do Registro, consulte Usando o Registro em drivers de Framework-Based.

Exemplos

O exemplo de código a seguir recupera os dados atribuídos ao valor MyValueName e, em seguida, obtém o endereço e o tamanho dos dados.

WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");

status = WdfRegistryQueryMemory(
                                Key,
                                &valueName1,
                                PagedPool,
                                NULL,
                                &memory,
                                &type
                                );
pBuf = (PUCHAR)WdfMemoryGetBuffer(
                                   memory,
                                   &size
                                   );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfregistry.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue