Определение утечки объектов платформы драйвером
В этом разделе описывается, как найти утечки памяти драйвера, вызванные невыпущенными ссылками. Это относится к драйверам User-Mode Driver Framework (UMDF) версии 1 и 2.
UMDF 1
В UMDF версии 1 стек вызовов может вызвать утечку памяти, если каждый вызов AddRef не имеет соответствующего вызова Release .
Чтобы проверить, является ли драйвер UMDF версии 1 утечкой объектов платформы, выполните следующие действия.
Используйте приложение управления WDF Verifier , чтобы задать необходимые параметры средства проверки. Во время регулярного тестирования начните с настройки TrackObjects , а не TrackRefCounts.
При выгрузке драйвера средство проверки кода платформы входит в отладчик, если объект платформы не был удален, и предлагает использовать расширение отладчика !wudfdumpobjects . Это расширение отладчика отображает список объектов, которые были удалены.
Если средство проверки кода указывает, что драйвер пропускает объекты платформы, используйте управляющее приложение, чтобы задать параметр TrackRefCounts .
Если этот параметр задан, проверяющий отслеживает ссылки на объекты платформы во время работы драйвера. Расширение отладчика !wudfrefhist можно использовать для отображения каждого стека вызовов (набора вызовов функций), который увеличивает или уменьшает число ссылок объекта. Изучив вызовы AddRef и Release в этих стеках вызовов, вы сможете найти стек, который не уменьшает количество ссылок объекта и, таким образом, вызывает утечку.
Дополнительные сведения о параметрах проверки см. в разделе Использование средства проверки UMDF.
Сведения об удалении объектов платформы см. в разделе Управление временем существования объектов.
UMDF 2
В UMDF версии 2 неизданные ссылки встречаются редко, но могут возникать из-за несоответствия вызовов при использовании WdfObjectReference и WdfObjectDereference.
Чтобы проверить, является ли драйвер UMDF версии 2 утечкой объектов платформы, используйте следующую процедуру:
Выполните действия, описанные в разделе Рекомендации, чтобы настроить компьютер для отладки UMDF.
Чтобы использовать отслеживание тегов, включите средство проверки UMDF и отслеживание обработки в реестре. Оба этих параметра хранятся в подразделе Driver Parameters\Wdf ключа имени> драйвераHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<.
Чтобы включить средство проверки UMDF, задайте для параметра VerifierOn ненулевое значение.
Чтобы включить отслеживание обработки, присвойте параметру TrackHandles имя одного или нескольких типов объектов или укажите звездочку (*) для отслеживания всех типов объектов.
Вы также можете изменить параметры средства проверки UMDF с помощью приложенияWdfVerifier.exe .
Перезагрузитесь, установите подключение к отладчику, а затем используйте следующие команды отладчика:
- !wdfkd.wdfdriverinfo 0x10 для отображения иерархии дескрипторов
- !wdfkd.wdftagtracker для отображения сведений о теге
Если средство проверки UMDF включено, при выгрузке драйвера обнаруживаются утечки памяти, как и в KMDF.
Дополнительные сведения об использовании счетчиков ссылок в драйверах KMDF и UMDF версии 2 см. в разделе Жизненный цикл объекта платформы.