Retrieving NIC information using SNMP queries

Environment: VC6

For networking applications, the need to know what NICs are in a system is critical so that sockets can be bound to the proper device. Windows programming allows many ways to retrieve information about each NIC, but there is one way that seems to be the preferred method for Microsoft. The IPCONFIG program, which comes with Windows NT/2000, and the WINIPCFG program, which comes with Windows 9x/ME, both use a DLL called INETMIB1.DLL to retrieve information about each NIC using SNMP queries.

I created this program with the help of information I found in several places on Internet, mostly from posts on CodeGuru.com by Stas Khirman and Quinton Tormanen. The sample code didn't quite suit my needs, so I modified it. The source code and executable in the ZIP file allow all NIC information to be retrieved with two function calls: GetNICCount() and GetNICInfo().

Downloads

Download source - 24 Kb


Comments

  • HELP!!

    Posted by Legacy on 02/18/2004 12:00am

    Originally posted by: Nalli

    I want to obtain the CPU usage of all the Computers in a Lan network using MIB!!!

    Reply
  • Some machines show wrong description

    Posted by Legacy on 02/04/2004 12:00am

    Originally posted by: Annit Bhattacharya

    Some computers show "NDIS 5.0 Driver" as the description instead of the real one as shown by IPCONFIG. I did an SNMP walk and saw that this the 1.3.6.1.2.1.2.2.1.2 entry only contained "MS TCP Loopback interface" and "NDIS 5.0 driver" so the code is ok.

    Is there any way to get the MAC description as reported by IPCONFIG?

    Reply
  • How to get SNMP more information, top ten talkers in a network and more...

    Posted by Legacy on 12/06/2003 12:00am

    Originally posted by: balazs

    How to get SNMP info:
    -info about other computers
    -top ten talkers in a network,
    -number of packege send/receive
    -and more statistic?

    Thx

    Reply
  • How to use SNMP to get the network hierarchy?

    Posted by Legacy on 05/26/2003 12:00am

    Originally posted by: Cristi

    I tried other methods than SNMP but I couldn't get pass a switch.
    Thank's at least for reading this.

    Reply
  • How to get SNMP info about other computers

    Posted by Legacy on 11/06/2002 12:00am

    Originally posted by: Marek Mondok

    Can I get subnet mask, card description, speed rate, duplex mode, type, MAC address and other info about other (remote) computers in network?
    How to use SNMP in this case?

    Reply
  • Doesn't work under Win 95

    Posted by Legacy on 05/08/2002 12:00am

    Originally posted by: Asif Ahsan

    It seems to work okay under Win 98/98SE/ME/2K and XP but I couldn't make it work under Win 95 a,b and c. If I select LOOPBACK ADAPTERS and DIALUP ADAPTERS and if the system has an Ethernet Card (NIC) installed, ViewNIC returns all invalid information about the Ethernet Device. If I do not select LOOPBACK and DIALUP ADAPTERS or If I just select any one of those ViewNIC returns all invalid information. Anyone knows why ?

    Thanks,
    Asif Ahsan

    Reply
  • get Same info in C# with much less effort

    Posted by Legacy on 04/28/2002 12:00am

    Originally posted by: Mark Brooks


    Here is a different approach to the same problem using the new .net System.Management calls. The code is c#... but C++ should be similar.

    Here is the c# code to get the Mac ID:

    public string GetMacID()
    {

    ManagementObjectSearcher query =

    new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") ;

    ManagementObjectCollection queryCollection = query.Get();

    foreach( ManagementObject mo in queryCollection )

    {

    // MacAddress

    Console.WriteLine( "MacAddress {0}", mo["MacAddress"]);

    }

    Reply
  • Bug fix for a crash - esp. for logical adapters

    Posted by Legacy on 02/05/2002 12:00am

    Originally posted by: Shaun Staley

    I found a bug with the code. I noticed on some machines that it would crash. Those machines had logical PPP adapters on them. The machines without out the logical PPP adapters worked great.

    When debugging I looked at:
    UINT MibII::GetNICCount(BOOL bDialup, BOOL bLoopback)

    It appeared to work ok, however I think that the correct fix may need to be in that method.

    The problem was in:
    void MibII::GetNICInfo(tSTRUCTNICINFO *pNICInfo)

    This section of code here is the problem:
    // Find the Interface Entry Number that matches the Interface Index.
    for (j = 0; j < m_ifCount; j++)
    {
    if (m_ifIndex[i] == m_ifEntryNum[j])
    break;
    }

    That code assumes that it will find the adapter. However, with the PPP adapters installed, it wouldn't find it. So it would grab some piece of memory and try to do a memcpy on it below. The data was all garbage. So what you need to do is add the following after that for loop:

    // Couldn't find one that match.
    if (j == m_ifCount)
    break;

    That will skip that adapter and go on the next. That's fine since it's garbage anyway.

    This fix works, but it's not the best one. It should be fixed where the problem occurs. Since I was under a time constraint I didn't bother investigating too deeply.

    I hope it fixes any problems you may have.

    Reply
  • How can I verify that a GateWay IP is a real one

    Posted by Legacy on 12/18/2001 12:00am

    Originally posted by: Oren Farber

    Hi all

    I get the default gateway using snmp .
    How can I verify that a GateWay IP is a real IP
    and if it not a real IP how can I get my real gate way address

    thanks

    Reply
  • Another BUG correction

    Posted by Legacy on 11/14/2001 12:00am

    Originally posted by: Adam Peterson

    Inside the function: int CViewNICDlg::GetNICInfo()

    Add the line : memset(m_pNICInfo, 0, sizeof(tSTRUCTNICINFO) * m.GetIPCount());

    After the memory is allocated : m_pNICInfo = new tSTRUCTNICINFO [m.GetIPCount()];

    NOTE: this is including the fix noted earlier about using m_ifCount to get the count of IP addresses, just added a function GetIPCount() to return this value.

    Problem was if a NIC didn't have a valid IP address like in the middle of a "ipconfig /release_all" the structure was filled with random data and since a loop depended on the MAC address length being filled out correctly app would get an access violation and a crash.

    Reply
  • Loading, Please Wait ...

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

  • It's not unusual for a company to use a variety of formal and informal file-sharing methods. Many methods are fraught with significant operational, financial, and legal risks in addition to other potentially negative business consequences. Strategic managed file transfer (MFT) software and services help connect the business "dots" between the various ad hoc and more systematic ways that files are moved. Read this white paper to learn how the right MFT solution, can bring order, structure, and, importantly, …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds