Qt:从getmac获取传输名称

时间:2018-03-23 12:32:51

标签: c++ qt

我正在使用 QNetworkInterface 类来获取网络接口的mac id。但是,没有选项来获取网络接口的传输名称(GUID)。有人可以帮我这个。请参考图像,我需要使用Qt api从图像中突出显示的部分。 enter image description here

1 个答案:

答案 0 :(得分:0)

经过一些谷歌搜索后,我可以获得传输名称。这是代码: -

#include <iostream>
#include <WinSock2.h>
#include <iphlpapi.h>

#pragma comment(lib, "Iphlpapi.lib")

using namespace std;

int main() {
    PIP_INTERFACE_INFO pInfo = nullptr;
    ULONG ulOutBufLen = 0;
    DWORD dwRetVal = 0;

    if (GetInterfaceInfo(NULL, &ulOutBufLen)
        == ERROR_INSUFFICIENT_BUFFER) {
        pInfo = (IP_INTERFACE_INFO *)malloc(ulOutBufLen);
    }

    dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen);

    if (dwRetVal == NO_ERROR) {
        printf("Number of Adapters: %ld\n\n", pInfo->NumAdapters);

        for (auto i = 0; i<pInfo->NumAdapters; i++) {
            wcout<<"Adapter Name: " << pInfo->Adapter[i].Name << endl;
            printf("Adapter Index: %ld\n", pInfo->Adapter[i].Index);
            printf("\n");
        }
    }
    else {
        printf("GetInterfaceInfo failed.\n");
        LPVOID lpMsgBuf;

        if (FormatMessage(
            FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_FROM_SYSTEM |
            FORMAT_MESSAGE_IGNORE_INSERTS,
            NULL,
            dwRetVal,
            MAKELANGID(LANG_NEUTRAL,
                SUBLANG_DEFAULT), /* Default language */
                (LPTSTR)&lpMsgBuf,
            0,
            NULL)) {
            printf("Error: %s", lpMsgBuf);
        }

        LocalFree(lpMsgBuf);
    }

    return 0;
}
相关问题