Чтение 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.