找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 9789|回复: 7

[求助] C++结构体翻译为VB,急用!

 火.. [复制链接]

1

主题

4

回帖

0

精华

铜牌会员

积分
84
发表于 2011-8-20 23:29:59 | 显示全部楼层 |阅读模式
我用GetIfTable获取网络每秒速度在XP下很正常,在Windows7 x86中调用失败,于是换用GetIfTable2,但在网上找不到MIB_IF_ROW2和MIB_IF_TABLE2结构的VB声明代码,只好勉强的翻译了一下,最后获取失败。我的工程代码很少,请帮忙看一下,急用!
c1.zip (4.68 KB, 下载次数: 9786)

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-8-21 01:51:45 | 显示全部楼层
这函数还没用过,不知道有没有人用过,帮顶顶先,睡觉了
我就是嗷嗷叫的老马了......

1

主题

4

回帖

0

精华

铜牌会员

积分
84
 楼主| 发表于 2011-8-21 14:01:21 | 显示全部楼层
急用啊,哪位兄弟帮忙看一下。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-8-21 23:25:56 | 显示全部楼层
告诉你一个原则:
1.先确定C语言的变量类型的长度(用sizeof获取)
2.长度为1用byte,长度为2用integer,长度为4用long,长度大于四用byte数组
3.float用single,double用double

1

主题

4

回帖

0

精华

铜牌会员

积分
84
 楼主| 发表于 2011-8-22 11:56:09 | 显示全部楼层
代码已修改,暂时看不出问题了,但在Win7下还是获取不到数据。GetIfTable2的返回值是0,说明已调用成功,但NumEntries的值却很不正常,太大了,InOctets和OutOctets仍然是0。
c1.zip (5.58 KB, 下载次数: 10147)

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-8-24 21:22:18 | 显示全部楼层
木有WIN7.......

你试试把获取到的结构块用WINHEX看看,检查一下出问题的成员是否正常
我就是嗷嗷叫的老马了......

0

主题

126

回帖

0

精华

铜牌会员

积分
226
发表于 2012-3-9 08:33:02 | 显示全部楼层
TA說得真好  學習了

96

主题

158

回帖

4

精华

核心会员

积分
6513
发表于 2012-5-11 10:36:18 | 显示全部楼层
本帖最后由 diddom 于 2012-5-11 11:42 编辑

没有正确的结构,不可能得到正确的记忆体大小配置
MIB_IF_ROW2和MIB_IF_TABLE2的结构用於Vista以上的OS
且看其宣告都是64位元在用的
返回值为零的话好像代表是要取出的记忆体大小配置错误
必须再重新跟系统要更多更大的记忆体区块给他
回过头来你还是必须写出正确的VB的MIB_IF_ROW2和MIB_IF_TABLE2的结构

typedef struct _MIB_IF_ROW2 {
  NET_LUID                   InterfaceLuid;
  NET_IFINDEX                InterfaceIndex;
  GUID                       InterfaceGuid;
  WCHAR                      Alias[IF_MAX_STRING_SIZE + 1];
  WCHAR                      Description[IF_MAX_STRING_SIZE + 1];
  ULONG                      PhysicalAddressLength;
   UCHAR                     PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
   UCHAR                     PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
  ULONG                      Mtu;
  IFTYPE                     Type;
  TUNNEL_TYPE                TunnelType;
  NDIS_MEDIUM                MediaType;
  NDIS_PHYSICAL_MEDIUM       PhysicalMediumType;
  NET_IF_ACCESS_TYPE         AccessType;
  NET_IF_DIRECTION_TYPE      DirectionType;
  struct {
    BOOLEAN HardwareInterface  :1;
    BOOLEAN FilterInterface  :1;
    BOOLEAN ConnectorPresent   :1;
    BOOLEAN NotAuthenticated  :1;
    BOOLEAN NotMediaConnected  :1;
    BOOLEAN Paused  :1;
    BOOLEAN LowPower  :1;
    BOOLEAN EndPointInterface  :1;
  } InterfaceAndOperStatusFlags;
  IF_OPER_STATUS             OperStatus;
  NET_IF_ADMIN_STATUS        AdminStatus;
  NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
  NET_IF_NETWORK_GUID        NetworkGuid;
  NET_IF_CONNECTION_TYPE     ConnectionType;
  ULONG64                    TransmitLinkSpeed;
  ULONG64                    ReceiveLinkSpeed;
  ULONG64                    InOctets;
  ULONG64                    InUcastPkts;
  ULONG64                    InNUcastPkts;
  ULONG64                    InDiscards;
  ULONG64                    InErrors;
  ULONG64                    InUnknownProtos;
  ULONG64                    InUcastOctets;
  ULONG64                    InMulticastOctets;
  ULONG64                    InBroadcastOctets;
  ULONG64                    OutOctets;
  ULONG64                    OutUcastPkts;
  ULONG64                    OutNUcastPkts;
  ULONG64                    OutDiscards;
  ULONG64                    OutErrors;
  ULONG64                    OutUcastOctets;
  ULONG64                    OutMulticastOctets;
  ULONG64                    OutBroadcastOctets;
  ULONG64                    OutQLen;
} MIB_IF_ROW2, *PMIB_IF_ROW2;

光是看到这麽大~~~~~头就变大了

这位老兄不知道还在不在~在的话 一起把它完成
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表