是否有可能在Windows中使用Qt / C ++获取网络适配器设备名称(网络适配器描述)?
我使用了QNetworkInterface,但它只返回适配器名称。我想知道哪个适配器是USB以太网。
QNetworkInterface interface;
QList<QNetworkInterface> IpList = interface.allInterfaces();
for (int i = 0; i < IpList.size(); i++)
qDebug() << "Interface " << i << ":" << IpList.at(i).humanReadableName();
输出:
答案 0 :(得分:2)
是否有可能获取网络适配器设备名称 (网络适配器描述)在Windows中使用Qt / C ++
答案是否定的。 Qt没有获取设备名称的任何功能(描述)。 QNetworkInterface只能获取接口名称和硬件地址(IP)。
在Windows上,您可以使用此小代码示例。 pAdapter->Description
应该保留您正在寻找的价值。
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <QCoreApplication>
#pragma comment(lib, "IPHLPAPI.lib")
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
PIP_ADAPTER_INFO pAdapterInfo;
pAdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO));
ULONG buflen = sizeof(IP_ADAPTER_INFO);
if(GetAdaptersInfo(pAdapterInfo, &buflen) == ERROR_BUFFER_OVERFLOW) {
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc(buflen);
}
if(GetAdaptersInfo(pAdapterInfo, &buflen) == NO_ERROR) {
PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
while (pAdapter) {
printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
printf("\n\n");
pAdapter = pAdapter->Next;
}
}
return a.exec();
}
示例输出
Adapter Name: {DF6051AF-8F8F-4AA8-94A9-34656236F101}
Adapter Desc: VMware Virtual Ethernet Adapter for VMnet1
Adapter Name: {13C8DF49-6D60-4702-9B3A-688B2E372E42}
Adapter Desc: TAP-Windows Adapter V9
Adapter Name: {42635D10-33A3-4FE9-96BA-1071808B6E2B}
Adapter Desc: Realtek PCIe GBE Family Controller
Adapter Name: {AA62E2BA-D140-4C2C-A1B5-58082ED21E00}
Adapter Desc: 1 x 1 11b/g/n Wireless LAN PCI Express Half Mini Card-Ad apter
Adapter Name: {7AE540D3-69FE-4BEE-A5CA-482CAF06DAB8}
Adapter Desc: VMware Virtual Ethernet Adapter for VMnet8