Получение понятного имени монитора в драйверах дисплея XDDM - PullRequest
0 голосов
/ 08 мая 2020

Мне нужно получить понятное имя монитора на Windows 7 с установленными драйверами монитора XDDM. Я использую функцию DisplayConfigGetDeviceInfo в современных версиях Windows (где она работает нормально, см. Пример), но эта функция поддерживается только в системах с драйверами WDDM . Поэтому я ищу обходной путь для достижения той же функциональности с драйверами дисплея XDDM.

Способ WDDM:

[DllImport("user32.dll")]
public static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_TARGET_DEVICE_NAME deviceName);

private static string GetMonitorFriendlyName(LUID adapterId, uint targetId)
{
    var deviceName = new DISPLAYCONFIG_TARGET_DEVICE_NAME
    {
        header =
        {
            size = (uint)Marshal.SizeOf(typeof(DISPLAYCONFIG_TARGET_DEVICE_NAME)),
            adapterId = adapterId,
            id = targetId,
            type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME
        }
    };
    var returnCode = DisplayConfigGetDeviceInfo(ref deviceName);
    if (returnCode != ERROR_SUCCESS)
    {
        throw new Win32Exception(returnCode);
    } 

    return deviceName.monitorFriendlyDeviceName;
}
...