Identificativo articolo: 244617 - Ultima modifica: mercoledì 17 agosto 2005 - Revisione: 5.1 Utilizzo di Driver Verifier per la risoluzione dei problemi relativi a driver di periferica in WindowsQuesto articolo è stato precedentemente pubblicato con il codice di riferimento I244617 Importante In questo articolo sono contenute informazioni su come modificare il Registro di sistema. Prima di modificare il Registro di sistema, eseguire una copia di backup e assicurarsi di sapere come ripristinarlo in caso di problemi. Per ulteriori informazioni su come eseguire il backup, ripristinare e modificare il Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito: 256986
(http://support.microsoft.com/kb/256986/
)
Descrizione del Registro di sistema di Microsoft Windows In questa paginaSommario
Driver Verifier è incluso in Windows 2000, Windows XP e Windows Server 2003 allo scopo di favorire la stabilità e l'affidabilità del sistema e può essere utilizzato per la risoluzione dei problemi relativi ai driver. In Windows è possibile che i componenti in modalità kernel causino danni o errori di sistema per via di un driver sviluppato in modo errato, come nel caso di una versione precedente di un driver Windows Driver Model (WDM). In questo articolo viene descritto come utilizzare Driver Verifier per isolare e risolvere i problemi causati da un driver a livello di sistema.
Informazioni
In questo articolo vengono affrontati i seguenti argomenti:
Capacità di Driver VerifierPer utilizzare Driver Verifier, eseguire Verifier.exe e riavviare il computer. Per iniziare l'analisi dei driver presenti nel sistema non è necessario apportare altre modifiche.Con Driver Verifier vengono fornite le seguenti capacità: Allocazioni di memoriaViene eseguito il tentativo di assegnare tutte le allocazioni di memoria di un driver da un pool speciale. Anziché condividere le allocazioni di memoria con il resto del sistema, le allocazioni di questo driver vengono isolate e vincolate negando qualsiasi autorizzazione di accesso. Questa capacità determina se un driver causa l'allocazione di una condivisione del pool superiore a quella a esso riservata, provocando di conseguenza danni e instabilità del sistema. Se si attiva questa capacità e il computer di destinazione dispone di sufficiente memoria fisica e virtuale, tutte le allocazioni dei driver vengono automaticamente reindirizzate in un pool speciale.Pressione estrema sulla memoriaÈ possibile esercitare una pressione estrema sulla memoria per un driver specifico senza influire su altri driver e indipendentemente dalla dimensione della memoria. A questo scopo, è possibile immettere istruzioni per il sistema di gestione della memoria, affinché invalidi tutti i dati e il codice di paging del driver, oltre ai dati, al codice e al pool di paging del sistema. In questo modo è possibile rilevare se un driver trattiene erroneamente spinlock o causa aumenti di IRQL, ottenendo quindi l'accesso a dati o codice di paging. L'imposizione di una pressione estrema sulla memoria può essere utilizzata per rilevare problemi intermittenti e isolarne la causa.Convalida dei parametriTutte le chiamate per spinlock, IRQL e allocazioni di pool di memoria effettuate dal driver ricevono automaticamente una convalida dei parametri. Ciò significa che vengono effettuati controlli per assicurare le seguenti condizioni:
Inserimento di errori di allocazione del pool di memoriaÈ possibile provocare errori casuali delle allocazioni di pool di memoria che non sono contrassegnate come MUST_SUCCEED da parte del driver, per assicurarsi che il driver sia in grado di gestire correttamente condizioni di memoria insufficiente.Rilascio del poolAl momento del rilascio della memoria viene esaminato l'intero pool per assicurarsi che all'interno dell'allocazione del pool di memoria non siano presenti timer in sospeso. In questi casi diventerebbe infatti particolarmente difficile registrare le cause degli arresti di sistema.Rilevamento di perdite di memoriaTutte le allocazioni del pool di memoria del driver vengono registrate automaticamente. Qualora una delle allocazioni non venisse rilasciata al momento di scaricare i driver, viene effettuato un controllo errori automatico. Per visualizzare tutte le allocazioni non rilasciate, è possibile utilizzare il comando del debugger del kernel !verifier 3. Questo comando può essere utilizzato in qualsiasi momento, prima di scaricare i driver, per visualizzarne le allocazioni di memoria.Controllo dello scaricamento dei driverQuesto controllo viene eseguito per individuare i driver scaricati che non liberano le risorse utilizzate e che pertanto aumentano la possibilità di un controllo degli errori di sistema subito dopo essere stati scaricati. Le risorse che il driver potrebbe non liberare includono elenchi look-aside, chiamate DPC (Deferred Procedure Call) in sospeso, thread di lavoro, code, timer e altre.Verifica I/OSe si attiva il flag Verifica I/O tramite lo strumento Verifier o la chiave del Registro di sistema VerifyDriverLevel (per ulteriori informazioni sull'argomento vedere la sezione "Attivazione di Driver Verifier" in questo articolo), vengono attivate alcune verifiche di I/O Manager, quali:
Requisiti di Driver VerifierL'unico requisito è l'installazione di Windows 2000, Windows XP o Windows Server 2003. È possibile attivare Driver Verifier sulle versioni commerciali e controllate di Windows. Per ulteriori informazioni sugli aspetti da considerare prima di attivare Driver Verifier Manager sui server di produzione, vedere l'articolo della Microsoft Knowledge Base 251233 (il contenuto potrebbe essere in inglese). Se nel sistema è installato Norton Antivirus, evitare di attivare Rilevamento blocco critico (deadlock) in Driver Verifier, come indicato nell'articolo della Microsoft Knowledge Base 325672.Attivazione di Driver VerifierÈ possibile attivare Driver Verifier utilizzando Verifier.exe. Verifier.exe è incluso in tutte le copie di Windows e viene installato automaticamente nella cartella System32. Verifier.exe dispone di un'interfaccia della riga di comando e di un'interfaccia visiva grafica (GUI) che consentono di specificare i driver e i livelli di verifica appropriati. È anche possibile visualizzare le statistiche di Driver Verifier in tempo reale. Per ulteriori informazioni, vedere la sezione "Driver Verifier Manager" in questo articolo.Debug delle violazioni di Driver VerifierSia il comando !verifier nel debugger del kernel, sia lo strumento Verifier.exe consentono di visualizzare la configurazione corrente e le statistiche di Driver Verifier in tempo reale.Tutte le violazioni di Driver Verifier generano un controllo errori, i più comuni dei quali sono i seguenti, anche se non necessariamente tutti:
Driver Verifier e driver per la graficaI driver per la grafica in modalità kernel di Windows, quali le DLL dei driver video e della stampante, non sono in grado di richiamare direttamente il punto di ingresso del pool. Le allocazioni di memoria vengono invece eseguite indirettamente utilizzando richiamate DDI (Device Driver Interface) a Win32k.sys. Ad esempio, EngAllocMem viene richiamato da un driver per la grafica per l'allocazione esplicita del pool di memoria. Anche altre richiamate specifiche, come EngCreatePalette ed EngCreateBitmap restituiscono il pool di memoria.Per fornire lo stesso tipo di test automatici per i driver per la grafica, in Win32k.sys è incorporato il supporto per alcune funzioni di Driver Verifier. In ogni caso, poiché i driver per la grafica presentano maggiori restrizioni rispetto ad altri driver in modalità kernel, richiedono solo un sottoinsieme delle funzionalità di Driver Verifier. In particolare, non sono necessari il controllo degli IRQL e la verifica dell'I/O. Le altre funzionalità, ossia l'utilizzo di un pool speciale, l'errore casuale delle allocazioni di memoria e il controllo dell'allocazione di memoria, sono supportati a vari livelli nelle diverse richiamate alle DDI per la grafica. Gli errori casuali sono supportati per le seguenti funzioni di richiamate alle DDI per la grafica:
L'attivazione di Driver Verifier per i driver per la grafica è identica all'attivazione per altri driver. Fare riferimento in proposito alla sezione "Attivazione di Driver Verifier" di questo articolo per ulteriori informazioni. I flag non supportati, quale il controllo degli IRQL, vengono ignorati. È inoltre possibile utilizzare il comando del debugger del kernel !gdikdx.verifier per esaminare lo stato corrente di Driver Verifier e le tracce del pool relative ai driver per la grafica. NOTA: l'impostazione dell'errore di allocazione casuale dovrebbe essere utilizzata solo per i test di affidabilità. L'uso di questa impostazione potrebbe causare la visualizzazione di messaggi di errore relativi al rendering, pertanto si sconsiglia di utilizzarla per i test di verifica destinati al controllo della correttezza di implementazione dei driver per la grafica, ad esempio per confrontare l'output di un driver per la grafica con un'immagine di riferimento. Driver Verifier Manager (Verifier.exe)Driver Verifier Manager (Verifier.exe) è il mezzo preferenziale per creare e modificare le impostazioni di Driver Verifier e per rilevarne le statistiche. Verifier.exe si trova nella cartella %WinDir%\System32 di tutte le installazioni di Windows.Stato driverLa pagina delle proprietà Stato driver fornisce un'immagine dello stato corrente di Driver Verifier visualizzando i driver rilevati dallo strumento. Lo stato può essere:
Se si attiva il flag Pool speciale e a esso viene assegnato meno del 95% delle allocazioni di memoria, in questa finestra verrà visualizzato un messaggio di errore. In questo caso, sarà necessario selezionare un insieme inferiore di driver da verificare oppure aggiungere una maggiore quantità di memoria fisica al computer per una migliore copertura della verifica delle allocazioni di memoria. Contatori globaliLa pagina delle proprietà Contatori globali consente di visualizzare il valore corrente di alcuni contatori gestiti da Driver Verifier. Il valore zero per un contatore può indicare che il flag di Driver Verifier associato non è attivato. Un valore 0 per il contatore relativo ad altro/errori, ad esempio, indica che il flag per la simulazione risorse in esaurimento non è attivato. È possibile monitorare l'attività dello strumento, poiché i valori dei contatori vengono aggiornati automaticamente per impostazione predefinita. È possibile modificare la frequenza di aggiornamento, passare all'aggiornamento manuale o imporre l'aggiornamento utilizzando il gruppo di controlli presenti nella parte inferiore sinistra della finestra di dialogo.Verifica poolIn questa finestra delle proprietà sono riportate ulteriori statistiche rilevate da Driver Verifier. Tutti i contatori presenti in questa finestra riguardano il flag Verifica pool di Verifier. Per la maggior parte si tratta di contatori per driver, ad esempio le allocazioni correnti, i byte allocati attualmente e così via. Ciò significa che per visualizzare i contatori per un driver specifico, è necessario selezionare il nome del driver desiderato dalla casella combinata superiore.ImpostazioniÈ possibile utilizzare questa finestra delle proprietà per creare e modificare le impostazioni di Driver Verifier. Le impostazioni verranno salvate nel Registro di sistema e perché abbiano effetto è necessario riavviare il computer. Per visualizzare i driver attualmente installati, è possibile utilizzare l'elenco contenuto nella finestra. Per ogni driver è possibile che sia indicato un valore di stato analogo ai seguenti:
Nella parte inferiore della finestra di dialogo è possibile specificare ulteriori driver che si desidera verificare dopo il successivo riavvio, separandoli con uno spazio. In genere questo controllo di modifica risulta utile quando si desidera installare un nuovo driver che non è già caricato. Se il gruppo di pulsanti di opzione che viene visualizzato all'inizio dell'elenco è impostato su Verifica tutti i driver, l'elenco e i pulsanti Verifica e Non verificare e il controllo per la modifica non saranno disponibili. Con questa impostazione dopo il successivo riavvio verranno verificati tutti i driver presenti nel sistema. È possibile impostare il tipo di verifica utilizzando le caselle di controllo nella parte superiore destra della finestra di dialogo. È possibile attivare Verifica I/O a livello 1 o livello 2. Il tipo di verifica effettuato con l'impostazione Livello 2 è più approfondito di Livello 1. È necessario salvare le modifiche apportate alle impostazioni facendo clic su Applica. Nella finestra sono presenti altri due pulsanti:
Impostazioni volatiliÈ possibile utilizzare questa finestra delle proprietà per modificare immediatamente i flag di Driver Verifier. Solo lo stato di alcuni flag può essere cambiato ed è impossibile modificare l'elenco dei driver da verificare. Dopo la modifica dello stato di alcune caselle di controllo, fare clic su Applica per rendere effettive le modifiche. Le modifiche diventano subito effettive e rimangono valide fino a quando si apportano ulteriori modifiche o si riavvia il computer.Interfaccia della riga di comandoVerifier.exe può essere eseguito anche dalla riga di comando. Per ulteriori informazioni digitare verifier.exe /? al prompt dei comandi. Nell'elenco seguente sono riportati i flag della riga di comando più comuni:
Ulteriori informazioni per gli sviluppatori di driverNelle sezioni che seguono vengono forniti ulteriori dettagli sulle impostazioni di Driver Verifier che potrebbero risultare utili per gli sviluppatori di driver. Tali impostazioni non sono di solito necessarie per i professionisti IT.Avviso L'errato utilizzo dell'editor del Registro di sistema può causare gravi problemi che potrebbero richiedere la reinstallazione del sistema operativo. Microsoft non è in grado di garantire la risoluzione di problemi causati dall'errato utilizzo dell'editor del Registro di sistema. L'utilizzo dell'editor del Registro di sistema è a rischio e pericolo dell'utente. Per attivare Driver Verifier modificando il Registro di sistema, attenersi alla seguente procedura:
Nel seguente elenco sono riportati alcuni esempi di valori della chiave REG_SZ:
Le informazioni in questo articolo si applicano a
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO. | Traduzione articoli
|

Torna all'inizio
