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


Правило DoubleFetch (wdm)

Правило DoubleFetch — это важное правило безопасности, которое проверяет, безопасно ли драйвер обращается к буферам, которые передаются в пользовательское пространство через IRP. Подходящий способ безопасной отправки данных между драйвером и компонентом пользовательского режима описан в разделе Использование не буферизованных и прямых операций ввода-вывода.

Драйвер должен обращаться к буферам данных в соответствии с рекомендациями и рекомендациями, описанными в разделе Методы доступа к буферам данных.

Это правило проверяет наличие двойной выборки из указателей памяти в пользовательском режиме. Доступ к памяти в режиме двойного ядра может привести к проблеме безопасности состояния гонки. При доступе к данным в пользовательском режиме коду режима ядра необходимо создать локальную копию данных пользовательского режима и избежать многократного доступа к данным в пользовательском режиме. В противном случае возникает проблема, известная как "двойная выборка", при которой данные могут измениться после первого доступа к ним.

Это правило доступно начиная с Windows 10 WDK, сборка 20236. Это правило доступно только для WDM и универсальных типов драйверов.

Модель драйвера: WDM, Универсальная

Как тестировать

Во время компиляции:

  1. Запустите средство проверки статических драйверов и укажите правило двойной выборки .

  2. Выполните следующие действия (см. статью Использование средства проверки статических драйверов для поиска дефектов в драйверах Windows), чтобы выполнить анализ кода:

Дополнительные сведения см. в разделе Использование средства проверки статических драйверов для поиска дефектов в драйверах.