我们都知道中间层必定要注册一个PROTOCOL,即而得到PNDIS_PROTOCOL_BLOCK,然后注册一个Driver既而得到PNDIS_M_DRIVER_BLOCK,然后Bd相关网卡,得到PNDIS_MINIPORT_BLOCK和PNDIS_OPEN_BLOCK。我的问题
一、下层怎么就必须一定要通过自己注册的PNDIS_OPEN_BLOCK收发数据呢?tcp也好,netbios也好都是有是自己的PNDIS_PROTOCOL_BLOCK和对应网卡PNDIS_OPEN_BLOCK,凭什么就单单发送给咱们的PNDIS_OPEN_BLOCK,晕死,想了好多天想不明白这个问题,
二、下面这个OPEN_BLOCK结构是ddk定义得来的
typedef struct _NDIS_COMMON_OPEN_BLOCK
{
PVOID MacHandle; // needed for backward compatibility
NDIS_HANDLE BindingHandle; // 这东西指向哪?(被BIND的上层tcp PNDIS_PROTOCOL_BLOCK?)
PNDIS_MINIPORT_BLOCK MiniportHandle; //
PNDIS_PROTOCOL_BLOCK ProtocolHandle; // pointer to our protocol
NDIS_HANDLE ProtocolBindingContext;// context when calling ProtXX funcs
PNDIS_OPEN_BLOCK MiniportNextOpen; // used by adapter's OpenQueue
PNDIS_OPEN_BLOCK ProtocolNextOpen; // used by protocol's OpenQueue
NDIS_HANDLE MiniportAdapterContext; // 这东西的原型定义,windbg找不出来。大牛们给个原型吧
一、下层怎么就必须一定要通过自己注册的PNDIS_OPEN_BLOCK收发数据呢?tcp也好,netbios也好都是有是自己的PNDIS_PROTOCOL_BLOCK和对应网卡PNDIS_OPEN_BLOCK,凭什么就单单发送给咱们的PNDIS_OPEN_BLOCK,晕死,想了好多天想不明白这个问题,
二、下面这个OPEN_BLOCK结构是ddk定义得来的
typedef struct _NDIS_COMMON_OPEN_BLOCK
{
PVOID MacHandle; // needed for backward compatibility
NDIS_HANDLE BindingHandle; // 这东西指向哪?(被BIND的上层tcp PNDIS_PROTOCOL_BLOCK?)
PNDIS_MINIPORT_BLOCK MiniportHandle; //
PNDIS_PROTOCOL_BLOCK ProtocolHandle; // pointer to our protocol
NDIS_HANDLE ProtocolBindingContext;// context when calling ProtXX funcs
PNDIS_OPEN_BLOCK MiniportNextOpen; // used by adapter's OpenQueue
PNDIS_OPEN_BLOCK ProtocolNextOpen; // used by protocol's OpenQueue
NDIS_HANDLE MiniportAdapterContext; // 这东西的原型定义,windbg找不出来。大牛们给个原型吧
解决方案 »
- [请教]位图显示问题
- 在安装IE插件即加载项时,弹出安装对话框时,如何利用BHO获得这个对话框的名字和点击的是哪个按钮?
- 如何知道CHtmlView中的 webbrowser宽度大小变化了。
- [讨论]如何提高网络传输的效率?(TCP)
- 请快帮我看看吧,数据库线程中连接执行后出错。
- 在VC里用STL的话,如何实现类的序列化..如果不用STL呢
- 全局hook...........截获WH_GETMESSAGE,在win9x下运行正常,w2k有问题!!
- 快来呀!这个网站(www.schip.com.cn)有免费
- OPENCV画图形
- Win32 : 请问各位平时是怎么使用TOOLTIPS控件, 小弟遇了点问题?
- 关于VirtualProtect()函数的问题
- 在Tree控件中点击一个节点,怎样让Edit控件获取焦点
希望可以帮到你,