2

我正在遍历 NET_BUFFER 的 MDL 链来获取相关数据。用于指示已用数据空间开始位置的两个宏 ( NET_BUFFER_DATA_OFFSET()&NET_BUFFER_CURRENT_MDL_OFFSET()​​ ) 让我有些困惑,因为我一直观察到它们返回相同的值,而且看起来都同样可用。

应该使用哪一个?他们之间有什么区别?

4

1 回答 1

2

好的,我知道了。
显然,如果当前 mdl不指向第一个 mdl,NET_BUFFER_DATA_OFFSET()则将指示所有 mdl 的大小,直到当前一个 mdl 加上当前自己的偏移量,而NET_BUFFER_CURRENT_MDL_OFFSET()将仅指示当前 mdl 内的偏移量,这就是你真正需要的如果你使用NET_BUFFER_CURRENT_MDL()宏。
一个优化的东西。

于 2012-02-02T10:53:14.903 回答