獲取網路卡的相關資訊

chief1985發表於2008-10-12
導讀:


作者姓名 安靜
文章原始出處 北京163社群 C版


////////////////////////////////////////////////////////////////
//執行本程式需要安裝Microsoft Platform SDK .這個可以去MS下載
// http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
//作者:安靜
//mail: aweiken@163.com
//10:56 2002-1-31 start
//14:44 2002-2-2  fix some bug.
//////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include
#include
#include "Iphlpapi.h"

using namespace std;


PIP_ADAPTER_INFO pinfo=NULL;
unsigned long len=0;

CString macaddress;
CString    description;
CString    type;
CString    subnet;
CString    IpAddress;
CString    gateway;
CString    PrimaryWinsServer;
CString    dhcp;

void GetInfo();
void ParseData();
void OutPut(CString str);

void main()
{
    
    
    cout<<"------------------------網路卡資訊檢測---------------------/n";
    GetInfo();
    
}

void GetInfo()
{
    if (pinfo!=NULL)
        delete (pinfo);
    unsigned  long nError;
    nError    =    GetAdaptersInfo(pinfo,&len);  //1??üoˉêy
    if (nError==0)
    {
        ParseData();            
    }
    if (nError==ERROR_NO_DATA)
    {
        OutPut("沒有網路裝置資訊");
    }
    if (nError==ERROR_NOT_SUPPORTED)
    {
        OutPut("GetAdaptersInfo不支援本系統");
    }
    if (nError==ERROR_BUFFER_OVERFLOW)
    {
        pinfo= (PIP_ADAPTER_INFO)malloc(len);
        nError    =    GetAdaptersInfo(pinfo,&len);
        if (nError==0)
        {
            ParseData();            
        }
    }
    
    return;
}
void ParseData()
{

    if (pinfo!=NULL)
    {
        macaddress.Format("%02X:%02X:%02X:%02X:%02X:%02X",pinfo->Address[0],pinfo->Address[1],pinfo->Address[2],pinfo->Address[3],pinfo->Address[4],pinfo->Address[5]);
        description    =    pinfo->Description;
        type.Format("%d",pinfo->Type);
        
         PIP_ADDR_STRING pAddressList = &(pinfo->IpAddressList);
         IpAddress    ="";
          do
          {
              IpAddress    +=    pAddressList->IpAddress.String;
             pAddressList = pAddressList->Next;
             if (pAddressList != NULL)
                IpAddress    +="/r/n";
          } while (pAddressList != NULL);

        subnet.Format("%s",pinfo->IpAddressList.IpMask.String);
        gateway.Format("%s",pinfo->GatewayList.IpAddress.String);
        if (pinfo->HaveWins)
            PrimaryWinsServer.Format("%s",pinfo->PrimaryWinsServer.IpAddress.String );
        else
            PrimaryWinsServer.Format("%s","N/A" );
        if (pinfo->DhcpEnabled )
            dhcp.Format("%s",pinfo->DhcpServer.IpAddress.String );
        else
            dhcp.Format("%s","N/A");
        pinfo = pinfo->Next;
    }
    OutPut("網路裝置為:/t"+description);    
    OutPut("Mac地址為:/t"+macaddress);
    OutPut("網路卡型別:/t"+type);
    OutPut("IP地址:/t"+IpAddress);
    OutPut("子網掩碼:/t"+subnet);
    OutPut("閘道器:/t"+gateway);
    OutPut("主Wins伺服器:/t"+PrimaryWinsServer);
    OutPut("dhcp伺服器:/t"+dhcp);




}

void OutPut(CString str)
{
    cout<}


本文轉自
http://www.18839.com/Edu/A11/11005/11/2005120578958.html

相關文章