Чтение EDID прямо с монитора НЕТ драйверов

Я получил этот проект C#, где я пытаюсь извлечь Edid непосредственно с монитора. Цель состоит в том, чтобы сделать приложение, которое может работать на Winpe без каких-либо драйверов. Я знаю, что можно получить информацию с помощью регистрационной базы данных или wmi, но это невозможно в этом проекте, потому что он не предоставит правильную информацию без установленных драйверов. У нас есть этот прикрепленный код, который работает, но я предполагаю, что он запрашивает драйверы для разрешения, потому что он не будет работать, когда мы попробуем установить winpe. Вот код, который может отображать разрешения при установке драйверов.

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumDisplaySettings([MarshalAs(UnmanagedType.LPStr)] string lpszDeviceName, int iModeNum, out Program.DEVMODE lpDevMode);
public static List<Tuple<int, int>> GetScreenResolutions()
{
    List<Tuple<int, int>> list = new List<Tuple<int, int>>();
    try
    {
        int num = 0;
        Program.DEVMODE dEVMODE;
        while (Program.EnumDisplaySettings(null, num++, out dEVMODE))
        {
            Tuple<int, int> item = Tuple.Create<int, int>(dEVMODE.dmPelsWidth, dEVMODE.dmPelsHeight);
            if (!list.Contains(item))
            {
                list.Add(item);
            }
        }
    }
    catch
    {
        Console.WriteLine("Could not get screen resolutions.");
    }
    return list;
}

1 ответ

Вам может понадобиться P/Invoke к собственному SetupAPI. Не проверял код в ссылке на winpe.

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