得到网卡信息源代码

  • 来源: 互联网 作者: rocket   2008-03-18/11:59

  •     #include
    #include
    #include
    #include

    void main(void) {

    DWORD Err;

    PIP_ADAPTER_INFO pAdapterInfo, pAdapt;
    DWORD AdapterInfoSize;
    PIP_ADDR_STRING pAddrStr;

    //
    // Get the main IP configuration information for this machine using a FIXED_INFO structure
    //

    AdapterInfoSize = 0;
    if ((Err = GetAdaptersInfo(NULL, &AdapterInfoSize)) != 0)
    {
    if (Err != ERROR_BUFFER_OVERFLOW)
    {
    printf("GetAdaptersInfo sizing failed with error %d\n", Err);
    return;
    }
    }

    // Allocate memory from sizing information
    if ((pAdapterInfo = (PIP_ADAPTER_INFO) GlobalAlloc(GPTR, AdapterInfoSize)) == NULL)
    {
    printf("Memory allocation error\n");
    return;
    }


    // Get actual adapter information
    if ((Err = GetAdaptersInfo(pAdapterInfo, &AdapterInfoSize)) != 0)
    {
    printf("GetAdaptersInfo failed with error %d\n", Err);
    return;
    }

    pAdapt = pAdapterInfo;

    while (pAdapt)
    {
    switch (pAdapt->Type)
    {
    case MIB_IF_TYPE_ETHERNET:
    printf("\nEthernet adapter ");
    break;
    case MIB_IF_TYPE_TOKENRING:
    printf("\nToken Ring adapter ");
    break;
    case MIB_IF_TYPE_FDDI:
    printf("\nFDDI adapter ");
    break;
    case MIB_IF_TYPE_PPP:
    printf("\nPPP adapter ");
    break;
    case MIB_IF_TYPE_LOOPBACK:
    printf("\nLoopback adapter ");
    break;
    case MIB_IF_TYPE_SLIP:
    printf("\nSlip adapter ");
    break;
    case MIB_IF_TYPE_OTHER:
    default:
    printf("\nOther adapter ");
    }
    printf("%s:\n\n", pAdapt->AdapterName);

    printf("\tDescription . . . . . . . . : %s\n", pAdapt->Description);

    printf("\tPhysical Address. . . . . . : ");
    for (UINT i=0; i AddressLength; i++)
    {
    if (i == (pAdapt->AddressLength - 1))
    printf("%.2X\n",(int)pAdapt->Address[i]);
    else
    printf("%.2X-",(int)pAdapt->Address[i]);
    }

    printf("\tDHCP Enabled. . . . . . . . : %s\n", (pAdapt->DhcpEnabled ? "yes" : "no"));

    pAddrStr = &(pAdapt->IpAddressList);
    while(pAddrStr)
    {
    printf("\tIP Address. . . . . . . . . : %s\n", pAddrStr->IpAddress.String);
    printf("\tSubnet Mask . . . . . . . . : %s\n", pAddrStr->IpMask.String);
    pAddrStr = pAddrStr->Next;
    }

    printf("\tDefault Gateway . . . . . . : %s\n", pAdapt->GatewayList.IpAddress.String);
    pAddrStr = pAdapt->GatewayList.Next;
    while(pAddrStr)
    {
    printf("%52s\n", pAddrStr->IpAddress.String);
    pAddrStr = pAddrStr->Next;
    }

    printf("\tDHCP Server . . . . . . . . : %s\n", pAdapt->DhcpServer.IpAddress.String);
    printf("\tPrimary WINS Server . . . . : %s\n", pAdapt->PrimaryWinsServer.IpAddress.String);
    printf("\tSecondary WINS Server . . . : %s\n", pAdapt->SecondaryWinsServer.IpAddress.String);

    struct tm *newtime;

    // Display coordinated universal time - GMT
    newtime = gmtime(&pAdapt->LeaseObtained);
    printf( "\tLease Obtained. . . . . . . : %s", asctime( newtime ) );

    newtime = gmtime(&pAdapt->LeaseExpires);
    printf( "\tLease Expires . . . . . . . : %s", asctime( newtime ) );

    pAdapt = pAdapt->Next;
    }
    }

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多