Visualizzazione di oggetti UMDF
Avviso
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.
Gli esempi di UMDF 1 archiviati sono disponibili nell'Windows 11, versione 22H2 - Aggiornamento degli esempi di driver di maggio 2022.
Per altre informazioni, vedere Introduzione con UMDF.
Questo argomento descrive come usare le estensioni del debugger Wudfext.dll per visualizzare informazioni sugli oggetti usati da un driver UMDF (User-Mode Driver Framework) versione 1.
A partire da UMDF versione 2, è consigliabile usare invece le estensioni del debugger Wdfkd.dll. Per altre informazioni, vedere Estensioni di Windows Driver Framework (Wdfkd.dll).
È possibile seguire questa procedura per visualizzare informazioni sugli oggetti UMDF versione 1:
Usare una delle estensioni del debugger UMDF seguenti per visualizzare gli stack di dispositivi presenti nel processo host:
!wudfext.umdevstacks
!wudfext.umdevstack , come illustrato nell'esempio seguente:
!wudfext.umdevstack <dev-stack-addr>
Le informazioni includono oggetti driver e oggetti dispositivo per ogni driver. Attualmente, UMDF consente solo uno stack di dispositivi in un processo host in modo che non vi sia alcuna differenza tra gli output di queste due estensioni.
Visualizzare l'albero degli oggetti completo usando l'estensione del debugger UMDF !wudfext.wudfobject , come nell'esempio seguente:
!wudfext.wudfobject <IWDFDriver*> 1
Usare l'estensione debugger UMDF !wudfxt.wudfdevice, come illustrato nell'esempio seguente per determinare lo stato di Plug and Play (PnP) e di risparmio energia del dispositivo:
!wudfext.wudfdevice <IWDFDevice*>
Seguire questa procedura per determinare le code associate al dispositivo:
Usare l'estensione del debugger UMDF !wudfext.wudfqueues per visualizzare le code associate al dispositivo. Questa estensione mostra le proprietà della coda, lo stato della coda e le richieste di proprietà del driver.
Usare l'estensione debugger UMDF !wudfext.wudfqueue , come illustrato nell'esempio seguente per ottenere informazioni su ogni coda:
!wudfext.wudfqueue IWDFIoQueue <*>
Usare l'estensione del debugger UMDF !wudfext.wudfrequest per ottenere informazioni su una richiesta specifica. Queste informazioni includono il pacchetto di richiesta I/O in modalità utente sottostante . Dalle informazioni di IRP in modalità utente, è possibile determinare dove la richiesta è attualmente in fase di elaborazione nello stack. È anche possibile usare l'estensione del debugger UMDF !wudfext.umirp per ottenere queste informazioni su IRP in modalità utente.
Determinare tutte le destinazioni di I/O in base a:
Uso dell'estensione debugger UMDF !wudfext.wudfobject per visualizzare gli oggetti figlio dell'oggetto dispositivo. Gli oggetti di destinazione I/O sono oggetti figlio dell'oggetto dispositivo.
Usando l'estensione debugger UMDF !wudfext.wudfiotarget , come illustrato nell'esempio seguente per visualizzare informazioni su ogni oggetto di destinazione I/O:
!wudfext.wudfiotarget <IWDFTarget*>
Questa estensione mostra lo stato della destinazione e l'elenco delle richieste inviate.
Attualmente non è disponibile alcuna estensione del debugger UMDF che consente di visualizzare tutte le destinazioni di I/O.
Usare le estensioni del debugger UMDF seguenti per visualizzare informazioni sugli oggetti file:
!wudfext.wudfrequest o !wudfext.umirp
Usare l'estensione del debugger ! wudfext.wudfrequest o !wudfext.umirp UMDF per visualizzare i file figlio degli oggetti dispositivo.!wudfext.wudffile
Usare l'estensione debugger UMDF !wudfext.wudffile , come illustrato nell'esempio seguente per visualizzare informazioni su un file framework:!wudfext.wudffile <IWDFFile*>
!wudfext.umfile
Usare l'estensione debugger UMDF !wudfext.umfile , come illustrato nell'esempio seguente per visualizzare informazioni su un file intra-stack di UMDF, ovvero un oggetto file che un driver nello stack creato anziché un oggetto file creato da un'applicazione o da un driver in un altro stack:Addr !wudfext.umfile <>
In alcuni casi, potrebbe non essere presente un file framework corrispondente e le informazioni sull'IRP in modalità utente potrebbero includere un file intra stack UMDF.
Le informazioni visualizzate da !wudfext.umfile includono tutti gli indirizzi IP accodati al file intra-stack di UMDF. Solo i file creati dal driver tengono traccia degli IRP in modalità utente accodati a tali file. Per i file creati dall'applicazione, gestione I/O tiene traccia dei irp in modalità kernel.
!wudfext.umdevstacks e !wudfext.umdevstack
Usare l'output dalle estensioni del debugger UMdfext.umdevstack e !wudfext.umdevstack UMDF per visualizzare file di UMDF in sospeso che corrispondono ai file creati dal driver.