篩選驅動程式 資料略過模式 可以提供改善的系統效能。 NDIS 不會呼叫略過的 FilterXxx 函式。 例如,如果指定的篩選應用程式不需要傳送和接收服務,篩選驅動程式可以略過傳送和接收函式。
篩選驅動程式會在驅動程式初始化期間,呼叫 NdisFRegisterFilterDriver 函式時,針對可略過之函式指定預設進入點。 預設略過之函式的進入點為 Null 。 如需初始化的詳細資訊,請參閱 初始化篩選驅動程式。
若要在運行時間變更略過狀態,驅動程式必須在驅動程式初始化期間指定 FilterSetModuleOptions 函式的進入點。 驅動程式可以初始化NDIS_FILTER_PARTIAL_CHARACTERISTICS結構,並將新特性從 FilterSetModuleOptions 的內容內傳遞至 NdisSetOptionalHandlers 函式。
NDIS 會在重新啟動作業開始時呼叫 FilterSetModuleOptions 函式 (如果有的話)。 篩選驅動程式可以針對每個篩選模組獨立設定略過模式。 如需詳細資訊,請參閱 啟動篩選模組。
篩選驅動程式可以略過下列在NDIS_FILTER_DRIVER_CHARACTERISTICS結構中指定的選擇性 FilterXxx 函式:
FilterSendNetBufferListsComplete
FilterCancelSendNetBufferLists
若要將 FilterXxx 函式設定為略過模式,篩選驅動程式會為該函式的進入點指定 Null 。 不過,如果驅動程式呼叫任何具有相關聯 FilterXxx 函式的 NDIS 函式,則必須提供該 FilterXxx 函式的進入點。 例如,如果驅動程式呼叫 NdisFIndicateReceiveNetBufferLists 函式,則必須提供 FilterReturnNetBufferLists 函式。
如果篩選驅動程式指定 FilterSendNetBufferLists 函式,並將傳送要求排入佇列,它也必須指定 FilterCancelSendNetBufferLists 函式。
如果篩選驅動程式指定 FilterReceiveNetBufferLists 或 FilterReturnNetBufferLists 函式,驅動程式也必須指定 FilterStatus 函式。
若要在執行階段變更其略過模式設定,篩選驅動程式可以呼叫 NdisFRestartFilter 函式。 NdisFRestartFilter 會排程暫停作業,然後是指定篩選模組的重新啟動作業。 當 NDIS 呼叫 FilterSetModuleOptions 時,篩選驅動程式可以呼叫 NdisSetOptionalHandlers 並指定一組新的進入點,以變更該篩選模組的函式。
注意 暫停和重新啟動可能會導致某些網路封包在傳輸或接收過程中,或兩者皆有掉落。 在遺失封包的情況下,提供可靠傳輸機制的網路通訊協定可能會重試網路 I/O 作業,但不保證可靠性的其他通訊協定不會重試作業。
篩選驅動程式可以註冊支援選擇性驅動程式服務的其他選擇性函式。 驅動程式會在 FilterSetOptions 函式中註冊這些選擇性服務。 如需這些選擇性服務的詳細資訊,請參閱 設定選擇性篩選驅動程式服務。