共用方式為


暫停篩選模組

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

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

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

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

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

  • 如果有來自篩選驅動程式且 NDIS 尚未完成的接收作業,篩選驅動程式必須等候 NDIS 完成這類作業。 在 NDIS 呼叫 FilterReturnNetBufferLists 函式,以取得所有這類未處理的接收指示之前,暫停作業才會完成。

  • 應立即回傳由底層驅動程式發出的任何未處理的接收指示給 NDIS。 除非驅動程式呼叫 NdisFReturnNetBufferLists 函式,才能完成暫停作業,以取得這類未處理的接收指示。 如果驅動程式將它從基礎驅動程式接收的緩衝區排入佇列,這些未處理的接收指示就可能存在。

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

    附註NdisFReturnNetBufferLists 不應該針對在對應 FilterReceiveNetBufferLists 呼叫中設定之NDIS_RECEIVE_FLAGS_RESOURCES旗標所指示的 NBL 呼叫。 這類 NBL 會同步地從 FilterReceiveNetBufferLists 例程回到 NDIS。

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

  • 如果篩選驅動程式產生且 NDIS 尚未完成的傳送作業,篩選驅動程式必須等候 NDIS 完成這類作業。 暫停作業不會完成,除非 NDIS 呼叫 FilterSendNetBufferListsComplete 函式來處理所有這類未完的傳送請求。

  • 應該呼叫 NdisFSendNetBufferListsComplete 函式,立即傳回對其 FilterSendNetBufferLists 函式發出的所有新傳送要求。 篩選驅動程式應該將每個NET_BUFFER_LIST結構中的 狀態 成員設定為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結構中的 狀態 成員設定為NDIS_STATUS_PAUSED。

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

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

  • 應該在 filterOidRequest函式中處理OID 要求。

  • 可以發起 OID 要求。

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