ape238rs 发表于 2011-8-20 23:29:59

C++结构体翻译为VB,急用!

我用GetIfTable获取网络每秒速度在XP下很正常,在Windows7 x86中调用失败,于是换用GetIfTable2,但在网上找不到MIB_IF_ROW2和MIB_IF_TABLE2结构的VB声明代码,只好勉强的翻译了一下,最后获取失败。我的工程代码很少,请帮忙看一下,急用!


马大哈 发表于 2011-8-21 01:51:45

这函数还没用过,不知道有没有人用过,帮顶顶先,睡觉了:)

ape238rs 发表于 2011-8-21 14:01:21

急用啊,哪位兄弟帮忙看一下。

Tesla.Angela 发表于 2011-8-21 23:25:56

告诉你一个原则:
1.先确定C语言的变量类型的长度(用sizeof获取)
2.长度为1用byte,长度为2用integer,长度为4用long,长度大于四用byte数组
3.float用single,double用double

ape238rs 发表于 2011-8-22 11:56:09

代码已修改,暂时看不出问题了,但在Win7下还是获取不到数据。GetIfTable2的返回值是0,说明已调用成功,但NumEntries的值却很不正常,太大了,InOctets和OutOctets仍然是0。


马大哈 发表于 2011-8-24 21:22:18

木有WIN7.......

你试试把获取到的结构块用WINHEX看看,检查一下出问题的成员是否正常

iloveqqp 发表于 2012-3-9 08:33:02

TA說得真好學習了

diddom 发表于 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;
WCHAR                      Description;
ULONG                      PhysicalAddressLength;
   UCHAR                     PhysicalAddress;
   UCHAR                     PermanentPhysicalAddress;
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;

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

这位老兄不知道还在不在~在的话 一起把它完成
页: [1]
查看完整版本: C++结构体翻译为VB,急用!