Скрипт может использоваться для журналирования ошибок ввода-вывода, а также для расширенной обработки ошибок (включая вызовы внешних программ). Функция доступна только в 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 7-DOSASPI 8-DOSMSCDEX 9-DOSFILE 11-WINFILE 12-WINSCSI 13-WIN9XINT13 14-WINATA 20-LINUXFILE 21-LINUXSCSI |
%LASTRES% | результат предыдущей команды |
%LASTERR% | ошибка предыдущей команды |
Для форматирования числа после имени переменной через двоеточие может быть добавлен специфиактор 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