Enumerar monitores en una computadora

He encontrado 7 formas diferentes de enumerar los monitores conectados a la computadora. Pero todas las soluciones dan resultados diferentes (número de monitores e información sobre cada monitor).

Estas soluciones son:

Usando el famosoEnumDisplayDevices

UtilizandoEnumDisplayMonitors

Utilizando laInstrumental de administración de Windows (WMI):
Con la siguiente consulta:SELECT * FROM WmiMonitorID en elroot\\WMI espacio de nombres.

Otra vez usando elWMI:
Con la nueva consulta:SELECT * FROM Win32_DesktopMonitor en elroot\\CIMV2 espacio de nombres.

Utilizando laAPI de configuración:
Por primera llamadaSetupDiGetClassDevs para recuperar el conjunto de información del dispositivo entonces, iterando conSetupDiEnumDeviceInfo

Utilizando laInfraestructura Gráfica DirectX (DXGI)
Con la primeraIDXGIFactory::EnumAdapters, entoncesIDXGIAdapter::EnumOutput

Utilizando laConexión y configuración de API de pantallas (CCD):
QueryDisplayConfig(QDC_ALL_PATHS, &numPathArrayElements, pathInfoArray, &numModeInfoArrayElements, modeInfoArray, nullptr);

He intentado entender precisamente la diferencia entre todos los métodos de tesis con la referencia de MSDN, en vano.

Observaciones

De lo que he observado:

losWmiMonitorID yAPI de configuración Las consultas devuelven la lista de pantallas conectadas (no necesariamente activas).losWin32_DesktopMonitor WMI consulta devuelveincorrecto resultado (al menos inesperado) (solo 1 monitor enumerado, incluso cuando está inactivo y de escritorio en otro monitor).EnumDisplayDevices devuelve la lista de dispositivos activos (excepto cuando solo 1 monitor está activo con otro monitor conectado)EnumDisplayMonitors yDXGI Las consultas devuelven la lista de monitores activos.CCD Parece ser el método más confiable (da todos los caminos posibles entre los objetivos y las fuentes).Preguntas

¿Qué resultado debería esperar realmente al usar cada uno de estos métodos (lista de pantallas conectadas, lista de pantallas instaladas, lista de pantallas activas)? ¿Qué pasa si uso pantallas duplicadas o pantallas extendidas? ¿Qué pasa si la computadora tiene varias tarjetas gráficas sin salidas múltiples?

Bonificación: Algunos métodos (DXGI, EnumDisplayDevices, CCD) utiliza un tipo de jerarquía conAdaptador-Monitor. Pero no da los mismos enlaces entre adaptadores y monitores. Entonces, ¿cuál es la definición de un adaptador paraDXGI? paraCCD? paraEnumDisplayDevices?

Respuestas a la pregunta(2)

Su respuesta a la pregunta