Пишу программу, которая мониторит системные параметры (температуры, напряжения, скорость вращения вентиляторов), наподобие speedfan. Начал пока с SuperIO чипов Winbond (W83627HF/W83627THF/W83637HF/W83697HF). Как правильно определять SuperIO чип на материнской плате?
Посмотри, вот тут мы "терли" эту тему здесь: http://lowlevel.h14.ru/cgi-bin/yabb/YaBB.cgi?board=programming;action= display;num=1109876379 Доки по Winbond хорошо, но тебе придется еще и южный мост изучать, хотябы свой. Потом, по мере освоения и продвижки с собственным драйверным кодом, захочется, наверное и чтоб на других машинах работало. Сродные темы-аналоги: http://forum.sources.ru/index.php?showtopic=128828 http://forum.sources.ru/index.php?showtopic=119883 Пока до этой темы не доберусь сам, т.к. есть ряд других, более приоритетных, но она очень интересует... ты если возьмешся всерьез или нужны компаньёны(сейчас не обещаю) или обсудить, то сообщи, можем пообщаться в привате, скажем, а там посмотрим. Иногда две головы все же лучше чем...
Пример поиска показан здесь: http://www.wasm.ru/article.php?article=atazen02 А вообще - можешь или использовать int 1A как по ссылке выше, или сканировать PCI config space и искать соответствующий класс по всем шинам-девайсам-функциям. Вот описание int 1A INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE AX = B103h ECX = class code (see also #F0085,#00878) bits 31-24 unused bits 23-16 class bits 15-8 subclass bits 7-0 programming interface SI = device index (0-n) Return: CF clear if successful CF set on error AH = status (00h,86h) (see #00729) 00h successful BH = bus number BL = device/function number (bits 7-3 device, bits 2-0 func) 86h device not found EAX, EBX, ECX, and EDX may be modified all other flags (except IF) may be modified Notes: this function may require up to 1024 byte of stack; it will not enable interrupts if they were disabled before making the call the meanings of BL and BH on return were exchanged between the initial drafts of the specification and final implementation all devices sharing the same Class Code may be enumerated by incrementing SI from 0 until error 86h is returned
Найдя девайс идешь к нему в config space и считываешь VEN_ID & DEV_ID и определяешь. Точнее вероятнее всего не определишь