Partilhar via


Rotinas de Biblioteca do Registo Run-Time

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

RtlCreateRegistryKey

Verificar se existe uma chave de registo

RtlCheckRegistryKey

Examinar um ou mais valores de chave do Registro

RtlQueryRegistryValues

Escrever um valor de chave de registo

RtlWriteRegistryValue

Excluir um valor de chave do Registro

RtlDeleteRegistryValue

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.