Поделиться через


Тесты обратного вызова реестра

Этот автоматизированный тест выполняет основные тестовые случаи для драйвера фильтра реестра.

Сведения о тесте

   
Характеристики
  • Filter.Driver.FileSystem.MiniFilter
  • Filter.Driver.FileSystem.RegistryAndProcess
  • Filter.Driver.AntiVirus.RegistryAndProcess
  • Filter.Driver.AntiVirus.MiniFilter
Платформы
  • Windows 10, клиентские выпуски (x86)
  • Windows 10, клиентские выпуски (x64)
  • Windows Server 2016 (x64)
Поддерживаемые выпуски
  • Windows 10
  • Windows 10 версии 1511
  • Windows 10, версия 1607
  • Windows 10 версии 1703
  • Windows 10 версии 1709
  • Windows 10 версии 1803
  • Windows 10, версия 1809
  • Windows 10 версии 1903
  • Следующее обновление до Windows 10
Ожидаемое время выполнения (в минутах) 30
Категория Разработка
Время ожидания (в минутах) 1800
Требуется перезагрузка false
Требуется специальная конфигурация false
Тип automatic

 

Дополнительная документация

Тесты в этой области функций могут содержать дополнительную документацию, включая предварительные требования, сведения о настройке и устранении неполадок, которые можно найти в следующих разделах:

Запуск теста

Перед запуском теста завершите настройку теста, как описано в разделе Предварительные требования к тестированию файловой системы.

Устранение неполадок

Общие сведения об устранении неполадок при тестировании HLK см. в статье Устранение неполадок тестов HLK в Windows.

Сведения об устранении неполадок см. в разделе Устранение неполадок при тестировании файловой системы.

Все тестовые случаи возвращают значение Pass или Fail. Чтобы просмотреть сведения о тесте, просмотрите журнал тестирования из Windows Hardware Lab Kit (Windows HLK) Studio. Если тестовые сбои, выполните поиск термина "+sev" в журнале.

Дополнительные сведения

Этот тест включает следующие тестовые случаи:

  • Конфликт высоты

  • Блок CreateKey

  • Обход CreateKey

  • CreateKey Override Access Denied

  • Блок переопределения CreateKey

  • Обход SetKeySecurity

  • Обход transacted CreateKey

  • Обход transacted CreateKey (без фиксации)

  • Отмена регистрации Закрыть гонку

  • Сохранение замены восстановления

Чтобы выполнить каждый тестовый случай вручную, используйте следующие процедуры.

Выполнение тестового случая "Конфликт высоты" вручную

  1. Зарегистрируйте обратный вызов на высоте 1000.

  2. Зарегистрируйте другой обратный вызов на той же высоте, а затем убедитесь, что он завершается ошибкой.

  3. CreateKey the Monitor test.

  4. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000. Задайте для всех трех обратных вызовов режим "мониторинг". Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.

  5. Создайте ключ, а затем убедитесь, что он выполнен успешно.

  6. Отмена регистрации обратных вызовов.

  7. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая CreateKey Block вручную

  1. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.

  2. Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.

  3. Перенастроите обратный вызов 2000 в режим блокировки. Это означает, что обратный вызов вернет состояние ошибки.

  4. Создайте ключ, а затем убедитесь, что он не удается.

  5. Отмена регистрации обратных вызовов.

  6. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая обхода CreateKey вручную

  1. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.

  2. Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.

  3. Установите обратный вызов 2000 в режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.

  4. Создайте ключ, а затем убедитесь, что он выполнен успешно.

  5. Отмена регистрации обратных вызовов.

  6. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая CreateKey Override Access Denied вручную

  1. Создайте ключ K1, а затем задайте его дискреционный список управления доступом (DACL), чтобы предоставить доступ только для чтения.

  2. Создайте ключ в разделе K1. Это должно завершиться ошибкой из-за daCL, доступного только для чтения.

  3. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000. STATUS_CALLBACK_BYPASS.

  4. Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.

  5. Установите обратный вызов 2000 в режим обхода с запретом доступа. Это означает, что обратный вызов будет выполнять операцию из пользовательского режима, а не блокироваться daCL только для чтения и возвращать.

  6. Создайте ключ в разделе K1 и убедитесь, что он выполнен успешно.

  7. Отмена регистрации обратных вызовов.

  8. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая блокировки переопределения CreateKey вручную

  1. Зарегистрируйте четыре из одинаковых обратных вызовов на высотах 1000, 2000, 3000 и 4000.

  2. Установите обратные вызовы 1000 и 4000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.

  3. Установите для обратного вызова 2000 режим блокировки. Это означает, что обратный вызов вернет STATUS_UNSUCCESSFUL.

  4. Установите для обратного вызова 3000 режим переопределения сбоя. Это означает, что если обратный вызов идентифицирует STATUS_UNSUCCESSFUL в обратном вызове после операции, он по-прежнему будет выполнять операцию и возвращать успешное выполнение.

  5. Создайте ключ и убедитесь, что он выполнен успешно.

  6. Отмените регистрацию обратных вызовов.

  7. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая обхода SetKeySecurity вручную

  1. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.

  2. Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.

  3. Установите для обратного вызова 2000 режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.

  4. Вызовите RegSetKeySecurity , чтобы задать дескриптор безопасности ключа, а затем убедитесь, что он выполнен успешно.

  5. Отмените регистрацию обратных вызовов.

  6. Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.

Выполнение тестового случая обхода Transacted CreateKey вручную

  1. Создайте транзакцию T1.

  2. Создайте ключ в контексте транзакции T1.

  3. Убедитесь, что ключ выполнен успешно, а затем удалите его.

  4. Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.

  5. Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.

  6. Установите для обратного вызова 2000 режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.

  7. Создайте ключ в контексте транзакции T1, а затем убедитесь, что она успешно выполнена.

  8. Зафиксируйте транзакцию.

  9. Отмените регистрацию обратных вызовов.

Выполнение тестового случая обхода Transacted CreateKey (без фиксации) вручную

  • Выполните те же действия, что и в тестовом случае обхода Transacted CreateKey, но не зафиксируйте транзакцию в конце.

Запуск тестового случая отмены регистрации закрытия гонки вручную

  1. Запустите поток, который открывает тестовый ключ, а затем закройте дескриптор в цикле.

  2. В исходном потоке зарегистрируйте и отмените регистрацию обратного вызова 100 раз.

  3. Сообщите другому потоку о выходе.

Выполнение тестового случая сохранения замены восстановления вручную

  1. Создайте ключ в кусте программного обеспечения.

  2. Зарегистрируйте обратный вызов на высоте 1000 и установите для него режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.

  3. Вызовите RegSaveKey для созданного ключа, а затем убедитесь, что он успешно выполнен.

  4. Вызовите RegRestoreKey для созданного ключа с помощью файла Hive, созданного RegSaveKey , а затем убедитесь, что он успешно выполнен.

  5. Создайте копию файла Hive.

  6. Загрузите исходный файл Hive в HKEY_LOCAL_MACHINE и убедитесь, что он успешно выполнен.

  7. Вызовите RegReplaceKey , используя копию файла Hive. Это должно завершиться ошибкой с нарушением общего доступа, но по-прежнему активирует обратные вызовы для этой операции.

  8. Отмените регистрацию обратного вызова, а затем убедитесь, что он был вызван соответствующим образом.

Синтаксис команд

Параметр команды Описание

RegCbTestctrl.exe -regr

Запускает тест.

Примечание

   Для справки командной строки для этого тестового двоичного файла введите /h.

 

Список файлов

Файл Расположение

RegCbTestCtrl.exe

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

RegCbTest.sys

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

Ntlog.dll

 

Параметры

Имя параметра Описание параметра
LLU_LclAdminUser LLU для выполнения
LLU_NetAccessOnly LLU для копирования