Cache': перехват текущего устройства

2933
знака
1
таблица
0
изображений

Евгений Каратаев

Эта заметка описывает программный перехват ввода-вывода текущего устройства в Cache'. Неудобство стандартных устройств mumps, а точнее определенного их поведения состоит в том, что если выполняется программный код, осуществляющий ввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе как установкой возможных опций устройству. В то время как в некоторых случаях очень нужно иметь возможность выполнить так называемый унаследованный (legacy) код, который оперирует текущим устройством, но при этом в самих операциях ввода-вывода произвести дополнительные действия.

Ситуация примерно аналогична вводу-выводу в сишном стиле и в стиле C++, когда в первом случае мы можем открыть файл и передать его коду, а во втором случае мы можем создать объект ввода-вывода и переопределить для него операции чтения - записи.

Для перехвата операций ввода-вывода текущего устройства нужно

Сделать отдельную рутину, в которой прописать функции, вызываемые при операциях ввода-вывода.

Указать текущему устройству эту рутину как мнемоническую в команде use

Включить перенаправление для текущего устройства

В функциях переопределяющих операции ввода-вывода можно использовать штатное поведение текущего устройства если отключить перенаправление и при выходе из обработчика снова его включить.

Рутина-перехватчик должна реализовать на свое усмотрение метки

rstr(len,to) Чтение с опциональным указанием заданной длины и таймаута
rchr(to) Чтение номера символа
wstr(expr) Запись строки W expr
wchr(expr) Запись символа W *expr
wtab(expr) Запись пропуска W ?expr
wnl Перевод строки W !
wff Очистка экрана W #

Шаблон рутины примерно такой:

rstr(len,to)

D $ZU(82,12,0)

if $D(len)&&$D(to) d

. ; перехват

. R data#len:to

e i $D(len) d

. ; перехват

. R data#len

e i $D(to) d

. ; перехват

. R data:to

e d

. ; перехват

. R data

D $ZU(82,12,1)

; перехват

Q $G(data)

rchr(to)

D $ZU(82,12,0)

i $d(to)

. ; перехват

. R *data:to

. ; перехват

e d

. ; перехват

. R *data

. ; перехват

D $ZU(82,12,1)

; перехват

Q data

// W expr

wstr(expr)

D $ZU(82,12,0)

; перехват

W expr

D $ZU(82,12,1)

Q

// W *expr

wchr(expr)

D $ZU(82,12,0)

; перехват

W *expr

D $ZU(82,12,1)

Q

// W ?expr

wtab(expr)

D $ZU(82,12,0)

; перехват

W ?expr

D $ZU(82,12,1)

Q

// W !

wnl

D $ZU(82,12,0)

; перехват

W !

D $ZU(82,12,1)

Q

// W #

wff

D $ZU(82,12,0)

; перехват

W #

D $ZU(82,12,1)

Q

После чего можно пользоваться, указывая прехватчик:

u dev::"^ИМЯРУТИНЫ" ; указываем какую мнемонику использовать

D $ZU(82,12,1) ; реально включаем флаг использования

d normal() ; что будет писать в текущий девайс

D $ZU(82,12,0) ; перед закрытием девайса возвращаем флажок

c dev

Кроме программного назначения перехвата для обработки вывода наследованного кода можно использовать также и другие возможности: спулер, запись-чтение внешних файлов, межпроцессное взаимодействие.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://karataev.nm.ru/


Информация о работе «Cache': перехват текущего устройства»
Раздел: Информатика, программирование
Количество знаков с пробелами: 2933
Количество таблиц: 1
Количество изображений: 0

Похожие работы

Скачать
142131
7
0

... ; Если в системную плату не установлено дополнительных контроллеров В целях выявления конфликтов Отключив эту опцию вы также увеличите скорость загрузки своей системы. Потому как BIOS контроллера не будет загружаться и соответственно опрашивать устройства на этом канале. Так что если вы не используете дополнительных контроллеров, лучшим вариантом будет отключение этой опции. USB ...

Скачать
105850
141
29

... c 4.2 Firewall a c c 4.3 Аудит доступа a c c 5 Общая оценка состояния сервера a c c Отчет по состоянию сети п/н Критично Не удовлет-ворительно Удовлет-ворительно 1 Сегмент ЛВС c c a 2 Канал выхода в Интернет c c a 3 Защита от НСД изнутри a c c 4 Защита от НСД из вне a c c 5 Общая оценка состояния ЛВС c a c 1 Сегмент ЛВС c c a 1.1 ...

Скачать
195301
0
0

... нажатия клавиш и сообщения, отображаемые на мониторе. Это скомпрометирует все ваши пароли, сообщения и т.п. Такая атака может быть предотвращена соответствующим экранированием всего компьютерного оборудования и сетевых кабелей с тем, чтобы они не испускали излучения. Технология такого экранирования известна под названием Tempest и используется рядом правительственных служб и организаций, ...

Скачать
332503
41
0

... по соответствующему полю). В окне Конструктора таблиц созданные связи отображаются визуально, их легко изменить, установить новые, удалить (клавиша Del). 1 Многозвенные информационные системы. Модель распределённого приложения БД называется многозвенной и её наиболее простой вариант – трёхзвенное распределённое приложение. Тремя частями такого приложения являются: ...

0 комментариев


Наверх