- Joined
- Apr 12, 2009
- Messages
- 1
- Reaction score
- 0
Hello, i am trying to create a fan control for my tool and i don't understand lot of things that the SKD talks about..
here is what i am doing click here
here is the full detail
the code is suppose to be
internal delegate int ADL_Overdrive5_FanSpeed_Get (int iAdapterIndex, int iThermalControllerIndex,ref ADLFanSpeedValue lpFanSpeedValue);
=========================================================
enum iSpeedType{ADL_DL_FANCTRL_SPEED_TYPE_PERCENT,ADL_DL_FANCTRL_SPEED_TYPE_RPM};
enum ipSpeedValue{ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED}
enum Faninfoflag{ADL_DL_FANCTRL_SUPPORTS_PERCENT_READ = 1, ADL_DL_FANCTRL_SUPPORTS_PERCENT_WRITE = 2, ADL_DL_FANCTRL_SUPPORTS_RPM_READ = 4, ADL_DL_FANCTRL_SUPPORTS_RPM_WRITE = 8};
================================================
#region ADLFanSpeedInfo
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedInfo
{
internal int iSize;
internal int Faninfoflag;
internal int iMinPercent;
internal int iMaxPercent;
internal int iMinRPM;
internal int iMaxRPM;
}
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedInfoArray
{
/// <summary> ADLAdapterInfo Array </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)ADL.ADL_MAX_ADAPTERS)]
internal ADLFanSpeedInfo[] ADLFanSpeedInfo;
}
#endregion ADLFanSpeedInfo
#region ADLFanSpeedValue
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedValue
{
internal int iSize;
internal int iSpeedType; //Possible valies: ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or ADL_DL_FANCTRL_SPEED_TYPE_RPM.
internal int iFanSpeed;
internal int ipSpeedValue; //The only flag for now is: ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED.
}
#endregion ADLFanSpeedValue
=========================================================
[DllImport(Atiadlxx_FileName)]
internal static extern int ADL_Overdrive5_FanSpeed_Get(int iAdapterIndex, int iThermalControllerIndex, ref ADLFanSpeedValue lpFanSpeedValue);
============================================================'
#region ADL_Overdrive5_FanSpeed_Get
internal static ADL_Overdrive5_FanSpeed_Get ADL_Overdrive5_FanSpeed_Get
{
get
{
if (!ADL_Overdrive5_FanSpeed_Get_Check && null == ADL_Overdrive5_FanSpeed_Get_)
{
ADL_Overdrive5_FanSpeed_Get_Check = true;
if (ADLCheckLibrary.IsFunctionValid("ADL_Overdrive5_FanSpeed_Get"))
{
ADL_Overdrive5_FanSpeed_Get_ = ADLImport.ADL_Overdrive5_FanSpeed_Get;
}
}
return ADL_Overdrive5_FanSpeed_Get;
}
}
private static ADL_Overdrive5_FanSpeed_Get ADL_Overdrive5_FanSpeed_Get_ = null;
private static bool ADL_Overdrive5_FanSpeed_Get_Check = false;
#endregion ADL_Overdrive5_FanSpeed_Get
=============================================================
now i am trying to get the fan speed which is giving me a hard time......... can some one help please
my code
int ADLRet = -1;
int NumberOfAdapters = 0;
if (null != ADL.ADL_Main_Control_Create)
ADLRet = ADL.ADL_Main_Control_Create(ADL.ADL_Main_Memory_Alloc, 0);
if (ADL.ADL_SUCCESS == ADLRet)
{
if (null != ADL.ADL_Adapter_NumberOfAdapters_Get)
{
ADL.ADL_Adapter_NumberOfAdapters_Get(ref NumberOfAdapters);
}
Console.WriteLine("Number Of Adapters: " + NumberOfAdapters.ToString() + "\n");
if (0 < NumberOfAdapters)
{
ADLAdapterInfoArray OSAdapterInfoData;
OSAdapterInfoData = new ADLAdapterInfoArray();
ADLFanSpeedInfoArray OSAFanSpeedInfoData;
OSAFanSpeedInfoData = new ADLFanSpeedInfoArray();
if (null != ADL.ADL_Adapter_AdapterInfo_Get)
{
IntPtr AdapterBuffer = IntPtr.Zero;
int size = Marshal.SizeOf(OSAdapterInfoData);
AdapterBuffer = Marshal.AllocCoTaskMem((int)size);
Marshal.StructureToPtr(OSAdapterInfoData, AdapterBuffer, false);
ADLRet = ADL.ADL_Adapter_AdapterInfo_Get(AdapterBuffer, size);
if (ADL.ADL_SUCCESS == ADLRet)
{
OSAdapterInfoData = (ADLAdapterInfoArray)Marshal.PtrToStructure(AdapterBuffer, OSAdapterInfoData.GetType());
int IsActive = 0;
for (int i = 0; i < NumberOfAdapters; i++)
{
if (null != ADL.ADL_Adapter_Active_Get)
ADLRet = ADL.ADL_Adapter_Active_Get(OSAdapterInfoData.ADLAdapterInfo.AdapterIndex, ref IsActive);
ADLRet = ADL.ADL_Overdrive5_FanSpeed_Get(OSAdapterInfoData.ADLAdapterInfo.AdapterIndex, 0, ref iSpeedType);
if (IsActive == 1)
{
string Actadapt = System.Convert.ToString(0 < IsActive);
Active_Adap_num_lbl.Text = Actadapt;
string Adapvalue = System.Convert.ToString(NumberOfAdapters);
Adap_num_lbl.Text = Adapvalue;
===============================================================
I hope some one has the knowledge to help on this...
===============================================================
here is what i am doing click here
here is the full detail
the code is suppose to be
internal delegate int ADL_Overdrive5_FanSpeed_Get (int iAdapterIndex, int iThermalControllerIndex,ref ADLFanSpeedValue lpFanSpeedValue);
=========================================================
enum iSpeedType{ADL_DL_FANCTRL_SPEED_TYPE_PERCENT,ADL_DL_FANCTRL_SPEED_TYPE_RPM};
enum ipSpeedValue{ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED}
enum Faninfoflag{ADL_DL_FANCTRL_SUPPORTS_PERCENT_READ = 1, ADL_DL_FANCTRL_SUPPORTS_PERCENT_WRITE = 2, ADL_DL_FANCTRL_SUPPORTS_RPM_READ = 4, ADL_DL_FANCTRL_SUPPORTS_RPM_WRITE = 8};
================================================
#region ADLFanSpeedInfo
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedInfo
{
internal int iSize;
internal int Faninfoflag;
internal int iMinPercent;
internal int iMaxPercent;
internal int iMinRPM;
internal int iMaxRPM;
}
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedInfoArray
{
/// <summary> ADLAdapterInfo Array </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)ADL.ADL_MAX_ADAPTERS)]
internal ADLFanSpeedInfo[] ADLFanSpeedInfo;
}
#endregion ADLFanSpeedInfo
#region ADLFanSpeedValue
[StructLayout(LayoutKind.Sequential)]
internal struct ADLFanSpeedValue
{
internal int iSize;
internal int iSpeedType; //Possible valies: ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or ADL_DL_FANCTRL_SPEED_TYPE_RPM.
internal int iFanSpeed;
internal int ipSpeedValue; //The only flag for now is: ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED.
}
#endregion ADLFanSpeedValue
=========================================================
[DllImport(Atiadlxx_FileName)]
internal static extern int ADL_Overdrive5_FanSpeed_Get(int iAdapterIndex, int iThermalControllerIndex, ref ADLFanSpeedValue lpFanSpeedValue);
============================================================'
#region ADL_Overdrive5_FanSpeed_Get
internal static ADL_Overdrive5_FanSpeed_Get ADL_Overdrive5_FanSpeed_Get
{
get
{
if (!ADL_Overdrive5_FanSpeed_Get_Check && null == ADL_Overdrive5_FanSpeed_Get_)
{
ADL_Overdrive5_FanSpeed_Get_Check = true;
if (ADLCheckLibrary.IsFunctionValid("ADL_Overdrive5_FanSpeed_Get"))
{
ADL_Overdrive5_FanSpeed_Get_ = ADLImport.ADL_Overdrive5_FanSpeed_Get;
}
}
return ADL_Overdrive5_FanSpeed_Get;
}
}
private static ADL_Overdrive5_FanSpeed_Get ADL_Overdrive5_FanSpeed_Get_ = null;
private static bool ADL_Overdrive5_FanSpeed_Get_Check = false;
#endregion ADL_Overdrive5_FanSpeed_Get
=============================================================
now i am trying to get the fan speed which is giving me a hard time......... can some one help please
my code
int ADLRet = -1;
int NumberOfAdapters = 0;
if (null != ADL.ADL_Main_Control_Create)
ADLRet = ADL.ADL_Main_Control_Create(ADL.ADL_Main_Memory_Alloc, 0);
if (ADL.ADL_SUCCESS == ADLRet)
{
if (null != ADL.ADL_Adapter_NumberOfAdapters_Get)
{
ADL.ADL_Adapter_NumberOfAdapters_Get(ref NumberOfAdapters);
}
Console.WriteLine("Number Of Adapters: " + NumberOfAdapters.ToString() + "\n");
if (0 < NumberOfAdapters)
{
ADLAdapterInfoArray OSAdapterInfoData;
OSAdapterInfoData = new ADLAdapterInfoArray();
ADLFanSpeedInfoArray OSAFanSpeedInfoData;
OSAFanSpeedInfoData = new ADLFanSpeedInfoArray();
if (null != ADL.ADL_Adapter_AdapterInfo_Get)
{
IntPtr AdapterBuffer = IntPtr.Zero;
int size = Marshal.SizeOf(OSAdapterInfoData);
AdapterBuffer = Marshal.AllocCoTaskMem((int)size);
Marshal.StructureToPtr(OSAdapterInfoData, AdapterBuffer, false);
ADLRet = ADL.ADL_Adapter_AdapterInfo_Get(AdapterBuffer, size);
if (ADL.ADL_SUCCESS == ADLRet)
{
OSAdapterInfoData = (ADLAdapterInfoArray)Marshal.PtrToStructure(AdapterBuffer, OSAdapterInfoData.GetType());
int IsActive = 0;
for (int i = 0; i < NumberOfAdapters; i++)
{
if (null != ADL.ADL_Adapter_Active_Get)
ADLRet = ADL.ADL_Adapter_Active_Get(OSAdapterInfoData.ADLAdapterInfo.AdapterIndex, ref IsActive);
ADLRet = ADL.ADL_Overdrive5_FanSpeed_Get(OSAdapterInfoData.ADLAdapterInfo.AdapterIndex, 0, ref iSpeedType);
if (IsActive == 1)
{
string Actadapt = System.Convert.ToString(0 < IsActive);
Active_Adap_num_lbl.Text = Actadapt;
string Adapvalue = System.Convert.ToString(NumberOfAdapters);
Adap_num_lbl.Text = Adapvalue;
===============================================================
I hope some one has the knowledge to help on this...
===============================================================