共用方式為


啟動篩選模組

若要啟動暫停的篩選模組,NDIS 會呼叫篩選驅動程式的 FilterSetModuleOptions 函式,如果有的話,接著呼叫 FilterRestart 函式。 篩選模組會在FilterRestart函式的執行開始時進入重新開機狀態。

如果驅動程式為 FilterSetModuleOptions提供了進入點,驅動程式可以變更篩選模組的部分特性。 如需詳細資訊,請參閱 資料略過模式

當它呼叫篩選驅動程式的FilterRestart函式時,NDIS 會將指標傳遞給NDIS_RESTART_ATTRIBUTES結構,以篩選NDIS_FILTER_RESTART_PARAMETERS結構的RestartAttributes成員中的驅動程式。 篩選驅動程式可以修改基礎驅動程式所指定的重新開機屬性。 如需如何修改重新開機屬性的詳細資訊,請參閱 FilterRestart

注意 NDIS 會先針對堆疊中的所有篩選模組呼叫 FilterSetModuleOptions ,NDIS 會針對堆疊中的任何篩選模組呼叫 FilterRestart 函式。

NDIS 會在隨插即用作業中啟動篩選模組,以重新開機驅動程式堆疊。 如需重新開機驅動程式堆疊的概觀,請參閱 重新開機驅動程式堆疊

代表處於 重新開機 狀態的篩選模組,篩選驅動程式:

  • 完成重新開機一般傳送和接收作業所需的任何作業。

    如需傳送和接收作業的詳細資訊,請參閱 篩選模組傳送和接收作業

  • 可以讀取或寫入篩選模組的可設定參數。

  • 可以接收網路資料指示。 驅動程式可以複製和排入這類資料佇列,並指示稍後過度處理驅動程式,或捨棄資料。

  • 不應該起始任何新的接收指示。

  • 應該藉由呼叫NdisFSendNetBufferListsComplete函式,立即拒絕對其FilterSendNetBufferLists函式提出的所有新傳送要求。 它應該將每個 NET_BUFFER_LIST 中的完整狀態設定為NDIS_STATUS_PAUSED。

  • 可以使用 NdisFIndicateStatus 函式提供狀態指示。

    如需狀態指示的詳細資訊,請參閱 篩選模組狀態指示

  • 應該處理 FilterOidRequest 函式中的 OID 要求。

    如需 OID 要求的詳細資訊,請參閱 篩選模組 OID 要求

  • 不應該起始任何新的傳送要求。

  • 應該呼叫 NdisFReturnNetBufferLists 函式,立即將新的接收指示傳回給 NDIS。 如有必要,驅動程式可以在傳回這些指示之前先複製這類接收指示。

  • 可以對基礎驅動程式提出 OID 要求,以設定或查詢更新的組態資訊。

  • 應該在其 FilterStatus 函式中處理狀態指示。

  • 應指出NDIS_STATUS_SUCCESS或失敗狀態。 如果篩選模組未重新開機,NDIS 會中斷連結,如果它是必要篩選器,NDIS 會終止整個驅動程式堆疊。

篩選驅動程式成功重新開機傳送和接收作業之後,它必須完成重新開機作業。 篩選驅動程式可以從 FilterRestart分別傳回NDIS_STATUS_SUCCESS或NDIS_STATUS_PENDING,以同步或非同步方式完成重新開機作業。

如果驅動程式傳回NDIS_STATUS_PENDING,它必須在完成重新開機作業之後呼叫 NdisFRestartComplete 函式。 在此情況下,驅動程式會將重新開機作業的最終狀態傳遞給 NdisFRestartComplete

重新開機作業完成後,篩選模組會 處於執行中 狀態。 驅動程式會繼續正常傳送和接收處理。

當篩選驅動程式處於重新開機狀態時,NDIS 不會起始其他隨插即用作業,例如附加、中斷連結或暫停要求。 篩選驅動程式處於 執行中狀態 之後,NDIS 可以起始暫停要求。 如需暫停篩選模組的詳細資訊,請參閱 暫停篩選模組