Команда 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 могут иметь одно из следующих значений:
- DISK_NOT_INTI3 (0x00) — дисковое устройство не поддерживает работу через прерывание inti3.
- DISK_INTI3_AND_DOS (0x01) — данное дисковое устройство поддерживает работу через прерывание Intl3 и требуется наличие в системе DOS (Disk Operating System — дисковой операционной системы).
- 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 завершила разработку обновления, в котором добавлено множество функций. Обновление содержит как доработку уже имеющихся систем, так...
подробнее