Debug di un'installazione del dispositivo Co-Installer
Alcuni pacchetti di installazione del dispositivo hardware includono file DLL noti come co-installer, che consentono di installare il dispositivo.
Non è possibile eseguire il debug di un co-programma di installazione nello stesso modo di altri moduli. Ciò è dovuto al modo univoco in cui viene caricato un co-programma di installazione e, poiché molti scenari di installazione si verificano automaticamente senza fornire allo sviluppatore l'opportunità di entrare nel processo in esecuzione.
È possibile risolvere questo problema installando il dispositivo a livello di codice. Il collegamento di un debugger all'applicazione che installa il dispositivo consente l'accesso al co-programma di installazione stesso. Il modo più semplice per eseguire questa operazione consiste nell'installare o reinstallare il dispositivo usando lo strumento DevCon incluso in Windows Driver Kit (WDK). È quindi possibile eseguire il debug del co-programma di installazione con WinDbg.
Utilizzare la procedura seguente per eseguire questa attività. Questa procedura presuppone che sia stato sviluppato un pacchetto di installazione del driver funzionante per il dispositivo che usa un programma di installazione condivisa. Presuppone inoltre che tu abbia la copia più recente di WDK. Per informazioni sullo sviluppo di driver, pacchetti di installazione dei driver e coinstallazione del driver, vedere la documentazione di WDK.
Debug di un co-programma di installazione con DevCon e WinDbg
Collegare il dispositivo hardware.
Annullare la procedura guidata Nuovo hardware trovato .
Avviare WinDbg.
Selezionare Apri eseguibile dal menu File di WinDbg.
Nella finestra di dialogo Apri eseguibile eseguire le operazioni seguenti:
Nella casella di testo selezione file selezionare lo strumento DevCon (Devcon.exe). A tale scopo, passare alla cartella di installazione di WDK, quindi aprire gli strumenti di sottodirectory, quindi aprire la sottodirectory devcon, quindi aprire la sottodirectory corrispondente all'architettura del processore del computer e quindi selezionare Devcon.exe. Fare clic una sola volta su Devcon.exe e non premere ancora Apri.
Nella casella di testo Argomenti immettere il testo seguente, dove INFFile è il nome file del file INF (Device Installation Information) e HardwareID è l'ID hardware del dispositivo:
update INFFile HardwareID
Nella casella di testo Avvia directory immettere il percorso del pacchetto di installazione del dispositivo.
Fare clic su Apri.
Il processo di debug inizierà e WinDbg si interromperà nel processo DevCon prima che DevCon installi il driver.
Configurare il debugger per l'interruzione nel processo di co-installazione quando viene caricato. È possibile eseguire questa operazione con uno dei metodi seguenti:
Nella finestra Comando debugger usare il comando sxe (Imposta eccezioni) seguito da ld: e quindi il nome file del co-programma di installazione, escluso l'estensione di file. Non dovrebbe esserci spazio dopo i due punti, ad esempio, se il nome del co-programma di installazione è mycoinst.dll, usare il comando seguente:
sxe ld:mycoinst
Selezionare Filtri eventi dal menu Debug di WinDbg. Nella finestra di dialogo Filtri eventi selezionare Carica modulo. In Esecuzione selezionare Abilitato. In Continua selezionare Non gestito. Fare clic sul pulsante Argomento e quindi nella casella di testo immettere il nome del co-programma di installazione, escluso l'estensione del file, ad esempio immettere "mycoinst" per mycoinst.dll. Fare clic su OK e quindi su Chiudi.
Riprendere l'esecuzione premendo F5 o immettendo il comando g (Go) nella finestra Comando del debugger.
Quando il co-programma di installazione viene caricato, l'esecuzione verrà interrotta nuovamente nel debugger. A questo punto, è possibile impostare eventuali punti di interruzione aggiuntivi necessari.
Limitazioni di questa procedura
In alcuni casi, l'esecuzione di un pacchetto di installazione del dispositivo in DevCon può comportare un comportamento leggermente diverso rispetto a quello di un'installazione PnP, a causa di token di sicurezza diversi e simili. Se si sta tentando di eseguire il debug di un problema specifico nel co-programma di installazione, è possibile che questo problema non venga replicato se è coinvolto DevCon. Pertanto, prima di usare questa tecnica, è consigliabile usare DevCon per installare il driver senza un debugger collegato per verificare che questo problema esista sia negli scenari PnP che devCon.
Se il problema svanisce ogni volta che DevCon avvia l'installazione, sarà necessario eseguire il debug del coinstallazione senza usare DevCon. Un modo per eseguire questa operazione consiste nell'usare lo strumento TList con l'opzione /m per determinare quale processo sta caricando il modulo di co-installazione e quindi collegando il debugger a tale processo.