我正在使用 AMD ADL 来枚举和操作连接到我的系统的显示器。我需要的必要功能之一是能够读取和解析显示 EDID。我能够解析 EDID 的字节数组表示,但是我无法获取 EDID。根据 ADL 文档,我定义了 ADLDisplayEDIDData 结构并导入了 ADL_Display_EdidData_Get 函数。但是,我的代码的任何执行都会导致 retvalue -3 的错误。此 retvalue 表示无效参数。
EDIDData 结构:
[StructLayout(LayoutKind.Sequential)]
internal struct ADLDisplayEDIDData
{
internal int Size;
internal int Flag;
internal int EDIDSize;
internal int BlockIndex;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 255)]
internal byte[] EDIDData;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
internal int[] Reserved;
}
DLL 导入:
[DllImport(Atiadlxx_FileName)]
internal static extern int ADL_Display_EdidData_Get(int adapterIndex, int displayIndex, ref ADLDisplayEDIDData EDIDData);
我的声明有什么错误吗?有人对 ADL 和获取 EDID 信息有任何经验吗?
先感谢您。