Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ostrzeżenie
UMDF 2 jest najnowszą wersją UMDF i zastępuje UMDF 1. Wszystkie nowe sterowniki UMDF powinny być zapisywane przy użyciu funkcji UMDF 2. Do usługi UMDF 1 nie są dodawane żadne nowe funkcje, a obsługa UMDF 1 na nowszych wersjach systemu Windows 10 jest ograniczona. Sterowniki uniwersalne systemu Windows muszą używać funkcji UMDF 2.
Zarchiwizowane przykłady UMDF 1 można znaleźć w Windows 11, wersja 22H2 - Maj 2022 aktualizacja przykładów sterowników.
Aby uzyskać więcej informacji, zobacz Wprowadzenie do usługi UMDF.
W tym temacie opisano sposób używania rozszerzeń debugera Wudfext.dll do wyświetlania informacji o obiektach używanych przez sterownik User-Mode Driver Framework (UMDF) w wersji 1.
Począwszy od UMDF w wersji 2, należy zamiast tego użyć rozszerzeń debugera Wdfkd.dll. Aby uzyskać więcej informacji, zobacz Windows Driver Framework Extensions (Wdfkd.dll).
Aby wyświetlić informacje o obiektach UMDF w wersji 1, można wykonać następujące czynności:
Użyj jednego z następujących rozszerzeń debugera UMDF, aby wyświetlić stosy urządzeń, które znajdują się w procesie hosta:
!wudfext.umdevstacks
!wudfext.umdevstack , jak pokazano w poniższym przykładzie:
!wudfext.umdevstack <dev-stack-addr>
Informacje obejmują obiekty sterowników oraz obiekty urządzeń dla każdego sterownika. Obecnie funkcja UMDF zezwala tylko na jeden stos urządzeń w procesie hosta, więc nie ma różnicy między danymi wyjściowymi tych dwóch rozszerzeń.
Wyświetl pełne drzewo obiektów przy użyciu rozszerzenia debugera !wudfext.wudfobject UMDF, jak w poniższym przykładzie:
#B0 !wudfext.wudfobject #B1 IWDFDriver* #C2 1 #C3
Użyj rozszerzenia debugera UMDF programu !wudfext.wudfdevice , jak pokazano w poniższym przykładzie, aby określić stan Plug and Play (PnP) i zarządzania energią urządzenia:
!wudfext.wudfdevice <IWDFDevice*>
Wykonaj następujące kroki w celu określenia kolejek skojarzonych z urządzeniem:
Użyj rozszerzenia debugera UMDF !wudfext.wudfdevicequeues, aby wyświetlić kolejki skojarzone z urządzeniem. To rozszerzenie pokazuje właściwości kolejki, stan kolejki oraz zapytania posiadane przez sterownik.
Użyj rozszerzenia debugera UMDF !wudfext.wudfqueue, aby uzyskać informacje o każdej kolejce, jak pokazano na poniższym przykładzie.
!wudfext.wudfqueue <IWDFIoQueue*>
Użyj rozszerzenia debuggera UMDF !wudfext.wudfrequest, aby uzyskać informacje o konkretnym żądaniu. Te informacje obejmują podstawowy pakiet żądań we/wy trybu użytkownika (IRP). Z informacji IRP w trybie użytkownika można określić, gdzie żądanie jest obecnie przetwarzane w stosie. Możesz również użyć rozszerzenia debugera UMDF !wudfext.umirp, aby uzyskać te informacje o IRP trybu użytkownika.
Określ wszystkie cele we/wy:
Użycie rozszerzenia debuggera UMDF !wudfext.wudfobject w celu wyświetlenia obiektów zależnych obiektu urządzenia. Obiekty docelowe we/wy są obiektami podrzędnymi obiektu urządzenia.
Za pomocą rozszerzenia debuggera UMDF !wudfext.wudfiotarget, jak pokazano w poniższym przykładzie, można wyświetlić informacje o każdym obiekcie docelowym I/O.
!wudfext.wudfiotarget <IWDFTarget*>
To rozszerzenie pokazuje stan obiektu docelowego i listę wysłanych żądań.
Obecnie nie ma rozszerzenia debugera UMDF, które umożliwia wyświetlanie wszystkich elementów docelowych we/wy.
Użyj następujących rozszerzeń debugera UMDF, aby wyświetlić informacje o obiektach plików:
!wudfext.wudfrequest lub !wudfext.umirp
Użyj rozszerzenia !wudfext.wudfrequest lub !wudfext.umirp UMDF debugera, aby wyświetlić pliki, które są obiektami podrzędnymi obiektów urządzenia.!wudfext.wudffile
Użyj rozszerzenia debugera UMDF programu !wudfext.wudffile, jak pokazano w poniższym przykładzie, aby wyświetlić informacje o pliku frameworka.!wudfext.wudffile <IWDFFile*>
!wudfext.umfile
Użyj rozszerzenia debugera UMDF programu !wudfext.umfile, jak pokazano w poniższym przykładzie, aby wyświetlić informacje o pliku wewnątrz stosu UMDF (czyli obiekcie pliku, który został utworzony przez sterownik w stosie, w odróżnieniu od pliku utworzonego przez aplikację lub sterownik w innym stosie):!wudfext.umfile <addr>
W niektórych przypadkach może nie być odpowiedni plik struktury ramowej, a informacje o IRP trybu użytkownika mogą zawierać plik wewnętrzny stosu UMDF.
Informacje, które wyświetla !wudfext.umfile, zawierają wszelkie IRP, które są kolejkowane do pliku stosu UMDF. Tylko pliki utworzone przez sterownik śledzą IRP w trybie użytkownika, które są kolejką do tych plików. W przypadku plików utworzonych przez aplikację menedżer we/wy śledzi IRP w trybie jądra.
!wudfext.umdevstacks i !wudfext.umdevstack
Użyj danych wyjściowych z rozszerzeń debugera !wudfext.umdevstacks i !wudfext.umdevstack UMDF, aby wyświetlić nierozwiązane pliki w ramach stosu UMDF, które odpowiadają plikom utworzonym przez sterownik.