Статьи
Открытые уроки
Лабораторные работы
Рефераты
Домашние задания
Оглавление
 
Яндекс.Метрика
Утилита для отображения информации
Утилита для отображения информации об имеющихся в системе дополнительных устройствах. Программа выполняет поиск дополнительных BIOS (Expansion ROM) и визуализирует их характеристики. Если Expansion ROM удовлетворяет спецификации Plug and Play и содержит структуру данных PnP Expansion ROM Header, выводится более подробная информация
Option ROM Address
Базовый адрес ROM в формате base:offset
Signature
Сигнатура Expansion ROM 0AA55h
Length
Размер Expansion ROM
ROM Init Entry Point
Точка входа для инициализационной процедуры
Точка входа для инициализационной процедуры, по которой System BIOS передает управление в Expansion ROM при ROMSCAN это всегда FAR base:0003. По этому адресу в Expansion ROM обычно находится команда внутрисегментной передачи управления. Несколько экспериментов показали, что программа PNPOROM умеет выполнять вычисление адреса перехода и в качестве ROM Init Entry Point выводит адрес Target IP, по которому будет передано управление уже внутри Expansion ROM, хотя не исключаеено, что при некоторых косвенных формах JMP/CALL возможны проблемы.

Для PnP Expansion ROM выводятся следующие параметры:
Option ROM Address Базовый адрес ROM в формате base:offset
Signature Сигнатура Expansion ROM 0AA55h
Length Размер Expansion ROM
ROM Init Entry Point Точка входа для инициализационной процедуры
PnP Expansion Header Адрес структуры PnP Option ROM Header, детально описанной ниже
Signature Сигнатура PnP Option ROM Header = "$PnP"
Structure Revision Версия PnP Option ROM Header
Header Length Длина PnP Option ROM Header в параграфах, параграф = 16 байт
Next Header Offset Смещение следующего в цепочке блока Option ROM Header
Reserved Значение зарезервированного байта
Check Sum Контрольная сумма
Device Identifier Тридцатидвухразрядный упакованный идентификатор устройства, из которого, согласно схеме приведенной в описании функции Get DevNode, можно получить семисимвольный ASCII идентификатор PnP
Device Type Codes  
Base Type Базовый класс
Sub Type Субкласс
Interface Type Interface Level
Device Indicators Байт флагов
Boot Conn. Vector Адрес процедуры Boot Connect
Disconnect Vector Адрес процедуры Disconnect
Boot Entry Vector Адрес RPL альтернативы INT 19h
Reserved Зарезервированное слово
Static Resources Info Адрес процедуры для получения информации об используемых устройством ресурсах

PnP Option ROM Header построен на основе шаблона, описанного в документе Plug and Play BIOS Specification, Appendix A: Generic Option ROM Headers. Expansion ROM, который поддерживает расширения Option ROM Header, содержит по смещению 1Ah шестнадцатибитовый указатель на первый Option ROM Header (шестнадцатибитовый указатель и константа 1Ah - смещения относительно базового адреса Expansion ROM).

Так как структуры вида Option ROM Header используются не только для PnP, структура, на которую указывает содержимое ячейки 1Ah, может быть Option ROM Header другого типа, поэтому для обнаружения PnP Option ROM Header необходимо просканировать цепочку таких структур, пользуясь указателем на следующую структуру, присутствующем в каждом Option ROM Header и выполняя опознавание сигнатуры "$PnP"
Offset Size Пояснение
00h 4 BYTES Сигнатура "$PnP" = 24h, 50h, 6Eh, 50h
04h BYTE Structure Revision, версия Expansion ROM Header
05h BYTE Length, длина в единицах [16 байт]
06h WORD Offset Next Header, указатель на следующую структуру,
0000h - если эта структура последняя
08h BYTE Reserved, зарезервированный байт равный 00h
09h BYTE Checksum. Байт контрольной суммы формируется таким образом, чтобы сумма по модулю 256 для блока данных указанной полем Length длины была равна 0
0Ah DWORD PnP Device Identifier.
Упакованный 32-битовый идентификатор устройства
0Eh WORD Pointer to Manufacturer String (Optional).
Указатель на ASCII строку (название производителя), заканчивающуюся нулем. Если Pointer=0000, это означает, что строка отсутствует
10h WORD Pointer to Product Name String (Optional).
Указатель на ASCII-строку (название устройства), заканчивающуюся нулем. Если Pointer=0000, это означает, что строка отсутствует
12h 3 BYTES PnP Device Type Code.
Содержит Base Type Code, Sub Type Code, Programming Interface Level
15h BYTE Device Indicators.
Отражают статус подключения Expansion ROM и задействование устройства в процессе загрузки ОС
Bit0 1=Display Device
Bit1 1=Input Device
Bit2 1=Initial Program Load (IPL) Device
Bit3 Reserved
Bit4 1=This Option ROM fully support boot from this device
Bit5 1=Enable Read Cacheable for this ROM
Bit6 1=Enable Shadow this ROM
Bit7 1=DDIM Support (Device Driver Initialization Model)
16h WORD Boot Connection Vector (0000=None)
18h WORD Disconnect Vector (0000=None)
1Ah WORD Bootstrap Entry Point (0000=None)
1Ch WORD Reserved (0000h)
1Eh WORD Static Resource Information Vector (0000=None)
Используется для запроса информации о системных ресурсах, занимаемых устройством: I/O Address, Memory Address, IRQ, DRQ

Для Expansion ROM (Additional BIOS) сделанного в соответствии со спецификацией PnP Expansion ROM, протокол ROMSCAN для опознавания и подключения Additional BIOS системным BIOS изменяется:
  • При вызове системным BIOS процедуры Initialization Vector (Base:0003), Additional BIOS не может перехватывать векторы прерываний, относящиеся к поддержке BOOT-Devices:
    INT 09h Keyboard Hardware Interrupt (IRQ1=INT9) Service
    INT 10h Video Service
    INT 13h Disk Service
    INT 19h Bootstrap Loader
    INT 18h Bootstrap Loader (Alternative)
    Вместо этого, перехваты этих векторов могут быть выполнены при вызове системным BIOS процедуры Boot Connection Vector

  • Если попытка загрузки с IPL (Initial Program Load) устройства, обслуживаемого данным Expansion ROM не удалась (Boot Failure), системный BIOS вызывает процедуру Disconnect Vector, для того, чтобы Additional BIOS освободил занятые им векторы прерываний, а возможно другие ресурсы, для обеспечения попытки загрузки с другого устройства

  • Для выполнения попытки загрузки с устройства, обслуживаемого PnP Expansion ROM, при одновременном соблюдении следующих четырех условий вместо INT 19h выполняется вызов процедуры Bootstrap Entry Vector (RPL mode - Remote Program Load)
    1. Байт Device Indicators сообщает, что это устройство IPL
    2. Устройство не поддерживает дисковый сервис INT 13h
    3. Bootstrap Entry Vector ненулевой
    4. Boot Connection Vector нулевой

  • Все векторы для запуска процедур содержат смещения относительно базового адреса данного Expansion ROM. Более подробно описание входных и выходных параметров всех процедур описано в документе Plug and Play BIOS Specification