FILTER_SEND_NET_BUFFER_LISTS_COMPLETE回呼函式 (ndis.h)

NDIS 會呼叫 FilterSendNetBufferListsComplete 函式,以完成呼叫 來啟動篩選驅動程式的傳送要求 NdisFSendNetBufferLists 函式

注意 您必須使用 FILTER_SEND_NET_BUFFER_LISTS_COMPLETE 類型來宣告函式。 如需詳細資訊,請參閱下列範例一節。
 

語法

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

參數

[in] FilterModuleContext

篩選模組之內容區域的句柄。 篩選驅動程式已在 FilterAttach 函式中建立並初始化此內容區域。

NetBufferList

篩選驅動程序傳遞至 之NET_BUFFER_LIST 結構連結清單的指標 NdisFSendNetBufferLists

[in] SendCompleteFlags

可與 OR 作業結合的 NDIS 旗標。 若要清除所有旗標,請將此成員設定為零。 此函式支援下列旗標:

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

指定目前的 IRQL DISPATCH_LEVEL。 如需此旗標的詳細資訊,請參閱 分派 IRQL 追蹤

NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE

如果已設定此旗標,則 NET_BUFFER_LIST結構連結 清單中的所有封包都源自相同的 Hyper-V 可延伸交換器來源埠。

如需詳細資訊,請參閱 Hyper-V 可延伸交換器傳送和接收旗標

注意如果連結NET_BUFFER_LIST結構清單中的每個封包都使用相同的來源埠,擴充功能應該在 SendNetBufferListsSendFlags 參數中設定NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE旗標。
 
注意 此旗標適用於 NDIS 6.30 和更新版本。
 

傳回值

備註

FilterSendNetBufferListsComplete 是選擇性函式。 如果篩選驅動程式未篩選傳送要求,它可以在呼叫 時,將此函式的進入點設定為 NULL NdisFRegisterFilterDriver 函式。

篩選驅動程式可以從 FilterSetModuleOptions 函式呼叫 NdisSetOptionalHandlers 函式,以指定篩選模組的 FilterSendNetBufferListsComplete 函式。

注意 未提供 FilterSendNetBufferListsComplete 函式的篩選驅動程式無法呼叫 NdisFSendNetBufferLists 函式。
 
NDIS 呼叫 FilterSendNetBufferListsComplete 時,篩選驅動程式會重新取得 NET_BUFFER_LIST 結構和相關聯數據的擁有權。

如果過度配置驅動程式起始傳送要求,篩選驅動程式應該呼叫 NdisFSendNetBufferListsComplete 函式來完成傳送要求。

如果篩選驅動程式產生傳送要求, FilterSendNetBufferListsComplete 可以釋放 NET_BUFFER_LIST 結構和相關聯的數據,或準備它們以供後續呼叫 NdisFSendNetBufferLists 重複使用。

注意當 NDIS 呼叫 FilterSendNetBufferListsComplete 時,篩選驅動程式應該會追蹤其起始的傳送要求,並確定它不會呼叫 NdisFSendNetBufferListsComplete
 
NDIS 會在 IRQL 呼叫 FilterSendNetBufferListsComplete <= DISPATCH_LEVEL。

例子

若要定義 FilterSendNetBufferListsComplete 函式,您必須先提供函式宣告來識別您要定義的函式類型。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程序驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為 「 MySendNetBufferListsComplete」 的 FilterSendNetBufferListsComplete 函式,請使用 FILTER_SEND_NET_BUFFER_LISTS_COMPLETE 類型,如下列程式代碼範例所示:

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

然後,實作您的函式,如下所示:

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 Use_decl_annotations 註釋新增至函式定義。 Use_decl_annotations註釋可確保使用頭檔中套用至FILTER_SEND_NET_BUFFER_LISTS_COMPLETE函式類型的批註。 如需函式宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。

如需 Use_decl_annotations的詳細資訊,請參閱 標註函式行為

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Windows
標頭 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

FilterAttach

FilterSetModuleOptions

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers