共用方式為


暫停篩選模組

若要暫停執行中的篩選模組,NDIS 會呼叫篩選驅動程式的 FilterPause 函式。 篩選模組會在FilterPause函式的執行開始時進入暫停狀態。

NDIS 會將篩選模組暫停為隨插即用作業的一部分,以暫停驅動程式堆疊。 如需暫停驅動程式堆疊的概觀,請參閱 暫停驅動程式堆疊

代表處於 暫停 狀態的篩選模組,篩選驅動程式:

  • 不應該產生任何新的接收指示。

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

  • 如果有篩選驅動程式產生且 NDIS 尚未完成的接收作業,篩選驅動程式必須等候 NDIS 完成這類作業。 在 NDIS 針對所有這類未完成的接收指示呼叫 FilterReturnNetBufferLists 函式之前,暫停作業才會完成。

  • 應該傳回任何未完成的接收指示,指出基礎驅動程式立即源自 NDIS。 在驅動程式呼叫 NdisFReturnNetBufferLists 函式以取得這類未處理的接收指示之前,暫停作業才會完成。 如果驅動程式將接收自基礎驅動程式的緩衝區排入佇列,這些未處理的接收指示就可能存在。

  • 應該傳回新的接收指示,指出基礎驅動程式會呼叫 NdisFReturnNetBufferLists 函式,立即源自 NDIS。 如有必要,驅動程式可以複製接收指示,並在傳回指示之前將它們排入佇列。

    注意:在對應的FilterReceiveNetBufferLists呼叫中設定NDIS_RECEIVE_FLAGS_RESOURCES旗標所指示的 NBL,不應呼叫NdisFReturnNetBufferLists。 這類 NBL 會透過從 FilterReceiveNetBufferLists 常式傳回,以同步方式傳回 NDIS。

  • 不應該產生任何新的傳送要求。

  • 如果有篩選驅動程式源自且 NDIS 尚未完成的傳送作業,篩選驅動程式必須等候 NDIS 完成這類作業。 在 NDIS 呼叫 FilterSendNetBufferListsComplete 函式以取得所有這類未處理傳送要求之前,暫停作業才會完成。

  • 應該藉由呼叫NdisFSendNetBufferListsComplete函式,立即傳回對其FilterSendNetBufferLists函式提出的所有新傳送要求。 篩選驅動程式應該將每個NET_BUFFER_LIST結構中的 Status 成員設定為NDIS_STATUS_PAUSED。

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

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

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

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

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

  • 可以起始 OID 要求。

  • 不應該釋放附加作業期間所配置驅動程式的資源。

  • 如果需要停止傳送和接收作業,應該取消計時器。

    如需計時器的詳細資訊,請參閱 NDIS 6.0 計時器服務

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

如果驅動程式傳回NDIS_STATUS_PENDING,它必須在完成暫停作業之後呼叫 NdisFPauseComplete 函式。

代表處於 暫停 狀態的篩選模組,篩選驅動程式:

  • 不應該產生新的接收指示。

  • 應該傳回新的接收指示,指出基礎驅動程式會呼叫 NdisFReturnNetBufferLists 函式,立即源自 NDIS。 如有必要,驅動程式可以複製接收指示,並在傳回指示之前將它們排入佇列。

  • 不應該產生新的傳送要求。

  • 應該藉由呼叫NdisFSendNetBufferListsComplete函式,立即傳回對其FilterSendNetBufferLists函式提出的所有新傳送要求。 篩選驅動程式應該將每個NET_BUFFER_LIST結構中的 Status 成員設定為NDIS_STATUS_PAUSED。

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

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

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

  • 可以起始 OID 要求。

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