Spis treści · Praca · Menu · Dysk

### Skrypt obsługi We/Wy dysku

Parametry We/Wy Okno dialogowe We/Wy

Skrypt ten może być używane do logowania błędów We/Wy i rozszerzone przetwarzanie błędów (w tym połączeń zewnętrznych programu). Ta funkcja jest dostępna w Professional Edition tylko.

Skrypt może być załadowany lub zmodyfikowane przez parametry We/Wy urządzenia (przycisk Skrypt).

Plik ondevhsc.txt zawiera krótki opis dostępnych komend i kilka przykładowych skryptów.

Możliwe linii skryptu są w postaci:
IF WARUNEK KOMENDA
lub
KOMENDA
lub
:LABEL
gdzie WARUNEK jest nierówności lub równości (!=, >, <, >=, <=, =) dwóch ilości, i ilość jest albo stałą liczbą całkowitą (0, 1, ...) lub zmienna (lista poniżej) lub proste wyrażenie matematyczne (operatorów +, -, *, %, /, bez nawiasów, ignorując matematyczny porządek z operatorów), np. %ERROR%=0
Komentarze są poprzedzane przez dwa minusy (--)

#### Zmienne

Wszystkie są od zera
-- %CONFIRM% - =1 jeśli Potwierdź naciśnięciu, =0 jeśli Anuluj przycisku
(okno dialogowe czeka na wybór użytkownika)
-- %DISKNUM% - numer dysku w macierzy RAID
-- %TRYNUM% - numer próba
-- %LBA% - numer pierwszego sektora We/Wy
-- %SECNUM% - liczba sektorów
-- %ERROR% - numer błędu
-- %ERROREX% - dodatkowy kod błędu dla trybów dostępu IO SCSI, IO ATA -- %ATASTATUS% - ATA Status Register (zdefiniowany, jeśli BSY bit jest wyzerowany, DOS ATA tylko)
-- %ATAERROR% - ATA Error Register (zdefiniowany, jeśli ERR bit %ATASTATUS% jest ustawiony)
-- %LINE% - bieżący numer linii w skrypcie
-- %SERVICE% - typu usługi We/Wy:
-- 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% - wynik z poprzedniego komendy
-- %LASTERR% - błąd z poprzedniej komendy

#### Komendy

-- SHOWDLG - życie okno wyskakujące We/Wy urządzenia
-- WAIT - oczekiwanie na wybór użytkownika
-- DELAY N - opóźnienie N ms
-- EXECCMD CMDLINE - wykonywanie zewnętrznych komendu CMDLINE za pomocą interpretera komend
(czyli "cmd CMDLINE" w systemie Windows)
-- EXECCMDQ CMDLINE - wykonać bez tworzenia nowego okna konsoli
-- EXEC "FILENAME" CMDLINE - wezwanie zewnętrznego program FILENAME z parametrem CMDLINE
-- EXECQ "FILENAME" CMDLINE - wezwanie bez tworzenia nowego okna konsoli
-- MSDOS - wezwanie procesoru komen (nie są obsługiwane w systemie Linux)
-- GOTO LABELNAME - skok do etykiety LABELNAME w skrypcie (do linii :LABELNAME)
-- RETURN - skrypt przerwie, obsluga błędu zgodnie z parametrami We/Wu urządzenia
-- RETRETRY - skrypt przerwie jak wciśnięty Ponów przycisk
-- RETIGNORE - skrypt przerwie jak wciśnięty Ignoruj przycisk
-- RETABORT - skrypt przerwie jak wciśnięty Przerwij przycisk
-- ADDLOG "FILENAME" LOGLINE - napisz LOGLINE do pliku FILENAME
(LOGLINE łańcuch może zawierać zmienne)
-- CANCELIO - wezwanie CancelIO (WinNT + tylko)
(dostępna, jeśli urządzenie jest otwarte z overlapped się opcja)
-- OVLRESLT N - sprawdź wynik Overlapped-operacji (N=1: czekać; N=0: nie czekać) (WinNT+ tylko)
(muszą być używane, jeśli urządzenie jest otwarte z overlapped opcja)
-- RESETHANDLE - otwórz ponownie uchwyt dysku
-- RESETDEVLIST - update the list of devices, reopen disk handle
-- ATARESET - ATA Soft Reset (DOS ATA tylko)
-- ATARESETDET - ATA Soft Reset i ATA Identify (DOS ATA tylko)

#### Specyfikatory formatu

-- Aby cyfrowy format wyjściowy nazwy zmiennej może nastąpić
-- przez format specyfikatora po dwukropku, np.
-- %LBA:8x% - szerokość: 8, szesnastkowy

#### Przykład skryptu

IF %ERROR%=0 RETURN -- wyjść jeśli nie błąd na We/Wy
IF %ERROR%=128 GOTO LABEL1
IF %ERROR%=5 GOTO LABEL1
RETURN
:LABEL1
IF %CONFIRM%=0 RETRETRY -- spróbuj ponownie , jeśli przycisk Anuluj jest wciśnięty
-- kontynuować wykonywanie skryptu, jeśli Potwierdź jest wciśnięty
EXECCMD /K ECHO error %ERROR% at LBA: %LBA% (%SECNUM%) try: %TRYNUM%. Wpisz EXIT aby powrócić.
IF %TRYNUM%<2 RETRETRY
DELAY 500
ADDLOG "C:\ERRORS.LOG" error %ERROR:x% at LBA: %LBA:10% (%SECNUM%) try: %TRYNUM%
RETIGNORE