AMD ADL を使用して、システムに接続されたディスプレイを列挙および操作しています。私が必要とする機能の 1 つは、ディスプレイ EDID を読み取って解析する機能です。EDID のバイト配列表現を解析できますが、EDID を取得できません。ADL ドキュメントに基づいて、ADLDisplayEDIDData 構造体を定義し、ADL_Display_EdidData_Get 関数をインポートしました。ただし、私のコードを実行すると、retvalue -3 のエラーが発生します。この戻り値は、無効なパラメーターを示します。
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 情報を取得した経験のある人はいますか?
前もって感謝します。