mirror of
https://github.com/openhardwaremonitor/openhardwaremonitor
synced 2025-09-03 15:55:26 +00:00
Fixed ADL dll loading. The name of the dll is always atiadlxx, except when running as 32-bit app on 64-bit systems (atiadlxy in that case).
This commit is contained in:
@@ -171,34 +171,25 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
||||
public static ADL_Overdrive5_FanSpeedInfo_GetDelegate
|
||||
ADL_Overdrive5_FanSpeedInfo_Get;
|
||||
|
||||
private static string GetDllName() {
|
||||
int p = (int)System.Environment.OSVersion.Platform;
|
||||
if ((p == 4) || (p == 128)) {
|
||||
if (IntPtr.Size == 4) {
|
||||
return "atiadlxy.so";
|
||||
} else {
|
||||
return "atiadlxx.so";
|
||||
}
|
||||
} else {
|
||||
if (IntPtr.Size == 4) {
|
||||
return "atiadlxy.dll";
|
||||
} else {
|
||||
return "atiadlxx.dll";
|
||||
}
|
||||
}
|
||||
}
|
||||
private static string dllName;
|
||||
|
||||
private static void GetDelegate<T>(string entryPoint, out T newDelegate)
|
||||
where T : class
|
||||
{
|
||||
DllImportAttribute attribute = new DllImportAttribute(GetDllName());
|
||||
DllImportAttribute attribute = new DllImportAttribute(dllName);
|
||||
attribute.CallingConvention = CallingConvention.StdCall;
|
||||
attribute.PreserveSig = true;
|
||||
attribute.EntryPoint = entryPoint;
|
||||
PInvokeDelegateFactory.CreateDelegate(attribute, out newDelegate);
|
||||
}
|
||||
|
||||
static ADL() {
|
||||
private static void CreateDelegates(string name) {
|
||||
int p = (int)System.Environment.OSVersion.Platform;
|
||||
if ((p == 4) || (p == 128))
|
||||
dllName = name + ".so";
|
||||
else
|
||||
dllName = name + ".dll";
|
||||
|
||||
GetDelegate("ADL_Main_Control_Create",
|
||||
out _ADL_Main_Control_Create);
|
||||
GetDelegate("ADL_Adapter_AdapterInfo_Get",
|
||||
@@ -221,10 +212,21 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
||||
out ADL_Overdrive5_FanSpeedInfo_Get);
|
||||
}
|
||||
|
||||
static ADL() {
|
||||
CreateDelegates("atiadlxx");
|
||||
}
|
||||
|
||||
private ADL() { }
|
||||
|
||||
public static int ADL_Main_Control_Create(int enumConnectedAdapters) {
|
||||
return _ADL_Main_Control_Create(Main_Memory_Alloc, enumConnectedAdapters);
|
||||
try {
|
||||
return _ADL_Main_Control_Create(Main_Memory_Alloc,
|
||||
enumConnectedAdapters);
|
||||
} catch (DllNotFoundException) {
|
||||
CreateDelegates("atiadlxy");
|
||||
return _ADL_Main_Control_Create(Main_Memory_Alloc,
|
||||
enumConnectedAdapters);
|
||||
}
|
||||
}
|
||||
|
||||
public static int ADL_Adapter_AdapterInfo_Get(ADLAdapterInfo[] info) {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
@@ -55,6 +55,9 @@ namespace OpenHardwareMonitor.Hardware.SMBIOS {
|
||||
if ((p == 4) || (p == 128))
|
||||
return;
|
||||
|
||||
List<Structure> structureList = new List<Structure>();
|
||||
|
||||
try {
|
||||
ManagementObjectCollection collection = new ManagementObjectSearcher(
|
||||
"root\\WMI", "SELECT SMBiosData FROM MSSMBios_RawSMBiosTables").Get();
|
||||
|
||||
@@ -64,7 +67,6 @@ namespace OpenHardwareMonitor.Hardware.SMBIOS {
|
||||
break;
|
||||
}
|
||||
|
||||
List<Structure> structureList = new List<Structure>();
|
||||
if (raw != null && raw.Length > 0) {
|
||||
int offset = 0;
|
||||
byte type = raw[offset];
|
||||
@@ -103,6 +105,8 @@ namespace OpenHardwareMonitor.Hardware.SMBIOS {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (NotImplementedException) { }
|
||||
|
||||
table = structureList.ToArray();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user