Команда 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 завершила разработку обновления, в котором добавлено множество функций. Обновление содержит как доработку уже имеющихся систем, так...
подробнее