Как получить адаптер дисплея, используемый для определенного монитора в Windows? - PullRequest
1 голос
/ 17 октября 2011

На 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 Ответ

3 голосов
/ 17 октября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...