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 |
---|---|
|
WdfRegistryQueryUnicodeString não foi chamado em IRQL = PASSIVE_LEVEL. |
|
Um parâmetro inválido foi especificado. |
|
Não havia memória suficiente para concluir a operação. |
|
O driver não abriu a chave do Registro com acesso KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS. |
|
O tipo de dados do valor do Registro especificado pelo parâmetro ValueName não foi REG_SZ. |
|
O buffer para o qual o parâmetro Value aponta era muito pequeno e apenas os dados parciais foram gravados no buffer. |
|
O buffer para o qual o parâmetro Value aponta era muito pequeno e nenhum dado foi gravado no buffer. |
|
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) |