共用方式為


MINIPORT_CO_SEND_NET_BUFFER_LISTS回呼函式 (ndis.h)

MiniportCoSendNetBufferLists 函式會傳輸包含在指定連結 NET_BUFFER_LIST 結構清單中的網路數據。

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

語法

MINIPORT_CO_SEND_NET_BUFFER_LISTS MiniportCoSendNetBufferLists;

void MiniportCoSendNetBufferLists(
  [in] NDIS_HANDLE MiniportVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendFlags
)
{...}

參數

[in] MiniportVcContext

迷你埠驅動程式配置的內容區域的句柄,迷你埠驅動程式會維護其個別虛擬連線 (VC) 狀態。 迷你埠驅動程式會從其 MiniportCoCreateVc 函式提供此句柄給 NDIS。

[in] NetBufferLists

NET_BUFFER_LIST 結構連結清單中第一個 NET_BUFFER_LIST 結構的指標。 清單中的每個 NET_BUFFER_LIST 結構都會描述 NET_BUFFER 結構的清單。 清單中的每個 NET_BUFFER 結構都會對應至記憶體描述元清單鏈結(MDL)。 MDL 包含 MiniportCoSendNetBufferLists 傳輸的網路數據。

[in] SendFlags

定義傳送作業屬性的旗標。 旗標可以與位 OR 運算結合。 若要清除所有旗標,請將此參數設定為零。 MiniportCoSendNetBufferLists 支援下列旗標:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

如果目前的 IRQL 已DISPATCH_LEVEL,呼叫端可以選擇性地設定此旗標。 如需此旗標的詳細資訊,請參閱 分派 IRQL 追蹤

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

NDIS 應該檢查回送。 根據預設,NDIS 不會將數據回送至提交傳送要求的驅動程式。 過度配置驅動程式可以藉由設定 NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK 旗標來覆寫此行為。 設定此旗標時,NDIS 會識別包含符合系結接收準則之數據的所有 NET_BUFFER 結構。 NDIS 表示 NET_BUFFER 結構,這些結構符合超載驅動程式的準則。 此旗標不會影響在其他系結上檢查回送或回送。

傳回值

沒有

言論

CoNDIS 迷你埠驅動程式需要 MiniportCoSendNetBufferLists 函式。 當過度交接的驅動程式呼叫 時 NdisCoSendNetBufferLists 函式中,NDIS 會呼叫系結迷你埠驅動程式的 MiniportCoSendNetBufferLists 函式。

NDIS 在 NetBufferLists 傳遞之 NET_BUFFER_LIST 結構連結清單的順序, 代表迷你埠驅動程式應該傳輸網路數據的順序。 此外,迷你埠驅動程序應該從多個 MiniportCoSendNetBufferLists 傳送 NET_BUFFER_LIST 結構, 迷你埠驅動程式接收 結構的順序呼叫。

CoNDIS 迷你埠驅動程序必須接受 NDIS 發出的所有傳送要求,方法是呼叫 MiniportCoSendNetBufferLists 函式。 如果迷你埠驅動程式無法立即完成傳送要求,驅動程式必須在佇列中保存要求,才能完成要求。 當傳送要求擱置時,迷你埠驅動程式會保留 NET_BUFFER_LIST 結構的擁有權,以及與 NET_BUFFER_LIST 結構相關聯的所有資源。

迷你埠驅動程序必須呼叫 NdisMCoSendNetBufferListsComplete 函式,以完成所有 CoNDIS 傳送要求。 為了改善計算機效能,驅動程式可以建立連結清單,其中包含來自多個傳送要求的 NET_BUFFER_LIST 結構。 然後,驅動程式可以在單一呼叫中傳遞這類連結清單,以 NdisMCoSendNetBufferListsComplete

此外,您應該假設迷你埠驅動程式無法在驅動程式呼叫 NdisMCoSendNetBufferListsComplete時,立即存取 NET_BUFFER_LIST 結構和其他相關聯的資源。

MiniportCoSendNetBufferLists 函式必須同步存取其內部網路數據佇列,以及驅動程式的其他 MiniportXxx 存取相同佇列的函式。 迷你埠驅動程式可以使用微調鎖定來同步處理佇列的存取。

通訊協定驅動程式會負責根據所選取的系結迷你埠驅動程序的媒體類型來判斷所需的網路數據。 不過,通訊協定驅動程式可以提供網路數據,指定小於所選媒體之最小封包大小的封包。 在此情況下,如果選取的媒體對傳輸封包大小施加最小長度需求,MiniportCoSendNetBufferLists 必須將封包填補為零。

NDIS 會在 IRQL<= DISPATCH_LEVEL 呼叫 MiniportCoSendNetBufferLists

範例

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

例如,若要定義名為 “MyCoSendNetBufferLists” 的 MiniportCoSendNetBufferLists 函式,請使用 MINIPORT_CO_SEND_NET_BUFFER_LISTS 類型,如下列程式代碼範例所示:

MINIPORT_CO_SEND_NET_BUFFER_LISTS MyCoSendNetBufferLists;

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

_Use_decl_annotations_
VOID
 MyCoSendNetBufferLists(
    NDIS_HANDLE  MiniportVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendFlags
    )
  {...}

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

如需 Use_decl_annotations的相關信息,請參閱 批注函式行為

要求

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

另請參閱

MiniportCoCreateVc

NET_BUFFER

NET_BUFFER_LIST

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete