NdisFSendNetBufferLists 函式 (ndis.h)
篩選驅動程式會呼叫 NdisFSendNetBufferLists 函式來傳送網路數據緩衝區清單。
語法
void NdisFSendNetBufferLists(
[in] NDIS_HANDLE NdisFilterHandle,
__drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
參數
[in] NdisFilterHandle
識別此篩選模組的 NDIS 句柄。 NDIS 在呼叫 filterAttach 函式時,將句柄傳遞至篩選驅動程式。
NetBufferList
NET_BUFFER_LIST 結構連結清單的指標。 每個 NET_BUFFER_LIST 結構都會描述 NET_BUFFER 結構的清單。
[in] PortNumber
識別迷你埠配接器埠的埠號碼。 迷你埠適配卡埠號碼會藉由呼叫 NdisMAllocatePort 函式來指派。 零值會識別迷你埠配接器的預設埠。
[in] SendFlags
定義傳送作業屬性的旗標。 旗標可以與 OR 作業結合。 若要清除所有旗標,請將這個成員設定為零。 此函式支援下列旗標:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
指定目前的 IRQL DISPATCH_LEVEL。 如需此旗標的詳細資訊,請參閱 分派 IRQL 追蹤。
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
指定 NDIS 應該檢查回送。 根據預設,NDIS 不會將數據回送至提交傳送要求的驅動程式。 過度配置驅動程式可以藉由設定此旗標來覆寫此行為。 設定此旗標時,NDIS 會識別包含符合系結接收準則之數據的所有 NET_BUFFER 結構。 NDIS 表示NET_BUFFER結構,這些結構符合超載驅動程式的準則。 此旗標不會影響檢查回送或其他系結的回送或回送。
NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
如果設定此旗標,則 NET_BUFFER_LIST 結構連結清單中的所有封包都源自相同的 Hyper-V 可延伸交換器來源埠。
如需詳細資訊,請參閱 Hyper-V 可延伸交換器傳送和接收旗標。
NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
如果設定此旗標,NET_BUFFER_LIST 結構連結清單中的所有封包都會轉送至相同的可延伸交換器目的地埠。
如需詳細資訊,請參閱 Hyper-V 可延伸交換器傳送和接收旗標。
傳回值
沒有
言論
在篩選驅動程式呼叫 NdisFSendNetBufferLists 函式之後,NDIS 會將 NET_BUFFER_LIST 結構提交至基礎驅動程式。
篩選驅動程式可以源自傳送要求,也可以篩選從過度套用驅動程式接收的要求。 如果篩選驅動程式源自傳送要求,驅動程式必須配置緩衝區集區。 篩選驅動程式會從集區配置每個 NET_BUFFER_LIST 結構。
篩選驅動程式可以預先配置 NET_BUFFER_LIST 結構,或者可以在呼叫 NdisFSendNetBufferLists 之前配置結構,然後在傳送作業完成時釋放它們。
篩選驅動程式必須設定 SourceHandle 每個 NET_BUFFER_LIST 結構的成員,其來源與傳遞給 NdisFilterHandle 參數的值相同。 篩選句柄會提供 NDIS 將 NET_BUFFER_LIST 結構傳回至篩選驅動程式所需的資訊。 篩選驅動程式不得修改其未產生之任何 NET_BUFFER_LIST 結構中的 SourceHandle 成員。
在呼叫 NdisFSendNetBufferLists之前,篩選驅動程式可以設定傳送要求與 NET_BUFFER_LIST_INFO 巨集一起的資訊。 基礎驅動程式可以使用 NET_BUFFER_LIST_INFO 巨集來擷取此資訊。
NDIS 會呼叫篩選驅動程式的 FilterSendNetBufferLists 函式,以傳遞來自過度處理驅動程式的傳送要求。 篩選驅動程式可以傳遞這類要求,方法是將 NET_BUFFER_LISTT 結構傳遞給 FilterSendNetBufferListsNdisFSendNetBufferLists。
一旦篩選驅動程式呼叫 NdisFSendNetBufferLists 函式,就會放棄 NET_BUFFER_LIST 結構和所有相關資源的擁有權。 NDIS 呼叫 FilterSendNetBufferListsComplete 函式,將結構和數據傳回至篩選驅動程式。 NDIS 可以在將清單傳遞至 filterSendNetBufferListsComplete 之前,先將多個傳送要求的結構和數據收集到單一連結的 NET_BUFFER_LIST 結構清單。
在 NDIS 呼叫 FilterSendNetBufferListsComplete之前,篩選驅動程式無法使用傳送要求的目前狀態。 篩選驅動程式會在呼叫 NdisFSendNetBufferLists時,暫時釋放與傳送要求相關聯的所有資源的擁有權。 在呼叫 NdisFSendNetBufferLists之後,篩選驅動程式絕對不應該嘗試檢查 NET_BUFFER_LIST 結構或任何相關聯的數據。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 桌面 |
標頭 | ndis.h (包括 Ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_Filter_Driver_Function(ndis) |