Команда SC_RESET_DEV

Команда SC_GET_DISK_INFO используется для получения информации о типе диска выбранного устройства SCSI, его номера и геометрии, а также возможность поддержки им системного прерывания BIOS номер 13 (inti3). Данное прерывание позволяет работать с диском на низком уровне. Следует заметить, что полученное значение номера диска является его физическим номером, а не логическим номером устройства. Команда получения типа диска SC_GET_DISK_INFO не поддерживается в системе Windows NT. Структура, описывающая эту команду, называется SRB_GetDiskinfo.

Рассмотрим каждое поле структуры в отдельности.

  • SRB_Cmd

    Это поле должно содержать код команды SC_GET_DISK_INFO.

  • SRB_Status

    После выполнения команды здесь будет храниться результат вызова функции SendASPi32Command. Ниже приведены возможные значения:

    • SS_COMP — операция успешно завершена.
    • SS_INVALID_HA — попытка использовать недопустимый (пустой) номер контроллера.
    • SS_INVALID_SRB — одно или большее количество полей в структуре SRB_GetDiskinfo были установлены неверно.
    • SS_NO_DEVICE — в системе не обнаружено поддерживаемого устройства.
  • SRB_HaId

    Сюда нужно поместить номер выбранного контроллера. Нумерация начинается с 0. Максимальное значение номера контроллера равно 7.

  • SRB_Flags

    Это поле зарезервировано и должно быть установлено в 0.

  • SRB_Hdr_Rsvd

    Это поле зарезервировано и должно быть установлено в 0.

  • SRB_Target

    Сюда помещается идентификатор устройства. Получить это значение можно, используя команду SC_HA_INQUIRY. Нумерация устройств всегда начинается с 0а заканчивается 7.

  • SRB_Lun

    Логический адрес устройства. В Win32 это поле игнорируется.

  • SRB_DriveFlags

    После успешного выполнения команды SCSI в это поле будет помещено следующее значение.

    • Биты 7—2 зарезервированы.
    • Биты 1—0 могут иметь одно из следующих значений:
      1. DISK_NOT_INTI3 (0x00) — дисковое устройство не поддерживает работу через прерывание inti3.
      2. DISK_INTI3_AND_DOS (0x01) — данное дисковое устройство поддерживает работу через прерывание Intl3 и требуется наличие в системе DOS (Disk Operating System — дисковой операционной системы).
      3. DISK_INTI3 (0x02) — дисковое устройство поддерживает работу через прерывание Intl3, но не требуется наличия в системе DOS.
  • SRB_Int13DriveInfo

    После успешного выполнения команды SCSI это поле будет содержать физический номер диска. Правильное значение номера может лежать в диапазоне от 0x00 до OXFF. Кроме того, значение номера диска будет корректным только в том случае, если поле SRB_DriveFiags установится в DISK_INT13_AND_DOS или DISK_INT13.

  • SRB_Heads

    После успешного выполнения команды SCSI это поле будет содержать общее количество головок. Данные поля будут корректными только в том случае, если поле SRB_DriveFiags установится в DISK_INT13_AND_DOS или DISK_INT13.

  • SRB_Sectors

    После успешного выполнения команды SCSI это поле будет содержать общее количество секторов. Значение может лежать в пределах от 0x00 до 0хFF. Данные поля будут корректными только в том случае, если поле SRB_DriveFlags установиться В DISK_INT13_AND_D0S или в DISK_INT13. Возвращаемым значением функции SendASPi32Command при выполнении текущей команды SC_GET_DISK_INFO могут быть следующие значения.

    • SS_COMP — операция успешно завершена.
    • SS_INVALID_HA — попытка использовать недопустимый (пустой) номер котроллера.
    • SS_INVALID_SRB — одно или большее количество полей в структуре SRB_GetDiskinfo были установлены неверно.

    Теперь приведем пример использования команды SC_GET_DISK_INFO.

    Листинг 2.12. Пример использования команды SC_GET_DISK_INFO на Visual C++

    На этом примере продемонстрировано, как получить информацию о дисковом устройстве, расположенном на контроллере под номером 0 и имеющем идентификатор равный 3. А теперь приведу пример работы со структурой SRB_GetDiskinfo на языке Visual Basic.

    Листинг 2.13. Пример использования команды SCJ3ET_DEV_XNFO на Visual Basic

    В приведенном коде мы получили информацию об устройстве с идентификатором, равным 1, расположенном на контроллере под номером 0. Приступаем к изучению следующей команды.

 

 

2021-04-01

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

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

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

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

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

подробнее

 

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

 

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

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

E-mail:e-mail