SMBUS access from C/C++ in Windows XP
Posted on 2006-05-31
I'm wanting to access SMBUS devices attached to my motherboard, preferably using C/C++ (MFC/.NET/Borland/whatever). Initially I want to take readings from, and set parameters on, the temperature/fan controllers. In the longer term, I want to access arbitrary SMBUS devices I attach to the bus (e.g. an 8-port I/O expander). This will be run on a P3 or later hardware, if that's significant, with a variety of different motherboard chipsets (VIA, Intel, etc.)
I've done a lot of googling, and haven't found any clear or concise examples.
- The two solutions already here on EE (with premium access required) don't help.
- Using something like speedfan / motherboard monitor doesn't help, as I want my program to be able to access/control the bus (unless they have an API I can use?)
- If theres a DLL or similar available to do this, that's fine.
- A solution in any language would be ok, as I could wrap it up in an DLL and use that from my code.
- Use of stuff like GiveIO, privilege escalation software, etc., is fine
- Sensors on things like AGP video cards don't matter. It's just the motherboard's SMBUS (and connector) I'm interested in.
Basically, I don't care how it gets done, but if I can end up reading/writing to (arbitrary) SMBUS devices, I'm happy. Any code (complete or skeleton), or helpful pointers would be greatly appreciated.