Подскажите как перечислить все PNP устройства находящиеся на материнской плате? используя толко порты А79, 274-277 , 279 PNP.
DJK Хочешь скину исходники биоса 2.8МБ? Там это есть. Могу скинуть документацию на PnP в PDF или в RTF там несколько файлов 0.5МБ. То что нужно PNPISA - это если через порты. Лично я так с портами и не поработал, остановился на работе с BIOSом. Если ты всетаки напишишь програмку, то я с удовольствием приму ее.
_BC_ PNPBIOS.rtf pnpisa.pdf pnpcom.pdf pnplpt.pdf pnpscsi.pdf devids.txt Все в сумме если сжать раром то 430КБ. http://footballtabl.h15.ru/ivan/pnp_specs.rar А за EISA ID спасибо, правда не уверен я что он верный.
в принципе на современных MB от ISA PnP Enumerator'а толку мало -- там похоже "зацепить" можно только реальные ISA-карты (кои уже раритет) и ничего более. Залез у себя в HKLM\Enum\ISAPNP -- там пусто, pciscope cоответственно выдает Total number of CSNs assigned 0. Т.е. "Чтение данных из порта для перечислителя ISA Plug and Play" (С)винда на данный момент бесполезно (что правда не мешает isapnp.vxd болтаться в памяти). Т.о., сабж сводится к $PnP + PCI conf. (если конечно не надо специально перечислить ISA PnP-карты на старой материнке). ACPI к несчастью загажен всяким г..ном вроде объектов и aml, хотя по идее DSDT д.б. главным источником этой инфы.
_BC_ Судя по документации на PnP все устройства находящиеся на MB являются устаревшими legacy. Есть такая дока от Майкрософт pnp_legacy.doc в который про это и говорится. А следовательно не должны детектится через порт PNPISA. Если заглянуть в исходники биоса то там видно, что часть устройств вообще не определяется, а забиты как данные, другие детектятся сторонними методами. Поэтому использовать порт 279h можно только на старых компьютерах с ISA шиной, для определения карт ISA. Но BIOS PnP определяет не все устройство, часть ACPI устройсв не определена, возможно и др
На платах интела есть такое устройство как LPC Interface Controller (82801EB) к которому прицеплены все PNP устройства. Все что прицеплено к нему и необходимо найти, необходимо перечеслить все PNP устройства не используя БОИС только порты.
К LPC "прицеплена" только всякая мелюзга вроде таймера, PIC, RTC, DMA, FDC, COM и тп -- всё то, что совсем не PnP -- большинство с фиксированными ресурсами или настраиваемое/отключаемое средствами LPC I/F bridge. И там как раз всё то, что перечисляется ч/з $PnP -- пример Pavia дал. Only the following class of devices may be connected to the LPC interface: - Super I/O (FDC, SP, PP, IR, KBC) => I/O slave, DMA, Bus Master (for IR, PP) - Audio, including AC'97 style design => I/O slave, DMA, Bus Master - Generic Application Memory, including BIOS => Memory Slave - BIOS Firmware Memory => Firmware Memory Slave - Embedded Controller => I/O slave, Bus Master (С) Intel® Low Pin Count (LPC) Interface Specification + AC97 на интелах подключен не к LPC, а отдельно.
Спасибо Pavia за програмку, работает. Но почему-то не находит PNPB006 MPU401 compatible PNPB02F Joystick/Game port зато все остальное ОК. Мне нет необходимости искать PNP ISA Card Devices.
DJK проверь а) что на материнской плате MIDI и gameport вообще реализованы б) что в BIOS setup'е MIDI и gameport включены Если в сетапе нет никаких опций для миди и геймпорта, значит материнка их не поддерживает. На моей MB, к примеру, миди и геймпорт отсутствуют как в виде разъемов на задней панели, так и в виде контактов на самой плате, несмотря на то, что сам Winbond W83627EHF (SIO + sensor) их поддерживает. Все остальные девайсы -- мосты, LAN контроллер, AC97, IDE/SATA-контроллеры, USB и тд -- перечисляются в PCI conf.
Физически Joystick/Game por и MPU1 присутствуют, в БИОСе все они включены, в ДОС я с Joystick/Game por работаю, но определить его не удается, оба они весят на LPC.
а в самом реестре винды где они прописаны? Можешь экспорт ветки кинуть? В DSDT бы их поискать по-хорошему, но винда к сожалению любит херить ACPI reclaim area после копирования инфы с нее в реестр.
DSDT -- это как раз имя ACPI-таблицы, в которой хранится сабжевый стафф -- MB-устройства, их ресурсы, методы, etc. По логике вещей DSDT является #1 источником для перечисления этих устройств, но разработчики ACPI подложили свинью -- BIOS копирует DSDT (и другие таблицы) в ACPI reclaim area (вверху физ.памяти), которая, будучи обработанной осью, помечается как свободная физ.память -- согласно acpi-спецификации. Соответственно часть или вся DSDT может оказаться запоротой -- в 1м же экспериментальном дампе, снятом при загруженной винде, примерно половина DSDT оказалась забита мусором. (added: актуально только для w9x, NT/XP похоже оставляет DSDT нетронутой) Вообще же штука полезная -- в аттаче DSDT с моей системы, снятая в нужный момент при загрузке (а именно во время ее обработки в acpi.sys ) + она же, обработанная AML-дизассемблером. В листинге явно видно, что в DSDT гораздо больше информации по сравнению с PnP BIOS.