共用方式為


從 CoNDIS 驅動程式傳送NET_BUFFER結構

下圖說明基本的 CoNDIS 傳送作業,其中包含通訊協定驅動程式、NDIS 和迷你埠驅動程式。

此圖說明與通訊協定驅動程式、NDIS 和迷你埠驅動程式相關的基本 CoNDIS 傳送作業。

如上圖所示,通訊協定驅動程式會呼叫 NdisCoSendNetBufferLists 函式,以在虛擬連線上傳送 NET_BUFFER_LIST 結構, (VC) 。 NDIS 接著會呼叫迷你埠驅動程式的 MiniportCoSendNetBufferLists 函式,將NET_BUFFER_LIST結構轉送到基礎迷你埠驅動程式。

所有以NET_BUFFER為基礎的傳送作業都是非同步。 因此,迷你埠驅動程式一律會呼叫 NdisMCoSendNetBufferListsComplete 函式,並在完成傳送資料時提供適當的狀態碼。 迷你埠驅動程式可以完成與其他NET_BUFFER_LIST結構無關的每個NET_BUFFER_LIST結構的傳送作業。 每次迷你埠驅動程式呼叫NdisMCoSendNetBufferListsComplete函式時,NDIS 會呼叫通訊協定驅動程式的ProtocolCoSendNetBufferListsComplete

通訊協定驅動程式可以在 NDIS 呼叫通訊協定驅動程式的ProtocolCoSendNetBufferListsComplete函式時,立即回收NET_BUFFER_LIST結構和所有相關聯結構和資料的擁有權。

迷你埠驅動程式或 NDIS 可以依任何順序傳回NET_BUFFER_LIST結構。 但通訊協定驅動程式保證未修改附加至每個 NET_BUFFER_LIST結構的NET_BUFFER 結構清單。

通訊協定驅動程式會將NET_BUFFER_LIST結構中的SourceHandle成員設定為與 NdisCoSendNetBufferLists 的 NdisVcHandle參數相同的值。 NDIS 會使用 SourceHandle 成員,將NET_BUFFER_LIST結構傳回傳送NET_BUFFER_LIST結構的通訊協定驅動程式。

中繼驅動程式也會將 NET_BUFFER_LIST 結構中的 SourceHandle 成員設定為 NdisVcHandle 值。 如果中繼驅動程式轉送傳送要求,則驅動程式必須先儲存超載驅動程式所提供的 SourceHandle 值,才能寫入 SourceHandle 成員。 當 NDIS 傳回轉送NET_BUFFER_LIST結構給中繼驅動程式時,中繼驅動程式必須還原儲存的 SourceHandle

通訊協定驅動程式可以使用與無連線驅動程式相同的機制來取消傳送要求。 如需取消傳送要求的詳細資訊,請參閱 取消傳送作業