На Mac я могу использовать следующее для распечатки адаптера, используемого для определенного монитора:
io_registry_entry_t dspPort = CGDisplayIOServicePort(displays[i]);
CFDataRef model_;
model_ = (CFDataRef)IORegistryEntrySearchCFProperty(dspPort,kIOServicePlane,CFSTR("model"),
kCFAllocatorDefault,
kIORegistryIterateRecursively | kIORegistryIterateParents);
if (model_) {
newLine();
String model((const char*)CFDataGetBytePtr(model_), CFDataGetLength(model_));
log.printf("Adapter: %s", model.buf);
CFRelease(model_);
}
Пример вывода - Адаптер: AMD Radeon HD 6750M
Где displays[i]
заполняется с помощью CGGetActiveDisplayList(nDisplays, displays, &nDisplays);
Можно ли выполнить аналогичную операцию в Windows?Я перебираю все дисплеи, используя EnumDisplayMonitors
.
Я могу получить список адаптеров, используя EnumDisplayDevices
, но как мне узнать, какой монитор к какому адаптеру подключен?
Редактировать
Использование:
for (int i=0; EnumDisplayDevicesA(monitorInfo.szDevice, i, &dev, 0); i++) {
newLine();
log.printf("Display Device: %s",(char*)dev.DeviceString);
}
Я могу получить имена устройств самих мониторов, но не адаптеры, к которым они подключены!