GetAdaptersInfo函数是ms提供给程序员用来枚举网卡信息API函数,它被封装在MS SDK中,如果你安装了MSSDK在include 和lib文件夹下,可以找到iphlpapi.h 和对应的iphlpapi.lib。很遗憾,在VC6下你不的不面对一系列头文件中变量的声明冲突问题,我暂时还没有找到解决方案。不过有却有个用GetAdaptersInfo的成熟方法,使用动态链接。
为了使用动态链接,必须保证系统中存在 iphlpapi.dll 这个动态链接库.
GetAdaptersInfo 函数 在MSSDK中声明为
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG);
注意在声明此函数类型时,请在类型前加入PASCAL调用约定 __stdcall
typedef DWORD (__stdcall *PGAINFO)(PIP_ADAPTER_INFO,PULONG);
VC6中没有PIP_ADAPTER_INFO的结构,所以你必须自己声明一个,在线搜索MSDN:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO *Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
为了使用动态链接,必须保证系统中存在 iphlpapi.dll 这个动态链接库.
GetAdaptersInfo 函数 在MSSDK中声明为
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG);
注意在声明此函数类型时,请在类型前加入PASCAL调用约定 __stdcall
typedef DWORD (__stdcall *PGAINFO)(PIP_ADAPTER_INFO,PULONG);
VC6中没有PIP_ADAPTER_INFO的结构,所以你必须自己声明一个,在线搜索MSDN:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO *Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;