Set di regole varie (NDIS)
Usare queste regole per verificare che il driver segua correttamente un set generale di requisiti per la corretta gestione dei timer, delle operazioni di sospensione, delle chiavi, delle stringhe e delle associazioni.
Contenuto della sezione
Argomento | Descrizione |
---|---|
La regola CancelTimerObject specifica che NdisSetTimerObject e NdisCancelTimerObject vengono chiamati in ordine alternativo. L'obiettivo finale è assicurarsi che tutti i timer vengano annullati al termine di MiniportHaltEx . |
|
La regola MiniportPause_Return specifica che la funzione di callback MiniportPause deve restituire solo NDIS_STATUS_SUCCESS se l'operazione di sospensione è stata completata o NDIS_STATUS_PENDING se il driver miniport è in stato di sospensione. Qualsiasi altro stato restituito non è valido. |
|
Questa regola verifica che NdisOpenConfigurationEx e NdisCloseConfiguration vengano chiamati in ordine alternativo. L'obiettivo finale è assicurarsi che gli handle di configurazione vengano chiusi quando MiniportHaltEx esce |
|
NdisQueryBindInstanceName alloca memoria per la stringa che specifica il nome descrittivo. Al termine dell'uso della memoria, il chiamante deve chiamare la funzione NdisFreeMemory per rilasciare la memoria. |
|
I driver di protocollo non possono chiamare NdisReEnumerateProtocolBindings dal contesto delle funzioni ProtocolBindAdapterEx o ProtocolUnbindAdapterEx . Inoltre, i driver di protocollo non possono chiamare NdisReEnumerateProtocolBindings dall'interno del contesto della funzione ProtocolNetPnPEvent se il parametro ProtocolBindingContext di ProtocolNetPnPEvent non è NULL. Tuttavia, i driver di protocollo possono chiamare NdisReEnumerateProtocolBindings dall'interno del contesto di ProtocolNetPnPEvent se ProtocolBindingContext è NULL. Un valore Null ProtocolBindingContext indica che l'evento si applica a tutte le associazioni. |
|
La regola PeriodicTimer specifica che il chiamante di NdisCancelTimerObject deve essere in esecuzione in IRQL = PASSIVE_LEVEL se è stato specificato un valore diverso da zero nel parametro MillisecondsPeriod della funzione NdisSetTimerObject . Se il parametro MillisecondsPeriod della funzione NdisSetTimerObject è zero, i chiamanti di NdisCancelTimerObject possono essere eseguiti in IRQL <= DISPATCH_LEVEL. |
|
La regola WriteErrorLog specifica che se la funzione NdisMAllocateSharedMemory viene chiamata nella funzione MiniportInitializeEx , il driver deve chiamare anche NdisWriteErrorLogEntry se l'allocazione non riesce. |
Per selezionare il set di regole Varie
Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Launch Static Driver Verifier....From the Driver menu, click Launch Static Driver Verifier....
Fare clic sulla scheda Regole . In Set di regole selezionare Varie.
Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per gli sviluppatori di Visual Studio, specificare Miscellaneous.sdv con l'opzione /check . Ad esempio:
msbuild /t:sdv /p:Inputs="/check:Miscellaneous.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).