我们都知道中间层必定要注册一个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找不出来。大牛们给个原型吧