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 |
---|---|
|
WdfRegistryQueryMemory não foi chamado em IRQL = PASSIVE_LEVEL. |
|
Um parâmetro inválido foi especificado. |
|
Não foi possível alocar um objeto de memória. |
|
O driver não abriu a chave do Registro com acesso KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS. |
|
O valor do Registro não estava disponível. |
|
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) |