Hello,
I'm trying to program a tool using the ADL SDK. I've ran into an issue too hard for me to crack. (ADL_Overdrive5_ODParameters_Get function)
The code:
| /// <summary> ADLODPerformanceLevel Structure</summary> |
| [StructLayout(LayoutKind.Sequential)] |
| internal struct ADLODPerformanceLevel |
| { |
| /// <summary> Engine clock </summary> |
| internal int iEngineClock; |
| /// <summary> Memory clock </summary> |
| internal int iMemoryClock; |
| /// <summary> Core voltage </summary> |
| internal int iVddc; |
| } |
| /// <summary> ADLODPerformanceLevels Structure</summary> |
| [StructLayout(LayoutKind.Sequential)] |
| internal struct ADLODPerformanceLevels |
| { |
| /// <summary> Must be set to sizeof( ADLODPerformanceLevels ) + sizeof( ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1) </summary> |
| internal int iSize; |
| /// <summary> Reserved for future use </summary> |
| internal int iReserved; |
| /// <summary> Engine clock range</summary> |
| internal ADLODPerformanceLevel[] aLevels; |
| |
| } |
ADLODParameters adlod = new ADLODParameters();
ADL.ADL_Overdrive5_ODParameters_Get(0, ref adlod);
ADLODPerformanceLevels performancelevels = new ADLODPerformanceLevels();
performancelevels.aLevels = new ADLODPerformanceLevel[adlod.iNumberOfPerformanceLevels];
ADLODPerformanceLevel tmp = new ADLODPerformanceLevel();
//iSize must be set to sizeof( ADLODPerformanceLevels ) + sizeof( ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
performancelevels.iSize = Marshal.SizeOf(performancelevels) + Marshal.SizeOf(tmp) * (adlod.iNumberOfPerformanceLevels - 1);
ADLODPerformanceLevels defaultPerformancelevels = new ADLODPerformanceLevels();
if (null != ADL.ADL_Overdrive5_ODPerformanceLevels_Get)
ADLRet = ADL.ADL_Overdrive5_ODPerformanceLevels_Get(0, 0, ref performancelevels);
All code seems to work up until the last line. It looks like the performancelevels variable still isn't in a state it's supposed to be? (at least I think that's what the issue is)
Bug says: ArgumentException was unhandled (exception of HRESULT: 0x80070057 (E_INVALIDARG))
Any help would be appreciated. Thanks (If you need more info, just ask)