Driver supportati

Affinché SDV verifichi un driver, deve essere in grado di interpretare il codice del driver, in particolare, i punti di ingresso del driver e il codice nelle funzioni e nelle routine che supportano la funzionalità del driver necessaria.

Le sezioni seguenti descrivono i requisiti di base per i driver e la sintassi specifica che SDV prevede i driver che verifica. SDV non verifica che i driver siano conformi a questi requisiti, ma se il driver non è conforme, sdV potrebbe non essere eseguito e, in rari casi, segnala risultati falsi positivi o falsi negativi a causa di un'interpretazione errata.

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.

Caratteristiche di base del driver

SDV è in grado di verificare solo i driver con le caratteristiche seguenti:

Requisiti di base dei driver

Affinché SDV verifichi un driver WDM, il driver deve:

Affinché SDV verifichi un driver KMDF, il driver deve:

Affinché SDV verifichi un driver NDIS, il driver deve:

  • Includere Ndis.h e Ntddk.h.

  • Seguire le linee guida nella Guida alla progettazione di rete per creare driver NDIS.

  • Annotare ogni funzione di callback usando un tipo di ruolo della funzione di callback SDV-NDIS, come descritto in Uso delle dichiarazioni del tipo di ruolo della funzione. Per un elenco dei tipi di ruolo supportati, vedere Dichiarazioni di funzione NDIS del driver statico.

Inoltre, SDV può verificare i driver che supportano:

Nomi di funzioni riservate

Il motore di verifica SDV non funziona correttamente quando il driver o il codice della libreria usa gli stessi modelli di nome di funzione usati internamente da SDV.

In particolare, SDV non interpreta correttamente il codice se:

  • Il codice include nomi di funzione che iniziano con __init e sono seguiti da uno o più numeri interi, ad esempio __init123.

  • Il codice include nomi di funzione che iniziano con sdv_, ad esempio sdv_Func o includono la stringa _sdv_, ad esempio Func_sdv_ o Func_sdv_foo.

  • La libreria usa un file per rinominare una .def funzione esportata e il nome esterno corrisponde al nome di un'altra funzione statica nella libreria.

Se il codice del driver o il codice della libreria include questi elementi, SDV tenta di verificare il driver o elaborare la libreria, ma il risultato non è supportato feature (NSF). Per altre informazioni sui risultati sdv, vedere Interpretazione dei risultati del driver statico.