Команда SC_HA_INQUIRY

Команда SC_HA_INQUIRY поможет определить информацию об установленных в системе аппаратных контроллерах, а также об их количестве.

Теперь подробнее рассмотрим дополнительные поля структуры SRB_HAInquiry.

  • HA_Count

    После выполнения команды это значение будет содержать общее количество контроллеров, обнаруженных ASPI в текущей системе. Кроме того, необходимо поле SRB_Haid структуры установить в 0. Число возвращенных контроллеров представляет из себя логический индекс шины, а не правильный физический индекс контроллера. Если контроллер поддерживает одну шину, индекс самого контроллера и логический индекс шины будут совпадать.

  • HA_SCSI_ID

    Это поле будет содержать идентификатор определенного контроллера.

  • HA_ManagerId[16]

    Данное поле будет заполнено описанием управляющей программы. Для Win32 значение будет содержать строку ASPI for WIN32.

  • HA_Identifier[16]

    Это поле будет заполнено строкой с описанием установленного контроллера.

  • HA_Unique

    Здесь могут содержаться уникальные параметры контроллера, для извлечения которых потребуется обработка битовой маски.

    • Байты 15—8 — зарезервированы и равны 0.
    • Байты 7—4 — максимальная длина передачи. Не рекомендуется устанавливать длину передачи менее 64 Кбайт.
    • Байт 3 — максимальное количество адресов для SCSI. Если это значение не установлено, следует принять 8 адресов SCSI (от 0 до 7).
    • Байт 2 — остаточный индекс. Если бит 1 равен 1, то поддержка индекса есть, если бит 1 равен 0, то поддержка отсутствует. Остальные биты зарезервированы и не используются. Поддержка остаточного индекса помогает правильно передать данные от (к) устройству. Например, команда записи в буфер устройства WRITE установила размер буфера 344 байта, но устройство может принять только 340 байт. Разница между этими цифрами (4 байта) является остаточной длиной. Если управляющая программа ASPI поддерживает остаточный индекс, она учтет остаточную длину правильно.
    • Байты 1-0 — поддержка выравнивания буфера данных. Значение 0x0000 говорит об отсутствии выравнивания байта, 0x0001 — выравнивание слова, 0x0003 — выравнивание на двойное слово, 0x0007 — восьмибайтовое выравнивание.

    Примечание

    Здесь и далее последовательность символов 0х используется для обозначения числа, представленного в шестнадцатиричной системе счисления.

После определения полей структуры SRB_HAInquiry и выполнения функции SendASP32Command необходимо обработать возвращаемое значение последней. В данном случае это будет сообщение об успешном выполнении — SS_COMP, либо сообщение об ошибке — SS_INVALID_HA. Приведем пример использования структуры SRB_HAInquiry для получения информации об установленных контроллерах.

Листинг 2.1. Получение информации о контроллерах

Приведем еще один пример использования структуры SRBHAInquiry для определения максимального значения буфера контроллера передачи данных.

Листинг 2.2. Определение размера буфера передачи данных

Вот мы и рассмотрели использование структуры SRB_HA_Inquiry реализованной в среде Visual C++. Далее приведем пример использования этой же структуры на языке Visual Basic. Создадим модуль класса и объявим необходимые переменные, константы и функции.

Листинг 2.3. Получение информации о контроллерах на Visual Basic

 

 

2021-04-01

Google сообщил о запуске проекта Dunant

Проект Dunant, начатый в 2018 году, был запущен в эксплуатацию. Трансатлантический интернет-кабель соединяет США и континентальную Европу. Общая протяженность...

подробнее
2020-04-06

Новшества в обновленной Windows 10

Корпорация Microsoft завершила разработку обновления, в котором добавлено множество функций. Обновление содержит как доработку уже имеющихся систем, так...

подробнее

 

Все новости...

 

Научно-Техническое Объединение

Тел.: +7(4752) 55-95-86

E-mail:e-mail