共用方式為


其他規則集 (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。 此外,如果 ProtocolNetPnPEvent 的 ProtocolBindingContext 參數不是 NULL,通訊協定驅動程式就無法從 ProtocolNetPnPEvent 的內容中呼叫 NdisReEnumerateProtocolBindingBindingSevent 不過,如果 ProtocolBindingContext 為 NULL,通訊協定驅動程式可以從 ProtocolNetPnPEvent 的內容中呼叫 NdisReEnumerateProtocolBindingS。 NULL ProtocolBindingContext 值表示事件會套用至所有系結。

PeriodicTimer

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

WriteErrorLog

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

若要選取 [其他規則集]

  1. 在 Microsoft Visual Studio 中選取驅動程式項目 (.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) 。