Команда SC_GET_DEV_TYPE

Команда SC_GET_DEV_TYPE позволяет просканировать шину, определив тип установленных устройств. С ее помощью можно однозначно выяснить, под каким адресом (номером) в системе установлено определенное устройство. Все поддерживаемые типы устройств перечислены в файле Scsidefs.h в виде констант.

  • DTYPE_DASD

    Устройство прямого доступа (например, жесткий диск).

  • DTYPE_SEQD

    Устройство с последовательным доступом (например, устройство записи на магнитную ленту).

  • DTYPE_PRNT

    Принтер.

  • DTYPE_PROC

    Процессор.

  • DTYPE_WORM

    Устройство с однократной записью (например, накопитель CD-R).

  • DTYPE_CDROM

    Устройство CD-ROM.

  • DTYPE_SCAN

    Сканер.

  • DTYPE_OPTI

    Устройство оптической записи (например, магнитооптические дисково¬ды (МО), CD-RW и DVD-RW).

  • DTYPE_JUKE

    Различные устройства преобразования (например, музыкальный автомат).

  • DTYPE_COMM

    Устройство связи.

  • DTYPE_UNKNOWN

    Неизвестный тип устройства.

Только определив правильный тип устройства, можно начинать работу с ним. Это связано с тем, что для разных устройств существуют свои, свойственные только им, команды управления. Использование неподдерживаемых команд приведет в лучшем случае к сбою в программе или зависанию компьютера. Структура для команды SC_GET_DEV_TYPE изменится.

Название структуры изменилось. Теперь она называется SRB_GDEVBiock. Точнее сказать, первые пять полей остались неизменными, а были добавлены новые значения. По такому же принципу построены и остальные команды. Рассмотрим новые поля структуры SRB_GDEVBiock подробнее.

  • SRB_Target
  • В это поле заносится идентификатор целевого устройства. Представляет собой номер в диапазоне от 0 до 7. Максимальное значение определено в виде константы MAXTARG в файле Scsidefs.h.
  • SRB_Lun

    Сюда надо ввести логический номер устройства, расположенного на шине. Как правило, в большинстве случаев это поле не используется.

  • SRB_DeviceType

    Сюда после выполнения функции SendASPI32Command будет помещен тип найденного устройства. Кроме этого, определено три возвращаемых значения. Если функция успешно завершена, будет возвращено значение SS_COMP. При использовании недопустимого номера для контроллера функция возвратит значение SS_INVALID_HA. При отсутствии поддерживаемых устройств будет возвращено значение SS_NO_DEVICE. После описания структуры SRB_GDEVBlock приведем пример ее использования.

Листинг 2.4. Определение типа устройства на Visual C++

В данном примере были просканированы шины всех имеющихся в нашей системе контроллеров и определены типы подключенных устройств. Теперь приведем пример определения типов устройств, реализованный на языке Visual Basic. Создадим модуль класса и объявим необходимые переменные, константы и функции следующим образом.

Листинг 2.5. Определение типа устройства на Visual Basic

На данном примере было продемонстрировано определение типа установленного устройства посредством Visual Basic. На этом можно завершить описание команды SC_GET_DEV_TYPE. Хочу только добавить, что использование этой команды при написании своей программы не просто желательно, а всегда должно применяться в обязательном порядке для корректного последующего управления выбранным типом оборудования.

 

 

2021-04-01

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

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

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

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

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

подробнее

 

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

 

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

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

E-mail:e-mail