Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avvertimento
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità 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'aggiornamento degli esempi di driver di Windows 11, versione 22H2 - maggio 2022.
Per altre informazioni, vedere Introduzione a UMDF.
In questo argomento viene descritto 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 dalla versione 2 di UMDF, è consigliabile usare invece le estensioni del debugger Wdfkd.dll. Per altre info, vedi Estensioni di Windows Driver Framework (Wdfkd.dll).
È possibile eseguire i passaggi seguenti 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 un solo stack di dispositivi in un processo host, quindi non esiste alcuna differenza tra gli output di queste due estensioni.
Visualizzare l'albero completo degli oggetti usando l'estensione del debugger UMDF !wudfext.wudfobject , come nell'esempio seguente:
!wudfext.wudfobject <IWDFDriver*> 1
Usare l'estensione del debugger UMDF !wudfext.wudfdevice , come illustrato nell'esempio seguente per determinare lo stato di plug and play (PnP) e di risparmio energia del dispositivo:
!wudfext.wudfdevice <IWDFDevice*>
Per determinare le code associate al dispositivo, seguire questa procedura:
Utilizzare l'estensione del debugger UMDF !wudfext.wudfdevicequeues per visualizzare le code associate al dispositivo. Questa estensione mostra le proprietà della coda, lo stato della coda e le richieste gestite dal driver.
Utilizzare l'estensione del debugger UMDF !wudfext.wudfqueue come mostrato nel seguente esempio, per ottenere informazioni su ogni coda.
!wudfext.wudfqueue <IWDFIoQueue*>
Usare l'estensione del debugger UMDF !wudfext.wudfrequest per ottenere informazioni su una determinata richiesta. Queste informazioni includono il pacchetto di richiesta I/O in modalità utente sottostante. Dalle informazioni IRP in modalità utente è possibile determinare dove la richiesta è in corso di elaborazione nello stack. È anche possibile usare l'estensione del debugger UMDF !wudfext.umirp per ottenere queste informazioni IRP in modalità utente.
Determinare tutte le destinazioni di I/O in base a:
Uso dell'estensione del debugger UMDF !wudfext.wudfobject per visualizzare gli oggetti figlio dell'oggetto dispositivo. Gli oggetti di destinazione di I/O sono oggetti figlio dell'oggetto dispositivo.
Usando l'estensione del 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 le estensioni del debugger UMDF !wudfext.wudfrequest o !wudfext.umirp per visualizzare i file che sono oggetti figlio di oggetti dispositivo.!wudfext.wudffile
Usare l'estensione del debugger UMDF !wudfext.wudffile , come illustrato nell'esempio seguente per visualizzare informazioni su un file framework:!wudfext.wudffile <IWDFFile*>
!wudfext.umfile
Usare l'estensione del debugger UMDF !wudfext.umfile , come illustrato nell'esempio seguente per visualizzare informazioni su un file intra stack di UMDF, ovvero un oggetto file creato da un driver nello stack anziché un oggetto file creato da un'applicazione o da un driver in un altro stack:!wudfext.umfile <addr>
In alcuni casi, potrebbe non essere presente un file framework corrispondente e le informazioni IRP in modalità utente potrebbero includere un file UMDF all'interno dello stack.
Le informazioni che !wudfext.umfile visualizza includono eventuali richieste IRP accodate 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, il gestore I/O tiene traccia degli IRP in modalità kernel.
!wudfext.umdevstacks e !wudfext.umdevstack
Usare l'output delle estensioni del debugger !wudfext.umdevstacks e !wudfext.umdevstack per visualizzare i file UMDF in sospeso nello stack che corrispondono ai file creati dal driver.