Команда WRITE (10)

Команда WRITE (10) позволяет записать данные, переданные от инициатора (программы) на носитель (диск).

Описание команды.

  • Байт 0

    В байт следует поместить код команды WRITE (10), равный 2Ah.

  • Байт 1

    Состоит из шести частей. В первую часть (биты 7—5) помещают логический номер устройства (ЛНУ). В данное время этот параметр не используется и оставлен ради совместимости с предыдущими стандартами интерфейса SCSI, поэтому сюда следует записать нулевое значение. Вторая часть (бит 4) используется для управления заменой логических блоков в кэш-памяти (УКП). Если этот бит установлен в 1, контроллер не помещает (и не сохраняет) логические блоки, передаваемые командой READ в кэш-память. При установке в 0 логические блоки помещаются в кэшируемую память для повторного использования. Третья часть (бит 3) определяет доступ к кэш-памяти (ДКП). Установка бита в 0 позволит адресату при выполнении операции чтения обращаться к кэш-памяти. Любая информация, находящаяся в памяти, может быть передана инициирующему устройству непосредственно. Четвертая часть (бит 2) определяет режим записи (Режим). Если этот бит установлен в 1, значит, устройство записи может пропустить операцию предварительного стирания перед новым процессом записи. Если бит установлен в 0, то устройство произведет нормальную операцию записи (по умолчанию). Для носителей с однократной записью этот бит должен быть зарезервирован. Пятая часть (бит 1) зарезервирована и не используется. Шестая часть (бит 0) указывает на относительный адрес (ОА) для двоичного смещения при определении логического адреса.

  • Байты с 2 по 5

    Определяют логический адрес, с которого начнется запись данных на носитель.

  • Байт 6

    Зарезервирован и не используется.

  • Байты 7 и 8

    Определяют количество непрерывных логических блоков данных, которые должны быть переданы. Установка этого поля в 0 не является ошибкой и указывает на то, что никакие данные не будут переданы.

  • Байт 9

    Служебный байт, завершающий команду. Не используется.

Если при выполнении команды WRITE произойдут ошибки, байт статуса установится в STATUS_RESCONF и никакие данные не будут записаны. Приведем примеры работы с командой записи. Напишем функцию, которая запишет на носитель 250 блоков с данными, где размер каждого блока равен 4 байтам.

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

На языке Visual Basic аналогичный пример приведен в листинге 9.20.

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

 

 

2021-04-01

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

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

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

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

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

подробнее

 

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

 

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

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

E-mail:e-mail