中繼驅動程式網路資料管理
中繼驅動程式會從較高層級驅動程式接收具有一或多個相關聯 MDL 的 NET_BUFFER_LIST 結構,以透過網路傳送。 如果驅動程式有無連線的下邊緣,則中繼驅動程式可以將資料傳遞至基礎驅動程式,方法是呼叫 NdisSendNetBufferLists ,如果驅動程式有連接導向的下邊緣,則呼叫 NdisCoSendNetBufferLists 。 或者,中繼驅動程式可以採取一些動作來修改鏈結緩衝區的內容,或相對於其他傳輸的傳入資料排序或時間。
根據中繼驅動程式的目的,這類驅動程式可以重新封裝鏈結至傳入NET_BUFFER_LIST結構的緩衝區。 例如,中繼驅動程式會在下列情況下重新封裝網路資料:
中繼驅動程式會從過度配置通訊協定驅動程式接收較大的資料緩衝區,而不是透過基礎媒體在單一緩衝區中傳送。 因此,中繼驅動程式必須將傳入資料分割成較小的緩衝區。
中繼驅動程式會先壓縮或加密資料,以變更網路資料的長度或內容,然後再轉送每個傳送至基礎驅動程式。
如需建立網路資料管理的相關資訊,請參閱 通訊協定驅動程式緩衝區管理。
NDIS 提供介面來複製和片段 NET_BUFFER_LIST 結構。 如需複製和片段結構的詳細資訊,請參閱 衍生NET_BUFFER_LIST結構。
NET_BUFFER_LIST結構可以視需要配置、在驅動程式初始化時間或在 ProtocolBindAdapterEx 函式中配置。 中繼驅動程式開發人員可以視需要並基於效能考慮,在初始化階段配置一些結構,讓 ProtocolReceiveNetBufferLists 預先配置資源,以便複製傳入資料以傳送至較高層級的驅動程式,並讓 MiniportSendNetBufferLists 有可用的 NET_BUFFER_LIST 結構 (,而且可能) 將傳入的網路資料傳遞至下一個較低的驅動程式。
如果中繼驅動程式將資料傳送或接收的資料複製到新的緩衝區或緩衝區,而最後一個緩衝區中實際資料的長度小於緩衝區的配置長度,則中繼驅動程式可以呼叫 NdisAdjustMdlLength ,將緩衝區調整為數據的實際長度。
具有無連接下邊緣的中繼驅動程式一律會從其 ProtocolReceiveNetBufferLists 函式接收來自基礎迷你埠配接器的傳入資料。
具有連接導向下邊緣的中繼驅動程式一律會從其 ProtocolCoReceiveNetBufferLists 函式接收來自基礎迷你埠配接器的傳入資料。