Тесты обратного вызова реестра
Этот автоматизированный тест выполняет основные тестовые случаи для драйвера фильтра реестра.
Сведения о тесте
Характеристики |
|
Платформы |
|
Поддерживаемые выпуски |
|
Ожидаемое время выполнения (в минутах) | 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 (без фиксации)
Отмена регистрации Закрыть гонку
Сохранение замены восстановления
Чтобы выполнить каждый тестовый случай вручную, используйте следующие процедуры.
Выполнение тестового случая "Конфликт высоты" вручную
Зарегистрируйте обратный вызов на высоте 1000.
Зарегистрируйте другой обратный вызов на той же высоте, а затем убедитесь, что он завершается ошибкой.
CreateKey the Monitor test.
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000. Задайте для всех трех обратных вызовов режим "мониторинг". Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.
Создайте ключ, а затем убедитесь, что он выполнен успешно.
Отмена регистрации обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая CreateKey Block вручную
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.
Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.
Перенастроите обратный вызов 2000 в режим блокировки. Это означает, что обратный вызов вернет состояние ошибки.
Создайте ключ, а затем убедитесь, что он не удается.
Отмена регистрации обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая обхода CreateKey вручную
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.
Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.
Установите обратный вызов 2000 в режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.
Создайте ключ, а затем убедитесь, что он выполнен успешно.
Отмена регистрации обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая CreateKey Override Access Denied вручную
Создайте ключ K1, а затем задайте его дискреционный список управления доступом (DACL), чтобы предоставить доступ только для чтения.
Создайте ключ в разделе K1. Это должно завершиться ошибкой из-за daCL, доступного только для чтения.
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000. STATUS_CALLBACK_BYPASS.
Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов не будет выполнять никаких действий, кроме возврата STATUS_SUCCESS.
Установите обратный вызов 2000 в режим обхода с запретом доступа. Это означает, что обратный вызов будет выполнять операцию из пользовательского режима, а не блокироваться daCL только для чтения и возвращать.
Создайте ключ в разделе K1 и убедитесь, что он выполнен успешно.
Отмена регистрации обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая блокировки переопределения CreateKey вручную
Зарегистрируйте четыре из одинаковых обратных вызовов на высотах 1000, 2000, 3000 и 4000.
Установите обратные вызовы 1000 и 4000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.
Установите для обратного вызова 2000 режим блокировки. Это означает, что обратный вызов вернет STATUS_UNSUCCESSFUL.
Установите для обратного вызова 3000 режим переопределения сбоя. Это означает, что если обратный вызов идентифицирует STATUS_UNSUCCESSFUL в обратном вызове после операции, он по-прежнему будет выполнять операцию и возвращать успешное выполнение.
Создайте ключ и убедитесь, что он выполнен успешно.
Отмените регистрацию обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая обхода SetKeySecurity вручную
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.
Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.
Установите для обратного вызова 2000 режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.
Вызовите RegSetKeySecurity , чтобы задать дескриптор безопасности ключа, а затем убедитесь, что он выполнен успешно.
Отмените регистрацию обратных вызовов.
Убедитесь, что каждый обратный вызов был вызван соответствующим образом в зависимости от высоты.
Выполнение тестового случая обхода Transacted CreateKey вручную
Создайте транзакцию T1.
Создайте ключ в контексте транзакции T1.
Убедитесь, что ключ выполнен успешно, а затем удалите его.
Зарегистрируйте три одинаковых обратных вызова на высотах 1000, 2000 и 3000.
Установите обратные вызовы 1000 и 3000 в режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.
Установите для обратного вызова 2000 режим обхода. Это означает, что обратный вызов вернет STATUS_CALLBACK_BYPASS и выполнит операцию от имени реестра.
Создайте ключ в контексте транзакции T1, а затем убедитесь, что она успешно выполнена.
Зафиксируйте транзакцию.
Отмените регистрацию обратных вызовов.
Выполнение тестового случая обхода Transacted CreateKey (без фиксации) вручную
- Выполните те же действия, что и в тестовом случае обхода Transacted CreateKey, но не зафиксируйте транзакцию в конце.
Запуск тестового случая отмены регистрации закрытия гонки вручную
Запустите поток, который открывает тестовый ключ, а затем закройте дескриптор в цикле.
В исходном потоке зарегистрируйте и отмените регистрацию обратного вызова 100 раз.
Сообщите другому потоку о выходе.
Выполнение тестового случая сохранения замены восстановления вручную
Создайте ключ в кусте программного обеспечения.
Зарегистрируйте обратный вызов на высоте 1000 и установите для него режим мониторинга. Это означает, что обратный вызов будет только возвращать STATUS_SUCCESS.
Вызовите RegSaveKey для созданного ключа, а затем убедитесь, что он успешно выполнен.
Вызовите RegRestoreKey для созданного ключа с помощью файла Hive, созданного RegSaveKey , а затем убедитесь, что он успешно выполнен.
Создайте копию файла Hive.
Загрузите исходный файл Hive в HKEY_LOCAL_MACHINE и убедитесь, что он успешно выполнен.
Вызовите RegReplaceKey , используя копию файла Hive. Это должно завершиться ошибкой с нарушением общего доступа, но по-прежнему активирует обратные вызовы для этой операции.
Отмените регистрацию обратного вызова, а затем убедитесь, что он был вызван соответствующим образом.
Синтаксис команд
Параметр команды | Описание |
---|---|
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 для копирования |