{img1} |
отказоустойчивые вычислительные системы |
|
DOS устанавливает среду при загрузке Вашей
резидентной подпрограммы TSR. Программы свободны в интерпретации
значений этих переменных. |
резервное копирование данных |
|
{img2} |
домашняя бухгалтерия |
|
Файл COMMAND.COM использует переменную
PATH (путь) для указания каталогов, в которых необходимо произво-
дить поиск загружаемой программы или командного файла.
Так как при загрузке программы файл COMMAND.COM запрашивает
DOS о передаче копии операционной среды, TSR нет необходимости
проводить после ее завершения любые изменения в среде. Время, в
течение которого среда является правильной, - это время инициали-
зации TSR. |
программы архиваторы |
|
{img3} |
домашняя бухгалтерия |
|
Использует ли Ваша TSR среду или по разным причинам не
использует, зависит от приложения. В связи с тем, что после за-
вершения TSR среда является неправильной и она занимает опреде-
- 4-38 -
ленную память, то нет никаких причин хранить ее (хотя отказ от
освобождения среды не оказывает неблагоприятного воздействия на
TSR).
Начальный сегмент среды содержится в PSP по смещению 2Ch
(смотри листинг 4-15 "Структура PSP"). |
операционные системы windows |
|
|
panda antivirus, avast 4 server, avast antivirus, операционная система windows, avast 4, .
asplinux deluxe
|
Если Вы пытаетесь восстановить ¦
¦ адрес критической ошибки, либо адрес прерывания и захвати- ¦
¦ ли другие векторы, то Ваша программа станет уязвимой к ¦
¦ преждевременному завершению. ¦
L---------------------------------------------------------------
Листинг 4-23. Типовое замещение программ ISR дискового в/в
----------------------------------------------------------------
DiskIO PROC FAR
OldInt13 DD 0 ; здесь программа инициализации
OldInt25 DD 0 ; записывает адреса оригинальных
OldInt26 DD 0 ; int 13h, int 25h и int 26h
BusyFlag DB -1 ; флажок защиты от прерывания
; нереентерабельной программы
DiskIOExit0:
pushf ; сохраняет флажки дискового в/в
dec cs:BusyFlag ; снимает блокировку
popf ; восстанавливает флажки диск.в/в
ret 2 ; возврат с удалением флажков, по-
; мещенных при прерывании
DiskIOExit1:
pushf ; сохраняет флажки дискового в/в
dec cs:BusyFlag ; снимает блокировку
popf ; восстанавливает флажки диск.в/в
ret
NewInt13:
inc cs:BusyFlag ; снимает блокировку
pushf ; имитирует прерывание
call cs:OldInt13 ; диспетчирование реальной прог-
; раммой
jmp SHORT DiskIOExit0
- 4-37 -
; переход к общему выходу
NewInt25: inc cs:BusyFlag ; снимает блокировку
call cs:OldInt25 ; диспетчирование реальной прог-
; раммой
jmp SHORT DiskIOExit1
; переход к общему выходу
NewInt26: inc cs:BusyFlag ; снимает блокировку
call cs:OldInt26 ; диспетчирование реальной прог-
; раммой
jmp SHORT DiskIOExit1
; переход к общему выходу
DiskIO ENDP
----------------------------------------------------------------
Проверка типа дисплея
Если необходимо, секция инициализации программы должна про-
верить тип дисплея и других периферийных устройств. TSR необходи-
мо знать совсем немного о дисплее, если она собирается поддержи-
вать горячие ключи. Тип используемого дисплейного адаптера MDA
(монохромный дисплейный адаптер) или CGA (цветной графический
адаптер) определить относительно просто. Многие типы дисплеев
эмулируют либо режим MDA, либо режим CGA. В связи с тем, что типы
дисплеев MDA и CGA в настоящее время являются наиболее общими,
ограничим свое обсуждение только этими двумя типами. Как отличить
дисплей MDA от дисплея CGA, показано в листинге 4-24.
Листинг 4-24. Определение типа дисплея
----------------------------------------------------------------
C40 EQU 1 ; дисплей CGA 40 x 25
C80 EQU 2 ; дисплей CGA 80 x 25
M80 EQU 3 ; дисплей MDA 80 x 25
DisplayType DB 0
int 11h ; прерывание проверки аппаратуры
and al,30h ; выделение видеобитов
mov cl,4 ; сдвиг между битами видеорежима
asr al,cl ; 0 и 1
mov DisplayType,al ; запоминание видеорежима
----------------------------------------------------------------
Освобождение операционной среды
Среда содержит строки символов. Каждая строка имеет имя пере-
менной, за которой следует значение (более полное описание среды
приведено в главе 3).
|
|
|