共用方式為


其他規則集 (NDIS)

使用這些規則來確認您的驅動程式是否正確遵循一組一般需求,以正確處理計時器、暫停作業、索引鍵、字串和系結。

本節中

主題 說明

CancelTimerObject

CancelTimerObject 規則會指定以替代順序呼叫 NdisSetTimerObjectNdisCancelTimerObject。 最終目標是確保在 MiniportHaltEx 結束時取消所有計時器。

MiniportPause_Return

MiniportPause_Return規則指定 MiniportPause 回呼函式應該只傳回 NDIS_STATUS_SUCCESS 如果暫停作業完成,或NDIS_STATUS_PENDING迷你埠驅動程式處於暫停狀態。 任何其他傳回的狀態都是無效的。

NdisOpenConfigurationEx

此規則會檢查 NdisOpenConfigurationExNdisCloseConfiguration 是否以替代順序呼叫。 最終目標是確保在 MiniportHaltEx 結束時關閉設定控制碼

NdisQueryBindInstanceName

NdisQueryBindInstanceName 會為指定易記名稱的字串配置記憶體。 呼叫端完成使用此記憶體之後,呼叫端必須呼叫 NdisFreeMemory 函式來釋放記憶體。

NdisReEnumerateProtocolBindings

通訊協定驅動程式無法從 ProtocolBindAdapterExProtocolUnbindAdapterEx 函式的內容內呼叫 NdisReEnumerateProtocolBindings。 此外,如果 ProtocolNetPnPEventProtocolBindingContext 參數不是 Null,則通訊協定驅動程式無法從 ProtocolNetPnPEvent 函式的內容內呼叫 NdisReEnumerateProtocolBindings。 不過,如果 ProtocolBindingContext 為 Null,通訊協定驅動程式可以從 ProtocolNetPnPEvent 的內容內呼叫 NdisReEnumerateProtocolBindingsNull ProtocolBindingContext 值表示事件會套用至所有繫結。

定期計時器

PeriodicTimer 規則會指定如果在 NdisSetTimerObject 函式的 MillisecondsPeriod 參數中指定非零值,則 NdisCancelTimerObject 的呼叫端必須以 IRQL = PASSIVE_LEVEL 執行。 如果 NdisSetTimerObject 函式的 MillisecondsPeriod 參數為零,則 NdisCancelTimerObject 的呼叫端可以在 IRQL <= DISPATCH_LEVEL 執行。

寫入錯誤日誌

WriteErrorLog 規則會指定如果在 MiniportInitializeEx 函式中呼叫 NdisMAllocateSharedMemory 函式,則如果配置失敗,驅動程式也應該呼叫 NdisWriteErrorLogEntry

選取 [雜項] 規則集

  1. 在 Visual Studio Microsoft中選取您的驅動程式專案 (.vcxProj)。 從 驅動程式 選單中,點擊 啟動靜態驅動程式驗證程式…

  2. 按一下 規則 索引標籤。在 [規則集] 底下,選取 [雜項]。

    若要從 Visual Studio 開發人員命令提示字元視窗選取預設規則集,請使用 /check 選項指定 Miscellaneous.sdv。 例如:

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

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的瑕疵靜態驅動程式驗證器命令(MSBuild)