Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para manipular entradas de registro, os drivers podem chamar as rotinas RtlXxxRegistryXxx , que fornecem uma interface mais simples do que as rotinas ZwXxxKey . Ao fazê-lo, o condutor não é obrigado a abrir e fechar manípulos; em vez disso, o driver refere-se às chaves pelo nome.
Você passa os parâmetros RelativeTo e Path para cada rotina RtlXxxRegistryXxx. Se RelativeTo é RTL_REGISTRY_ABSOLUTE, Path especifica o caminho completo da chave, começando pela raiz \Registry. Se RelativeTo é RTL_REGISTRY_HANDLE, Path é na verdade um handle aberto. Valores adicionais RTL_REGISTRY_XXX para RelativeTo especificam os caminhos de raízes comuns para a chave; nesses casos, Path especifica o caminho relativo a essa raiz. Por exemplo, RTL_REGISTRY_USER requer que Path seja relativo às configurações do Registro do usuário atual. (Esse valor é equivalente a especificar HKEY_CURRENT_USER em um aplicativo de modo de usuário.) Para obter uma descrição de todos os valores RTL_REGISTRY_XXX , consulte RtlCheckRegistryKey.
A tabela a seguir lista as operações que os drivers podem executar chamando as rotinas RtlXxxRegistryXxx.
| Funcionamento | RtlXxxRegistoXxx rotina a invocar |
|---|---|
Criar uma chave do Registro |
|
Verificar se existe uma chave de registo |
|
Examinar um ou mais valores de chave do Registro |
|
Escrever um valor de chave de registo |
|
Excluir um valor de chave do Registro |
O exemplo de código a seguir ilustra como definir ValueName para \Registry\Machine\System\KeyName para um valor ULONG de 0xFF. Compare este exemplo com o correspondente na seção Rotinas de objeto de chave do Registro .
NTSTATUS status;
ULONG data = 0xFF;
status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
(PWCSTR)L"\\Registry\\Machine\\System\\KeyName",
(PWCSTR)L"ValueName",
REG_DWORD,
&data,
sizeof(ULONG));
Embora você escreva menos linhas de código ao usar as rotinas RtlXxxRegistryXxx em vez das rotinas ZwXxxKey , as últimas são necessárias para executar determinadas operações. Por exemplo, não existe nenhuma rotina RtlXxxRegistryXxx que corresponda a ZwEnumerateKey.
Se você executar várias operações na mesma chave, as rotinas de chave ZwXxx serão mais eficientes — você poderá usar o mesmo identificador aberto para cada operação. Em contraste, as rotinas RtlXxxRegistryXxx abrem e fecham um novo handle para cada operação.