NdisSendNetBufferLists 函式 (ndis.h)
通訊協定驅動程式會呼叫 NdisSendNetBufferLists 函式,以傳送包含在 NET_BUFFER_LIST 結構清單中的網路數據。
語法
void NdisSendNetBufferLists(
[in] NDIS_HANDLE NdisBindingHandle,
[in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
參數
[in] NdisBindingHandle
識別目標配接器的句柄。 先前對 NdisOpenAdapterEx 的呼叫傳回此句柄。
[in] NetBufferLists
NET_BUFFER_LIST 結構連結清單的指標。 每個NET_BUFFER_LIST結構都會描述 NET_BUFFER 結構的清單。
[in] PortNumber
識別迷你埠配接器埠的埠號碼。 迷你埠配接器的預設埠號碼為零。 不使用迷你埠配接器埠的通訊協定驅動程序應該指定預設埠。
[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結構符合超載驅動程式的準則。 此旗標不會影響檢查回送,或對其他系結進行回送。
傳回值
無
備註
通訊協議驅動程式呼叫 NdisSendNetBufferLists 之後,NDIS 會將 NET_BUFFER_LIST 結構提交至基礎驅動程式的 MiniportSendNetBufferLists 函式 。
通訊協定驅動程式必須呼叫下列其中一個函式,從集區配置每個NET_BUFFER_LIST結構:
通訊協定驅動程式可以預先配置NET_BUFFER_LIST結構,例如,在其 DriverEntry 例程中。 或者,驅動程式可以在呼叫 NdisSendNetBufferLists 之前配置結構,然後在傳送作業完成時釋出結構。 當 NDIS 傳回NET_BUFFER_LIST結構時 ProtocolSendNetBufferListsComplete,迷你埠驅動程式可以準備NET_BUFFER_LIST結構和任何相關聯的資源以供重複使用。 重複使用NET_BUFFER_LIST結構可能會產生比將結構傳回集區更好的效能,然後重新配置給另一個傳送作業。通訊協定驅動程式必須將每個NET_BUFFER_LIST結構的 SourceHandle 成員設定為傳遞給 NdisBindingHandle 參數的相同值。 系結句柄提供 NDIS 在基礎迷你埠驅動程式呼叫之後,將NET_BUFFER_LIST結構傳回通訊協定驅動程式所需的資訊 NdisMSendNetBufferListsComplete。
在呼叫 NdisSendNetBufferLists 之前,通訊協定驅動程式可以設定與 NET_BUFFER_LIST_INFO 宏一起傳送要求隨附的資訊。 基礎驅動程式可以使用 NET_BUFFER_LIST_INFO 宏擷取此資訊。
在通訊協定驅動程式呼叫 NdisSendNetBufferLists 並列出NET_BUFFER_LIST結構之前,通訊協定驅動程式必須確定NET_BUFFER_LIST結構是依照網路數據應該透過網路傳送的順序來設定。
一旦通訊協議驅動程式呼叫 NdisSendNetBufferLists,它就會放棄NET_BUFFER_LIST結構和所有相關聯資源的擁有權。 NDIS 會呼叫 ProtocolSendNetBufferListsComplete 函式,以將結構和數據傳回至通訊協定驅動程式。 NDIS 可以在將清單傳遞至 ProtocolSendNetBufferListsComplete 之前,先將多個傳送要求中的結構和數據收集到單一連結的NET_BUFFER_LIST結構清單。
在 NDIS 呼叫 ProtocolSendNetBufferListsComplete 之前,通訊協定驅動程式起始的傳送目前狀態不適用於通訊協定驅動程式。 通訊協議驅動程式會在呼叫 NdisSendNetBufferLists 時,暫時釋放針對傳送要求所配置之所有資源的擁有權。 通訊協議驅動程式 絕不 應該嘗試在呼叫 NdisSendNetBufferLists 之後檢查NET_BUFFER_LIST結構或任何相關聯的數據。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | Irql_SendRcv_Function (ndis) |