есть ли возможность получить имя устройства сетевого адаптера (описание сетевого адаптера) с помощью Qt / C++ в Windows?
Я использовал QNetworkInterface, но он возвращает только имя адаптера. Я хочу знать, какой адаптер Ethernet через USB.
QNetworkInterface interface;
QList<QNetworkInterface> IpList = interface.allInterfaces();
for (int i = 0; i < IpList.size(); i++)
qDebug() << "Interface " << i << ":" << IpList.at(i).humanReadableName();
выход:





is there any possibility to get the network adapter device name (network adapter description) using Qt / C++ in windows
Ответ - нет. 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
Alex J .: Смотрите мой обновленный ответ, вы можете сделать это сами, используя несколько строк кода.
вау, ты спас мне жизнь! работает отлично! Большое спасибо за вашу поддержку. :-)
Спасибо за ваш ответ. то мне нужно искать стороннюю библиотеку. В C# уже есть встроенная библиотека, которая выполняет эту работу. может мне стоит сделать DLL, чтобы использовать его.