I'm trying to learn how to interface with a hardware PCI device that controls computer fan speed, using visual c++ express edition beta2. Since I'm currently in the beginning stage of learning how to make software that interfaces with a hardware I was wondering if I could receive some tips regarding that. What are the core requirements when developing a software that interfaces with a hardware? (example: DLL? Communication Protocol?) and is there any good reference in the Internet that I could read which might help?