資料略過模式
篩選驅動程式 資料略過模式 可以提供改善的系統效能。 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 函式中註冊這些選擇性服務。 如需這些選擇性服務的詳細資訊,請參閱 設定選擇性篩選驅動程式服務。