PC Review


Reply
Thread Tools Rate Thread

ATI SDK problem

 
 
New Member
Join Date: Apr 2009
Posts: 1
 
      12th Apr 2009
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[i].AdapterIndex, ref IsActive);


ADLRet = ADL.ADL_Overdrive5_FanSpeed_Get(OSAdapterInfoData.ADLAdapterInfo[i].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...

===============================================================
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
problem after problem after problem - winXP wont start! =?Utf-8?B?TWF2aXJpY2s=?= Windows XP Help 2 23rd Apr 2006 02:55 PM
Microsoft Access Object Library Version Problem (Form VBA Code Problem) Don Microsoft Access Form Coding 2 8th Mar 2004 01:00 PM
hibernation problem! problem!, Power Option problem! Farzad Hayati Microsoft Windows 2000 Hardware 2 5th Feb 2004 10:22 PM
hibernation problem! problem!, Power Option problem! Farzad Hayati Microsoft Windows 2000 Advanced Server 2 5th Feb 2004 10:22 PM
Outlook 2002 connector: problem connecting with Domino server because of NAMELookup2 problem Jean-Paul Smeets Microsoft Outlook 2 26th Sep 2003 10:17 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 06:21 PM.