日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NDIS6缓冲相关实验和经验

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NDIS6缓冲相关实验和经验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NET_BUFFER 用來描述一個數據包

NET_BUFFER_LIST 用來描述共享元數據(OOB帶外數據)的多個數據包

NET_BUFFER_LIST 可以是一個鏈表,即多個NBL連接在一起

NET_BUFFER 由多個MDL連接在一起構成,為什么這樣設計的,通常構造一個數據包的方法是自下而上,就是先構造包體,再構造包頭,包頭,包頭……

由于是這樣一個自下而上的過程,就有了 Retreat Advance 兩個動作,詳解請參考

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/net-buffer-list-structure

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/net-buffer-structure

WFP callout每種回調場景的offset都不一樣,參考資料

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/data-offset-positions

關于收發包NBL和NB的相關資料

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/indicating-received-ethernet-frames

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/sending-ethernet-frames

關于WFP callout包的資料

https://docs.microsoft.com/en-us/windows-hardware/drivers/network/packet-indication-format

簡單總結下來基本就是

1.WFP callout 除了STREAM path和FORWARD path,只會在回調中給一個NBL,而不是NBL?chain。

2.如果NBL中有多個NB,那么這些NB具有完全相同的2、3層地址。

?

不得不說自從微軟收購了github并將其應用在自己的msdn之后,微軟的文檔友好多了。而且微軟還有專門的職位叫"內容開發者",就專職寫文檔的。以前想寫個WFP賊費勁,啥啥沒有全靠猜,現在每個場景每個API文檔非常清晰。

?

另外關于MDL是否可以修改的問題,搜索了一些內容

https://community.osr.com/discussion/284088/netbufferlist-chain-using-same-mdl

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/a63fef1c-c7e6-451d-adc5-16de1e8c0b62/ndis-51-intermediate-driver-for-packet-encryptiondecryption-not-working-with-httpsys?forum=wdk

OSR中的以為NDIS架構師大神說在內核里都是假設MDL是可寫的,完全無視NBL中只讀標志。

然而第二個msdn論壇的有人反饋http.sys在作出錯誤回應時會使用只讀內存。

我之前給別人做NDIS驅動時就遇到這個問題,當時是在服務器上部署NDISFilter總是過一段時間莫名其妙出現寫Readonly故障,當時是Rebuild解決的,今天終于明白了,原來是這么回事。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的NDIS6缓冲相关实验和经验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。