Let me answer myself, as I asked the same thing in another forum.
WMI is good, but IpHlpApi is easier to use instead:
#include <winsock2.h> #include <iphlpapi.h> int main(int argc, char *argv[]) { PMIB_IFTABLE pIfTable; MIB_IFROW ifRow; PMIB_IFROW pIfRow = &ifRow; DWORD dwSize = 0; // first call returns the buffer size needed DWORD retv = GetIfTable(pIfTable, &dwSize, true); if (retv != ERROR_INSUFFICIENT_BUFFER) WriteErrorAndExit(retv); pIfTable = (MIB_IFTABLE*)malloc(dwSize); retv = GetIfTable(pIfTable, &dwSize, true); if (retv != NO_ERROR) WriteErrorAndExit(retv); // Get index int i,j; printf("\tNum Entries: %ld\n\n", pIfTable->dwNumEntries); for (i = 0; i < (int) pIfTable->dwNumEntries; i++) { pIfRow = (MIB_IFROW *) & pIfTable->table[i]; printf("\tIndex[%d]:\t %ld\n", i, pIfRow->dwIndex); printf("\tInterfaceName[%d]:\t %ws", i, pIfRow->wszName); printf("\n"); printf("\tDescription[%d]:\t ", i); for (j = 0; j < (int) pIfRow->dwDescrLen; j++) printf("%c", pIfRow->bDescr[j]); printf("\n"); ...
source share