Как вы можете использовать адаптер дисплея для определенного монитора в Windows?

На 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);
  }

Я могу получить названия устройств самих мониторов, но не адаптеры, к которым они подключены!

1 ответ

Решение

Я могу думать о трех подходах:

  1. EnumDisplayDevices в документации упоминается, что dwFlags Аргумент может использоваться для получения идентификатора устройства, который можно использовать с функциями SetupAPI. Этот API предоставляет целый ряд функций для получения информации об устройстве. Так что, возможно, вы можете получить идентификатор устройства от EnumDisplayDevices вставьте это в какую-нибудь функцию SetupAPI, чтобы получить структуру устройства монитора, и получите оттуда идентификатор устройства адаптера дисплея.

  2. Вы, вероятно, можете использовать Win32_VideoController Класс через WMI, чтобы получить информацию об адаптере дисплея.

  3. Я могу представить, что некоторые DirectX API доступны для получения информации об установленном графическом оборудовании.

Другие вопросы по тегам