NDIS Passthru 前視緩衝區 含義

2021-09-06 04:03:38 字數 597 閱讀 7707

前視緩衝區:lookaheadbuffer

這個緩衝區是給協議一段packet的內容,讓協議來決定是否接受這個報文。

考慮資料報的接收,如果我們只需要看見資料內容的前幾個位元組(如tcp頭)就可以決定這個包是否是本協議所需要處理的,那麼顯然下層驅動就沒有必要提交整個資料報,只提供乙個包開始的幾個位元組就可以了。

這個是有miniport驅動來決定究竟那個lookaheadbuffer的大小的,這個緩衝區是從報文的 ip頭開始的一段緩衝區,也有可能是包含了整個的 ip報文,這個時候lookaheadbuffersize=packesize了。

如下面的**:

if (lookaheadbuffersize != packetsize)

else

這段程式就是判斷lookaheadbuffersize是否等於packetsize,如果等於那就直接提交,如果不等於,就呼叫ndistranferdata來把剩餘的資料都取上來,然後在一起提交。

其中,headbuffer和lookaheadbuffer上不重疊的,指向的是不同的位址,packetsize是不包括headbuffer的大小的,headbuffer一般是乙太網的頭。

【參考資料 感謝作者】

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

使用者程序緩衝區和核心緩衝區

常常聽到有程式設計師會跟你討論 我們在讀寫檔案的時候,系統是有快取的 但實際上有一部分人把使用者程序緩衝區和系統空間的緩衝區的概念混淆了,包括這兩種緩衝區的用法和所要解決的問題,還有其它類似的概念。本文就來區分一下不同的緩衝區概念 主要針對類unix平台 使用者程序和作業系統的關係 首先我用一張圖來...

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...