Просмотр объектов UMDF
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.
Дополнительные сведения см. в разделе начало работы с помощью UMDF.
В этом разделе описывается использование расширений отладчика Wudfext.dll для просмотра сведений об объектах, используемых драйвером User-Mode Driver Framework (UMDF) версии 1.
Начиная с UMDF версии 2, вместо этого следует использовать расширения отладчика Wdfkd.dll. Дополнительные сведения см. в разделе Расширения Платформы драйверов Windows (Wdfkd.dll).
Для просмотра сведений об объектах UMDF версии 1 можно выполнить следующие действия:
Используйте одно из следующих расширений отладчика UMDF для просмотра стеков устройств, которые находятся в хост-процессе:
!wudfext.umdevstacks
!wudfext.umdevstack , как показано в следующем примере:
!wudfext.umdevstack <dev-stack-addr>
Эти сведения включают объекты драйверов и устройства для каждого драйвера. В настоящее время UMDF позволяет использовать только один стек устройств в хост-процессе, поэтому нет никакой разницы между выходными данными этих двух расширений.
Просмотрите полное дерево объектов с помощью расширения отладчика UMDF !wudfext.wudfobject , как показано в следующем примере:
!wudfext.wudfobject <IWDFDriver*> 1
Используйте расширение отладчика UMDF !wudfext.wudfdevice, как показано в следующем примере, чтобы определить Plug and Play (PnP) и состояние управления питанием устройства:
!wudfext.wudfdevice <IWDFDevice*>
Чтобы определить очереди, связанные с устройством, выполните следующие действия.
Используйте расширение отладчика UMDF с помощью !wudfext.wudfdevicequeues для просмотра очередей, связанных с устройством. Это расширение показывает свойства очереди, состояние очереди и запросы, принадлежащие драйверу.
Используйте расширение отладчика UMDF с помощью !wudfext.wudfqueue , как показано в следующем примере, чтобы получить сведения о каждой очереди:
!wudfext.wudfqueue <IWDFIoQueue*>
Используйте расширение отладчика UMDF !wudfext.wudfrequest для получения сведений о конкретном запросе. Эти сведения включают базовый пакет запросов ввода-вывода в пользовательском режиме (IRP). На основе сведений об IRP в пользовательском режиме можно определить, где в данный момент обрабатывается запрос в стеке. Вы также можете использовать расширение отладчика UMDF !wudfext.umirp для получения этих сведений об IRP в пользовательском режиме.
Определите все целевые объекты ввода-вывода, выполнив:
Использование расширения отладчика UMDF !wudfext.wudfobject для просмотра дочерних объектов объекта устройства. Целевые объекты ввода-вывода являются дочерними объектами объекта устройства.
Использование расширения отладчика UMDF !wudfext.wudfiotarget , как показано в следующем примере, для просмотра сведений о каждом целевом объекте ввода-вывода:
!wudfext.wudfiotarget <IWDFTarget*>
Это расширение показывает состояние целевого объекта и список отправленных запросов.
В настоящее время нет расширения отладчика UMDF, позволяющего просматривать все целевые объекты ввода-вывода.
Используйте следующие расширения отладчика UMDF для просмотра сведений об объектах файлов:
!wudfext.wudfrequest или !wudfext.umirp
Используйте расширение отладчика UMDF !wudfext.wudfrequest или !wudfext.umirp для просмотра файлов, которые являются дочерними объектами объектов устройства.!wudfext.wudffile
Используйте расширение отладчика UMDF !wudfext.wudffile , как показано в следующем примере, для просмотра сведений о файле платформы:!wudfext.wudffile <IWDFFile*>
!wudfext.umfile
Используйте расширение отладчика UMDF ! wudfext.umfile , как показано в следующем примере, для просмотра сведений о файле внутри стека UMDF (т. е. объект файла, созданный драйвером в стеке в отличие от объекта файла, созданного приложением или драйвером в другом стеке):Надстройка !wudfext.umfile <>
В некоторых случаях может не быть соответствующего файла платформы, а сведения об IRP в пользовательском режиме могут включать внутритековый файл UMDF.
Сведения, отображаемые в файле !wudfext.umfile , включают все IRP, помещенные в очередь в файл внутри стека UMDF. Только файлы, созданные драйверами, отслеживают пользовательский режим IRP, которые помещаются в очередь этих файлов. Для файлов, созданных приложением, диспетчер ввода-вывода отслеживает irP режима ядра.
!wudfext.umdevstacks и !wudfext.umdevstack
Используйте выходные данные расширений отладчика !wudfext.umdevstacks и !wudfext.umdevstack UMDF для просмотра необработанных файлов внутри стека UMDF, соответствующих файлам, созданным драйвером.