使用這些規則來確認您的驅動程式是否正確遵循一組一般需求,以正確處理計時器、暫停作業、索引鍵、字串和系結。
本節中
| 主題 | 說明 |
|---|---|
CancelTimerObject 規則會指定以替代順序呼叫 NdisSetTimerObject 和 NdisCancelTimerObject。 最終目標是確保在 MiniportHaltEx 結束時取消所有計時器。 |
|
MiniportPause_Return規則指定 MiniportPause 回呼函式應該只傳回 NDIS_STATUS_SUCCESS 如果暫停作業完成,或NDIS_STATUS_PENDING迷你埠驅動程式處於暫停狀態。 任何其他傳回的狀態都是無效的。 |
|
此規則會檢查 NdisOpenConfigurationEx 和 NdisCloseConfiguration 是否以替代順序呼叫。 最終目標是確保在 MiniportHaltEx 結束時關閉設定控制碼 |
|
NdisQueryBindInstanceName 會為指定易記名稱的字串配置記憶體。 呼叫端完成使用此記憶體之後,呼叫端必須呼叫 NdisFreeMemory 函式來釋放記憶體。 |
|
通訊協定驅動程式無法從 ProtocolBindAdapterEx 或 ProtocolUnbindAdapterEx 函式的內容內呼叫 NdisReEnumerateProtocolBindings。 此外,如果 ProtocolNetPnPEvent 的 ProtocolBindingContext 參數不是 Null,則通訊協定驅動程式無法從 ProtocolNetPnPEvent 函式的內容內呼叫 NdisReEnumerateProtocolBindings。 不過,如果 ProtocolBindingContext 為 Null,通訊協定驅動程式可以從 ProtocolNetPnPEvent 的內容內呼叫 NdisReEnumerateProtocolBindings。 Null ProtocolBindingContext 值表示事件會套用至所有繫結。 |
|
PeriodicTimer 規則會指定如果在 NdisSetTimerObject 函式的 MillisecondsPeriod 參數中指定非零值,則 NdisCancelTimerObject 的呼叫端必須以 IRQL = PASSIVE_LEVEL 執行。 如果 NdisSetTimerObject 函式的 MillisecondsPeriod 參數為零,則 NdisCancelTimerObject 的呼叫端可以在 IRQL <= DISPATCH_LEVEL 執行。 |
|
WriteErrorLog 規則會指定如果在 MiniportInitializeEx 函式中呼叫 NdisMAllocateSharedMemory 函式,則如果配置失敗,驅動程式也應該呼叫 NdisWriteErrorLogEntry。 |
選取 [雜項] 規則集
在 Visual Studio Microsoft中選取您的驅動程式專案 (.vcxProj)。 從 驅動程式 選單中,點擊 啟動靜態驅動程式驗證程式…。
按一下 規則 索引標籤。在 [規則集] 底下,選取 [雜項]。
若要從 Visual Studio 開發人員命令提示字元視窗選取預設規則集,請使用 /check 選項指定 Miscellaneous.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:Miscellaneous.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的瑕疵 和 靜態驅動程式驗證器命令(MSBuild)。