Condividi tramite


Set di regole di utilizzo DDI (NDIS)

Usare queste regole per verificare che il driver usi correttamente NDIS DDIs.

Contenuto della sezione

Argomento Descrizione

Init_DeRegisterInterrupt

La regola Init_DeRegisterInterrupt specifica che se NdisMRegisterInterruptEx viene chiamato almeno una volta durante MPInitilize, NdisMDeregisterInterruptEx deve essere chiamato almeno una volta in MPHaltEx.

Init_NdisAllocateIoWorkItem

La regola Init_NdisAllocateIoWorkItem specifica che se NdisAllocateIoWorkItem viene chiamato almeno una volta durante MiniportInitializeEx, la funzione NdisFreeIoWorkItem deve:

Init_RegisterInterrupt

La regola Init_RegisterInterrupt specifica che la registrazione di interruzioni, che in genere si verifica durante l'inizializzazione, deve essere annullata se qualcosa non va nel processo di inizializzazione o durante l'arresto del driver miniport.

Se NdisMRegisterInterruptEx viene chiamato almeno una volta durante MiniportInitializeEx, la funzione NdisMDeregisterInterruptEx deve essere chiamata almeno una volta in MiniportHaltEx.

Init_RegisterSG

La regola Init_RegisterSG specifica che la registrazione dell'elenco di raccolta a dispersione (SG), che in genere si verifica durante l'inizializzazione, deve essere annullata se si verifica un errore nel processo di inizializzazione o durante l'arresto del driver miniport.

Se NdisMRegisterScatterGatherDma viene chiamato almeno una volta durante MiniportInitializeEx, la funzione NdisMDeregisterScatterGatherDma deve essere chiamata almeno una volta in MiniportHaltEx.

NdisFDeregisterFilterDriver

Un driver di filtro deve chiamare NdisFDeregisterFilterDriver dalla routine FilterDriverUnload .

NdisMDeregisterInterruptEx

Dopo che NdisMDeregisterInterruptEx restituisce il controllo, il driver miniport non può chiamare la funzione NdisMSynchronizeWithInterruptEx .

NullCheck

La regola NullCheck verifica che un valore NULL all'interno del codice driver non venga dereferenziato più avanti nel driver. Questa regola segnala un difetto se una di queste condizioni è vera:

  • È presente un'assegnazione di NULL che viene dereferenziata in un secondo momento.
  • È presente un parametro globale/parametro per una procedura in un driver che può essere NULL che viene dereferenziato in un secondo momento ed è presente un controllo esplicito nel driver che suggerisce che il valore iniziale del puntatore può essere NULL.

Con le violazioni delle regole NullCheck, le istruzioni di codice più rilevanti vengono evidenziate nel riquadro albero di traccia. Per altre informazioni sull'uso dell'output del report, vedere Report di verifica driver statici e Informazioni sul visualizzatore di traccia.

Per selezionare il set di regole di utilizzo DDI

  1. Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Avvia verifica driver statico....

  2. Fare clic sulla scheda Regole . In Set di regole selezionare DDIUsage.

    Per selezionare il set di regole predefinite da una finestra del prompt dei comandi per sviluppatori di Visual Studio, specificare DDIUsage.sdv con l'opzione /check . Ad esempio:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Per altre informazioni, vedere Uso del verificatore driver statico per trovare i difetti nei comandi driver e verifica driver statici (MSBuild).