织梦CMS - 轻松建站从此开始!

罗索

用IP Helper API来获得网卡地址

罗索客 发布于 2004-08-24 14:30 点击:次 
用IP Helper API来获得网卡地址 ×××××××××××××××××××××××××××××××××××××××× 呵呵,最常用的方法放在了最后 用 GetAdaptersInfo函数 这里获得了一个网卡的大部分信息,朋友们可酌情选用^_^ #include Iphlpapi.h #pragma comment
TAG:

用IP Helper API来获得网卡地址
××××××××××××××××××××××××××××××××××××××××

   呵呵,最常用的方法放在了最后

   用 GetAdaptersInfo函数

   这里获得了一个网卡的大部分信息,朋友们可酌情选用^_^

#include <Iphlpapi.h>
#pragma comment(lib, "Iphlpapi.lib")

typedef struct tagAdapterInfo          
{
    char szDeviceName[128];           // 名字
    char szIPAddrStr[16];             // IP
    char szHWAddrStr[18];             // MAC
    DWORD dwIndex;                    // 编号          
}INFO_ADAPTER, *PINFO_ADAPTER;

INFO_ADAPTER    AdapterList[ 10];               // 网卡列表,比如十个
/****************************************************************************
*    Name & Params::
*    formatMACToStr
*    (
*        LPSTR lpHWAddrStr : 显示出来的加 "-"的 mac字符串
*             unsigned char *HWAddr :  传入的MAC字符串
*    )
*    Purpose:
*      将用户输入的MAC地址字符转成相应格式
****************************************************************************/
void formatMACToStr(LPSTR lpHWAddrStr,const unsigned char *HWAddr)
{
    int i;
    short temp;
    char szStr[3];

    strcpy(lpHWAddrStr, "");
    for (i=0; i<6; ++i)
    {
        temp = (short)(*(HWAddr + i));
        _itoa(temp, szStr, 16);
        if (strlen(szStr) == 1)    strcat(lpHWAddrStr, "0");
        strcat(lpHWAddrStr, szStr);
        if (i<5)    strcat(lpHWAddrStr, "-");         // 加上 -
    }
}

// 填充结构
void GetAdapterInfo()
{
    char tempChar;
    ULONG uListSize=1;
    PIP_ADAPTER_INFO pAdapter;   // 定义PIP_ADAPTER_INFO结构存储网卡信息
    int nAdapterIndex = 0;

    DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar,
                        &uListSize); // 关键函数

    if (dwRet == ERROR_BUFFER_OVERFLOW)
    {
    PIP_ADAPTER_INFO pAdapterListBuffer =
                     (PIP_ADAPTER_INFO)new(char[uListSize]);
    dwRet = GetAdaptersInfo(pAdapterListBuffer, &uListSize);
    if (dwRet == ERROR_SUCCESS)
    {
         pAdapter = pAdapterListBuffer;
         while (pAdapter) // 枚举网卡
              {
        CString strTemp =  pAdapter->AdapterName;   // 网卡名字
        strTemp = "\\\\Device\\\\NPF_" + strTemp;    // 加上前缀
          strcpy(AdapterList[nAdapterIndex].szDeviceName,strTemp);

    strcpy(AdapterList[nAdapterIndex].szIPAddrStr,
                      pAdapter->IpAddressList.IpAddress.String );// IP

    formatMACToStr( AdapterList[nAdapterIndex].szHWAddrStr,
                      pAdapter->Address ); // MAC!!!!!!!!!!!!!!!!!

    AdapterList[nAdapterIndex].dwIndex = pAdapter->Index;           // 编号

    pAdapter = pAdapter->Next;

    nAdapterIndex ++;
    }
    delete pAdapterListBuffer;
    }
}
} (PiggyXP)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200408/762.html]
本文出处: 作者:PiggyXP
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容