using System; using System.Runtime.InteropServices; using NvAPIWrapper.Native.Attributes; using NvAPIWrapper.Native.General.Structures; using NvAPIWrapper.Native.Helpers; using NvAPIWrapper.Native.Interfaces; using NvAPIWrapper.Native.Interfaces.GPU; namespace NvAPIWrapper.Native.GPU.Structures { /// /// Holds whole or a part of the EDID information /// [StructLayout(LayoutKind.Sequential, Pack = 8)] [StructureVersion(1)] public struct EDIDV1 : IEDID, IInitializable { /// /// The maximum number of data bytes that this structure can hold /// public const int MaxDataSize = 256; internal StructureVersion _Version; [MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxDataSize)] internal byte[] _Data; internal static EDIDV1 CreateWithData(byte[] data) { if (data.Length > MaxDataSize) { throw new ArgumentException("Data is too big.", nameof(data)); } var edid = typeof(EDIDV1).Instantiate(); Array.Copy(data, edid._Data, data.Length); return edid; } /// /// Gets whole or a part of the EDID data /// public byte[] Data { get => _Data; } } }