
From the examples, that I have seen, the environment controllers of each chip provide similar functionality (r/w fan speed, read temperature, read chip voltage), but vary in what registers you have to write to in order to get to this functionality. Finally, you need to find the datasheet of your superIO chip.The latter is the more powerful, and is very helpful in visualising the IO space, while the former provides easier access to some operations which map better to the ones in sensors-detect (read/write byte to port) When we were going through the lm-sensors code, it was very nice to have tools like RapidDriver and RW-everything, since they allowed us to simulate a run of sensors-detect.prog/detect/sensors-detect is the perl program, that does the detecting, and we have spent some time going through the code to see how to interface with a superIO chip. lm-sensors is a linux project, that, among other things, detects your superIO chip.The driver is very similar to the one in portio. WinIO has source code for a driver in C, a dll in C that programmatically installs and loads that driver, and some C# code for a GUI, that loads the dll and reads/writes to the ports.You need this to compile any driver you write for windows, With it comes a whole lot of source code for example drivers, including a driver for general port-mapped IO, called portio. The WDK, which is the Windows Driver Kit.To gain the knowledge, we have been especially helped by looking at these links:

When we started the project, we didn't know anything in either of these areas, so it has been learning by browsing, reading and finally doing.

If you want to go down this route, you basically need knowledge in two areas: driver development and how to access and interpret superIO chip information. Using port-mapped IO requires the code to run in kernel mode, but windows does not supply any drivers for generic port IO (with good reason, since it is a very powerful tool), so we wrote our own driver, and used that. We access the chip directly using port-mapped IO, and from there we can get to the logical fan device.

Basically, the fans are controlled by the superIO chip of your computer. I am at the moment working on a project that, among other things, controls the computer fans.
