Содержание ·
Работа ·
Меню ·
Диск ·
Параметры ввода-вывода
Диалог ввода-вывода
Скрипт обработки ввода-вывода
Скрипт может использоваться для журналирования ошибок ввода-вывода, а также для расширенной
обработки ошибок (включая вызовы внеших программ).
Функция доступна только в Professional Edition.
Скрипт можно загрузить или изменить через окно Параметров ввода-вывода (кнопка Скрипт).
Файл ondevhsc.txt содержит краткое описание доступных команд и некоторые примеры.
Допустимые строки команд имеют вид:
IF УСЛОВИЕ КОМАНДА
или
КОМАНДА
или
:МЕТКА
где УСЛОВИЕ задается равенством или неравенством
(!=, >, <, >=, <=, =) двух величин,
величинам могут быть целые числа (0, 1, ...)
или переменные (список ниже)
или простые математические выражения (операторы +, -, *, %, /,
без скобок, математический порядок операций игнорируется),
например, %ERROR%=0
Комментарии предваряются двумя минусами (--)
Переменные
Целые, включая ноль
%CONFIRM% - =1, если нажата кнопка
Подтвердить, =0, если
Отменить
(выводится окно диалога и ожидается выбор пользователя)
-- %DISKNUM% - номер диска в RAID-массиве
-- %TRYNUM% - номер попытки ввода-вывода
-- %LBA% - первый сектор в операции ввода-вывода
-- %SECNUM% - число секторов
-- %ERROR% - номер ошибки
-- %ATASTATUS% - значение регистра ATA Status (если снят бит BSY, только DOS ATA)
-- %ATAERROR% - значение регистра ATA Error (если установлен бит ERR в
%ATASTATUS%)
-- %LINE% - текущий номер строки в скрипте
-- %SERVICE% - тип ввода-вывода:
-- 0-ATA 1-ATAPI 3-BIOSINT13OLD 4-BIOSINT13
-- 5-DOSINT25 6-DOSINT73 8-DOSMSCDEX 9-DOSFILE
-- 11-WINFILE 12-WINSCSI 14-WIN9XINT13 20-LINUXFILE
-- %LASTRES% - результат предыдущей команды
-- %LASTERR% - ошибка предыдущей команды
Команды
-- SHOWDLG - принудительно показать окно диалога ввода-вывода
-- WAIT - ожидать выбор пользователя
-- DELAY N - ожидать N мсек.
-- EXECCMD CMDLINE - выполнить внешнюю команду CMDLINE используя командый процессор
(эквивалентно "cmd CMDLINE" в Windows)
-- EXECCMDQ CMDLINE - выполнить без создания нового консольного окна
-- EXEC "FILENAME" CMDLINE - вызвать внешнюю программу FILENAME с параметрамии CMDLINE
-- EXECQ "FILENAME" CMDLINE - вызвать без создания нового консольного окна
-- MSDOS - вызвать командный процессор (не поддерживается в Linux)
-- GOTO LABELNAME - перейти к метке LABELNAME в скрипте (к строке
:LABELNAME)
-- RETURN - прервать выполнение скрипта, обработать ошибку согласно
параметрам ввода-вывода
-- RETRETRY - прервать выполнение скрипта как при нажатии на кнопку
Retry
-- RETIGNORE - прервать выполнение скрипта как при нажатии на кнопку
Ignore
-- RETABORT - прервать выполнение скрипта как при нажатии на кнопку
Abort
-- ADDLOG "FILENAME" LOGLINE - записать строку LOGLINE в файл FILENAME
(строка LOGLINE может содержать переменные)
-- CANCELIO - вызов
CancelIO (только WinNT+)
(доступно, если устройство открыто с опцией
overlapped)
-- OVLRESLT N - ожидать результат
Overlapped-операции (N=1: ожидать; N=0: не ожидать) (только WinNT+)
(должно использоваться, если устройство открыто с опцией
overlapped)
-- RESETHANDLE - заново открыть устройство (только WinNT+)
-- ATARESET - выполнить сброс ATA Soft Reset (только DOS ATA)
-- ATARESETDET - выполнить сброс ATA Soft reset и ATA Identify (только DOS ATA)
Спецификаторы формата
-- Для форматирования числа после имени переменной через двоеточие
-- может быть добавлен специфиактор by, например,
-- %LBA:8x% - ширина: 8, шестнадцатеричный вывод
Пример
IF %ERROR%=0 RETURN -- выйти, если нет ошибки
IF %ERROR%=128 GOTO LABEL1
IF %ERROR%=5 GOTO LABEL1
RETURN
:LABEL1
IF %CONFIRM%=0 RETRETRY -- повтор, если нажата кнопка Отмена
-- продолжить выполнение скрипта, если нажата кнопка Подтвердить
EXECCMD /K ECHO error %ERROR% at LBA: %LBA% (%SECNUM%) try: %TRYNUM%. Type EXIT to return.
IF %TRYNUM%<2 RETRETRY
DELAY 500
ADDLOG "C:\ERRORS.LOG" error %ERROR:x% at LBA: %LBA:10% (%SECNUM%) try: %TRYNUM%
RETIGNORE