Função WdfRegistryQueryUnicodeString (wdfregistry.h)

[Aplica-se a KMDF e UMDF]

O método WdfRegistryQueryUnicodeString recupera os dados de cadeia de caracteres atualmente atribuídos a um valor de cadeia de caracteres do Registro especificado e copia a cadeia de caracteres para uma estrutura de UNICODE_STRING especificada.

Sintaxe

NTSTATUS WdfRegistryQueryUnicodeString(
  [in]            WDFKEY           Key,
  [in]            PCUNICODE_STRING ValueName,
  [out, optional] PUSHORT          ValueByteLength,
  [in, out]       PUNICODE_STRING  Value
);

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 para o valor do Registro.

[out, optional] ValueByteLength

Um ponteiro para um local que recebe o número de bytes contidos na cadeia de caracteres Unicode para a qual Value aponta, incluindo o byte NULL de terminação. Esse ponteiro é opcional e pode ser NULL

[in, out] Value

Um ponteiro para uma estrutura UNICODE_STRING que recebe a cadeia de caracteres de dados para a chave especificada por Key . Se esse parâmetro for NULL e ValueByteLength não for NULL, WdfRegistryQueryUnicodeString retornará apenas o tamanho da cadeia de caracteres.

Retornar valor

WdfRegistryQueryUnicodeString 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

WdfRegistryQueryUnicodeString não foi chamado em IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_INSUFFICIENT_RESOURCES
Não havia memória suficiente para concluir a operação.
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_TYPE_MISMATCH
O tipo de dados do valor do Registro especificado pelo parâmetro ValueName não foi REG_SZ.
STATUS_BUFFER_OVERFLOW
O buffer para o qual o parâmetro Value aponta era muito pequeno e apenas os dados parciais foram gravados no buffer.
STATUS_BUFFER_OVERFLOW
O buffer para o qual o parâmetro Value aponta era 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, que é do driver de exemplo Serial , recupera a cadeia de caracteres Unicode que representa os dados de cadeia de caracteres atribuídos ao valor PortName sob a chave de hardware de um dispositivo.

NTSTATUS
SerialReadSymName(
    IN WDFDEVICE Device,
    __out PWCHAR RegName,
    IN OUT PUSHORT LengthOfRegName // In characters
    )
{
    NTSTATUS status;
    WDFKEY hKey;
    UNICODE_STRING value;
    UNICODE_STRING valueName;
    USHORT requiredLength;

    value.Buffer = RegName;
    value.MaximumLength = *LengthOfRegName;
    value.Length = 0;

    status = WdfDeviceOpenRegistryKey(
                                      Device,
                                      PLUGPLAY_REGKEY_DEVICE,
                                      STANDARD_RIGHTS_ALL,
                                      WDF_NO_OBJECT_ATTRIBUTES,
                                      &hKey
                                      );

    if (NT_SUCCESS (status)) {
        RtlInitUnicodeString(
                             &valueName,
                             L"PortName"
                             );
        status = WdfRegistryQueryUnicodeString (
                                      hKey,
                                      &valueName,
                                      &requiredLength,
                                      &value
                                      );
        WdfRegistryClose(hKey);
    }
    return status;
}

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 (include Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

RtlInitUnicodeString

UNICODE_STRING

WdfRegistryClose

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryValue