public static ushort smbusWordData(byte address, byte offset) { Monitor.Enter(sLock); if (Ring0.IsOpen == false) { Monitor.Exit(sLock); return(0); } ushort data = 0; try { if (sCpuType == CPU_TYPE.AMD) { data = SMbusAmd.getWord(address, offset); } else if (sCpuType == CPU_TYPE.INTEL) { data = SMBusIntel.getWord(address, offset); } Monitor.Exit(sLock); return(data); } catch { } Monitor.Exit(sLock); return(0); }
public static byte smbusDetect(byte address) { Monitor.Enter(sLock); if (Ring0.IsOpen == false) { Monitor.Exit(sLock); return(0x00); } byte addr = 0; try { if (sCpuType == CPU_TYPE.AMD) { addr = SMbusAmd.smbDetect(address); } else if (sCpuType == CPU_TYPE.INTEL) { addr = SMBusIntel.smbDetect(address); } Monitor.Exit(sLock); return(addr); } catch { } Monitor.Exit(sLock); return(0x00); }
public static bool open() { Monitor.Enter(sLock); if (Ring0.IsOpen == true) { Monitor.Exit(sLock); return(true); } try { Ring0.Open(); if (Ring0.IsOpen == true) { try { string wmiQuery = "SELECT * FROM Win32_PnPSignedDriver WHERE Description LIKE '%%SMBUS%%' OR Description LIKE '%%SM BUS%%'"; var searcher = new ManagementObjectSearcher(wmiQuery); var collection = searcher.Get(); string manufacturer = ""; foreach (var obj in collection) { manufacturer = obj["Manufacturer"].ToString().ToUpper(); if (manufacturer.Equals("INTEL") == true) { wmiQuery = "SELECT * FROM Win32_PnPAllocatedResource"; string deviceID = obj["DeviceID"].ToString().Substring(4, 33); var searcher2 = new ManagementObjectSearcher(wmiQuery); var collection2 = searcher2.Get(); foreach (var obj2 in collection2) { string dependent = obj2["Dependent"].ToString(); string antecedent = obj2["Antecedent"].ToString(); if (dependent.IndexOf(deviceID) >= 0 && antecedent.IndexOf("Port") >= 0) { var antecedentArray = antecedent.Split('='); if (antecedentArray.Length >= 2) { string addressString = antecedentArray[1].Replace("\"", ""); if (addressString.Length > 0) { ushort startAddress = ushort.Parse(addressString); SMBusIntel.setSMBAddress(startAddress); sCpuType = CPU_TYPE.INTEL; } } } } } else if (manufacturer.Equals("ADVANCED MICRO DEVICES, INC") == true) { sCpuType = CPU_TYPE.AMD; } break; } } catch { Monitor.Exit(sLock); return(false); } Monitor.Exit(sLock); return(true); } } catch { } Monitor.Exit(sLock); return(false); }