Condividi tramite


Informazioni sul verificatore dei driver statici

Per scrivere un driver affidabile conforme al modello di driver Windows (WDM) o a Kernel Mode Driver Framework (KMDF), NDIS o Storport, è necessario avere competenze e comprendere come il driver interagisce con il gestore di I/O. Il test di questi driver è altrettanto complicato.

Lo sviluppo di driver solidi può risultare difficile per i motivi seguenti:

  • I driver sono asincroni, anche nei computer a processore singolo.

  • I conducenti sono massicciamente reentranti.

  • I driver usano molte regole oscure.

  • I modelli di driver sono evolutivi e l'età nel tempo.

Il test dei driver di dispositivo è limitato dai motivi seguenti:

  • Osservazione. Non è possibile osservare un errore nell'interazione tra il driver e il sistema operativo. I driver possono violare le regole di utilizzo implicite, causando un arresto anomalo o un comportamento non corretto, ma è difficile rilevare la causa radice di un errore durante lo sviluppo e il test dei driver.

  • Controllo. I driver che funzionano correttamente in circostanze normali possono avere errori sottili che si verificano solo in situazioni eccezionali, ad esempio quando un driver sotto di esso nello stack non riesce un IRP. Tali situazioni sono difficili da eseguire, quindi i test tradizionali non rilevano adeguatamente i percorsi di errore tramite il codice del driver.

SDV migliora sia l'osservazione che il controllo presenti quando si testano i driver. Definendo le regole per l'uso corretto delle funzioni WDM, KMDF, NDIS e Storport e monitorando la conformità del driver a tali regole, SDV migliora la capacità di osservare gli errori. Ad esempio, la regola WDM LowerDriverReturn specifica che, in determinate circostanze, la routine dispatch di un driver deve restituire sempre il valore restituito dal driver inferiore nello stack.

SDV aumenta anche il controllo fornendo:

  • Un modello ostile dell'ambiente del driver, in cui possono verificarsi diversi scenari peggiori (ad esempio le chiamate al sistema operativo che hanno continuamente esito negativo).

  • Analisi statica avanzata (denominata controllo del modello) che esplora sistematicamente tutti i possibili percorsi di esecuzione nel driver.

SDV è uno strumento di unit test essenziale per i driver di dispositivo. Inserisce un driver in un ambiente ostile e testa sistematicamente i percorsi di codice attraverso il driver cercando violazioni delle regole di utilizzo del modello driver.

Importante

SDV non è più supportato e SDV non è disponibile nelle versioni WDK o EWDK di Windows 24H2. Non è disponibile in WDK più recente rispetto alla build 26017 e non è incluso in Windows 24H2 RTM WDK. SDV può comunque essere usato scaricando Windows 11 versione 22H2 EWDK (rilasciata il 24 ottobre 2023) con gli strumenti di compilazione di Visual Studio 17.1.5 da Scaricare Windows Driver Kit (WDK) . È consigliabile usare enterprise WDK per eseguire SDV. L'uso di versioni precedenti del WDK standard in combinazione con le versioni recenti di Visual Studio non è consigliato, in quanto ciò genererà probabilmente errori di analisi.
In futuro, CodeQL sarà lo strumento di analisi statico principale per i driver. CodeQL offre un linguaggio di query potente che considera il codice come database su cui eseguire query, semplificando la scrittura di query per comportamenti, modelli e altro ancora specifici. Per altre informazioni sull'uso di CodeQL, vedere CodeQL e il test del logo degli strumenti statici.