Compartilhar via


Testes de retorno de chamada do Registro

Esse teste automatizado exercita casos de teste básicos para um driver de filtro do Registro.

Detalhes do teste

   
Especificações
  • Filter.Driver.FileSystem.MiniFilter
  • Filter.Driver.FileSystem.RegistryAndProcess
  • Filter.Driver.AntiVirus.RegistryAndProcess
  • Filter.Driver.AntiVirus.MiniFilter
Plataformas
  • Windows 10, edições de cliente (x86)
  • Windows 10, edições de cliente (x64)
  • Windows Server 2016 (x64)
Versões com suporte
  • Windows 10
  • Windows 10, versão 1511
  • Windows 10, versão 1607
  • Windows 10, versão 1703
  • Windows 10, versão 1709
  • Windows 10, versão 1803
  • Windows 10, versão 1809
  • Windows 10, versão 1903
  • Próxima atualização para Windows 10
Tempo de execução esperado (em minutos) 30
Categoria Desenvolvimento
Tempo limite (em minutos) 1800
Requer reinicialização false
Requer configuração especial false
Tipo automático

 

Documentação adicional

Os testes nessa área de recurso podem ter documentação adicional, incluindo pré-requisitos, configuração e informações de solução de problemas, que podem ser encontradas nos tópicos a seguir:

Executando o teste

Antes de executar o teste, conclua a configuração de teste conforme descrito nos requisitos de teste: Pré-requisitos de teste do sistema de arquivos.

Solucionando problemas

Para solução de problemas genéricos de falhas de teste do HLK, consulte Solução de problemas de falhas de teste do Windows HLK.

Para obter informações de solução de problemas, consulte Solução de problemas de teste do sistema de arquivos.

Todos os casos de teste retornam Pass ou Fail. Para examinar os detalhes do teste, examine o log de teste do Windows Hardware Lab Kit (Windows HLK) Studio. Para falhas de teste, pesquise o termo "+sev" no log.

Mais informações

Esse teste inclui os seguintes casos de teste:

  • Conflito de altitude

  • Bloco CreateKey

  • CreateKey Bypass

  • Acesso de substituição de CreateKey negado

  • Bloco de substituição CreateKey

  • SetKeySecurity Bypass

  • Bypass CreateKey transacionado

  • Bypass CreateKey transacionado (sem confirmação)

  • Cancelar o registro da corrida de fechamento

  • Salvar Restauração Substituir

Para executar manualmente cada caso de teste, use os procedimentos a seguir.

Para executar manualmente o caso de teste conflito de altitude

  1. Registre um retorno de chamada na altitude 1000.

  2. Registre outro retorno de chamada na mesma altitude e verifique se ele falha.

  3. CreateKey o teste do Monitor.

  4. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000. Defina todos os três retornos de chamada para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  5. Crie uma chave e verifique se ela foi bem-sucedida.

  6. Cancele o registro dos retornos de chamada.

  7. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste CreateKey Block

  1. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000.

  2. Defina os retornos de chamada 1000 e 3000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  3. Defina o retorno de chamada 2000 para o modo "bloquear". Isso significa que o retorno de chamada retornará um erro status.

  4. Crie uma chave e verifique se ela falha.

  5. Cancele o registro dos retornos de chamada.

  6. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste CreateKey Bypass

  1. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000.

  2. Defina os retornos de chamada 1000 e 3000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  3. Defina o retorno de chamada 2000 para o modo "bypass". Isso significa que o retorno de chamada retornará um STATUS_CALLBACK_BYPASS e executará a operação em nome do registro.

  4. Crie uma chave e verifique se ela foi bem-sucedida.

  5. Cancele o registro dos retornos de chamada.

  6. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste CreateKey Override Access Denied

  1. Crie uma chave K1 e defina sua DACL (lista de controle de acesso discricionário) para conceder acesso somente leitura.

  2. Crie uma chave em K1. Isso deve falhar devido à DACL somente leitura.

  3. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000. STATUS_CALLBACK_BYPASS.

  4. Defina os retornos de chamada 1000 e 3000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  5. Defina o retorno de chamada 2000 para o modo "bypass de acesso negado". Isso significa que o retorno de chamada executará a operação do modo de usuário, não será bloqueado pela DACL somente leitura e retornará.

  6. Crie uma chave em K1 e verifique se ela foi bem-sucedida.

  7. Cancele o registro dos retornos de chamada.

  8. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste CreateKey Override Block

  1. Registre quatro dos mesmos retornos de chamada em altitudes 1000, 2000, 3000 e 4000.

  2. Defina os retornos de chamada 1000 e 4000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  3. Defina o retorno de chamada 2000 para o modo "bloquear". Isso significa que o retorno de chamada retornará STATUS_UNSUCCESSFUL.

  4. Defina o retorno de chamada 3000 para o modo "substituir falha". Isso significa que, se o retorno de chamada identificar STATUS_UNSUCCESSFUL no retorno de chamada pós-operação, ele ainda executará a operação e retornará o êxito.

  5. Crie uma chave e verifique se ela é bem-sucedida.

  6. Cancele o registro dos retornos de chamada.

  7. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste SetKeySecurity Bypass

  1. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000.

  2. Defina os retornos de chamada 1000 e 3000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  3. Defina o retorno de chamada 2000 para o modo "bypass". Isso significa que o retorno de chamada retornará STATUS_CALLBACK_BYPASS e executará a operação em nome do registro.

  4. Chame RegSetKeySecurity para definir o descritor de segurança de uma chave e verifique se ela foi bem-sucedida.

  5. Cancele o registro dos retornos de chamada.

  6. Verifique se cada retorno de chamada foi invocado adequadamente com base em sua altitude.

Para executar manualmente o caso de teste Transacted CreateKey Bypass

  1. Crie uma transação T1.

  2. Crie uma chave no contexto da transação T1.

  3. Verifique se a chave foi bem-sucedida e exclua-a.

  4. Registre três dos mesmos retornos de chamada em altitudes 1000, 2000 e 3000.

  5. Defina os retornos de chamada 1000 e 3000 para o modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  6. Defina o retorno de chamada 2000 para o modo "bypass". Isso significa que o retorno de chamada retornará STATUS_CALLBACK_BYPASS e executará a operação em nome do registro.

  7. Crie uma chave no contexto da transação T1 e verifique se ela é bem-sucedida.

  8. Confirme a transação.

  9. Cancele o registro dos retornos de chamada.

Para executar manualmente o caso de teste Transacted CreateKey Bypass (Sem Confirmação)

  • Conclua as mesmas etapas que no caso de teste Transacted CreateKey Bypass, mas não confirme a transação no final.

Para executar manualmente o caso de teste Cancelar registro de corrida de fechamento

  1. Inicie um thread que abra uma chave de teste e feche o identificador em um loop.

  2. No thread original, registre e cancele o registro de um retorno de chamada 100 vezes.

  3. Sinalize o outro thread para sair.

Para executar manualmente o caso de teste Salvar Restauração Substituir

  1. Crie uma chave no hive de software.

  2. Registre um retorno de chamada na altitude 1000 e defina-o como modo "monitor". Isso significa que o retorno de chamada não fará nada além de retornar STATUS_SUCCESS.

  3. Chame RegSaveKey na chave criada e verifique se ela foi bem-sucedida.

  4. Chame RegRestoreKey na chave criada usando o arquivo hive que RegSaveKey criou e verifique se ele foi bem-sucedido.

  5. Faça uma cópia do arquivo hive.

  6. Carregue o arquivo hive original em HKEY_LOCAL_MACHINE e verifique se ele foi bem-sucedido.

  7. Chame RegReplaceKey usando a cópia do arquivo hive. Isso deve falhar com uma violação de compartilhamento, mas ainda disparará os retornos de chamada para essa operação.

  8. Cancele o registro do retorno de chamada e verifique se ele foi invocado adequadamente.

Sintaxe de comando

Opção de comando Descrição

RegCbTestctrl.exe -regr

Executa o teste.

Observação

   Para obter ajuda de linha de comando para esse binário de teste, digite /h.

 

Lista de arquivos

Arquivo Location

RegCbTestCtrl.exe

[WTT\TestBinRoot]\NTTEST\BASETEST\kernel\cm

RegCbTest.sys

[WTT\TestBinRoot]\NTTEST\BASETEST\kernel\cm

Ntlog.dll

 

Parâmetros

Nome do parâmetro Descrição do parâmetro
LLU_LclAdminUser LLU para Executar
LLU_NetAccessOnly LLU para cópia