Função WdfRegistryQueryValue (wdfregistry.h)

[Aplica-se a KMDF e UMDF]

O método WdfRegistryQueryValue recupera os dados atribuídos atualmente a um valor de registro especificado.

Sintaxe

NTSTATUS WdfRegistryQueryValue(
  [in]            WDFKEY           Key,
  [in]            PCUNICODE_STRING ValueName,
  [in]            ULONG            ValueLength,
  [out, optional] PVOID            Value,
  [out, optional] PULONG           ValueLengthQueried,
  [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] ValueLength

O comprimento, em bytes, do buffer para o qual Value aponta.

[out, optional] Value

Um ponteiro para um buffer alocado pelo driver que recebe os dados do valor do Registro. Se esse ponteiro for NULL, WdfRegistryQueryValue recuperará o comprimento dos dados, mas não os dados.

[out, optional] ValueLengthQueried

Um ponteiro para um local que recebe o tamanho dos dados do valor do Registro. Esse ponteiro é opcional e pode ser NULL.

[out, optional] ValueType

Um ponteiro para um local que recebe o tipo de dados do valor do Registro. 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

WdfRegistryQueryValue 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

WdfRegistryQueryValue não foi chamado em IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_ACCESS_DENIED
O driver não abriu a chave do Registro com acesso KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS.
STATUS_BUFFER_OVERFLOW
O buffer para o qual o parâmetro Value aponta é muito pequeno e apenas os dados parciais foram gravados no buffer.
STATUS_BUFFER_OVERFLOW
O buffer Valor é muito pequeno e nenhum dado foi gravado no buffer.
STATUS_OBJECT_NAME_NOT_FOUND
O valor do Registro não estava disponível.
 

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

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 abre a chave de hardware de um dispositivo e recupera os dados atribuídos ao valor NumberOfToasters , que é armazenado sob a chave de hardware do dispositivo.

WCHAR  comPort[FM_COM_PORT_STRING_LENGTH];
ULONG  length;
NTSTATUS  status;
ULONG  length, valueType, value;
DECLARE_CONST_UNICODE_STRING(valueName, L"NumberOfToasters");
WDFKEY  hKey;

status = WdfDeviceOpenRegistryKey(
                                  Device,
                                  PLUGPLAY_REGKEY_DEVICE,
                                  KEY_QUERY_VALUE,
                                  NULL, 
                                  &hKey
                                  );
if (!NT_SUCCESS (status)) {
    goto Error;
}
status = WdfRegistryQueryValue(
                               hKey,
                               &valueName,
                               sizeof(ULONG),
                               &value,
                               &length,
                               &valueType
                               );

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

UNICODE_STRING

WdfDeviceOpenRegistryKey

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString