Организация ввода-вывода. Часть 1. Виртуальные драйверы и виртуальное окружение WINDOWS. Рощин А.В. - 71 стр.

UptoLike

Составители: 

71
Хотя фактически сервисная функция IFSMgr использует
единственную точку входа для всех операций ввода/вывода (открытие,
закрытие, и т.д.) с кодом функции, их отличающим, более удобно иметь
отдельную функцию для вызова каждой операции. При создании функций
оболочки в WRAPPERS.CLB для каждого сообщения
(IFSMgr_Rig0_OpenCreateFile, IFSMgr_Ring0_WriteFile, и т.д.)
целесообразно использовать отдельную функцию,
как это сделано в
VToolsD.
Во время создания системной VM OnSysVmInit открывает файл
VXDSKEL.LOG с вызовом IFSMgr_Ring0_OpenCreateFile. Интерфейс
IFSMgr_Ring0_OpenCreateFile похож на интерфейс функции File Open
INT 21h, с параметрами для имени файла, режима открытия (чтение,
запись, и флаги разделения), атрибутов создания (нормальный, скрытый, и
т.д.), и действия (чтобы не было сбоя, если файл не
существует, и т.д.).
Фактически, режим, атрибуты и параметры действия используют точно те
же значения что и в INT 21h File Open (открытие файла).
IFSMgr добавляет два дополнительных параметра к запросу
открытия (Open), которые не входят в интерфейс INT 21h. Один
двоичный контекст: если он установлен, файл открыт в контексте текущего
потока, и к
нему можно обращаться только, когда этот поток текущий.
Другой параметр содержит флаговый бит, установка которого означает
запрет кэширования чтения и записи для этого файла.
OnSysVmInit использует "создание и усечение" для параметра
действия, так, чтобы файл регистрации был создан, если он не существует,
или открывался и усекался, если существует. OnSysVmInit позволяет
кэшировать
файл (так как ввод/вывод в файл регистрации не критичен) и
использует значение ЛОЖНО для двоичного контекста, так, чтобы VxD
мог создавать файл ввода/вывода в любое время, независимо от того, какой
                                   71



     Хотя    фактически    сервисная    функция    IFSMgr    использует
единственную точку входа для всех операций ввода/вывода (открытие,
закрытие, и т.д.) с кодом функции, их отличающим, более удобно иметь
отдельную функцию для вызова каждой операции. При создании функций
оболочки     в     WRAPPERS.CLB         для       каждого    сообщения
(IFSMgr_Rig0_OpenCreateFile,      IFSMgr_Ring0_WriteFile,     и     т.д.)
целесообразно использовать отдельную функцию, как это сделано в
VToolsD.
     Во время создания системной VM OnSysVmInit открывает файл
VXDSKEL.LOG с вызовом IFSMgr_Ring0_OpenCreateFile. Интерфейс
IFSMgr_Ring0_OpenCreateFile похож на интерфейс функции File Open
INT 21h, с параметрами для имени файла, режима открытия (чтение,
запись, и флаги разделения), атрибутов создания (нормальный, скрытый, и
т.д.), и действия (чтобы не было сбоя, если файл не существует, и т.д.).
Фактически, режим, атрибуты и параметры действия используют точно те
же значения что и в INT 21h File Open (открытие файла).
     IFSMgr добавляет два дополнительных параметра к запросу
открытия (Open), которые не входят в интерфейс INT 21h. Один –
двоичный контекст: если он установлен, файл открыт в контексте текущего
потока, и к нему можно обращаться только, когда этот поток текущий.
Другой параметр содержит флаговый бит, установка которого означает
запрет кэширования чтения и записи для этого файла.
     OnSysVmInit использует "создание и усечение" для параметра
действия, так, чтобы файл регистрации был создан, если он не существует,
или открывался и усекался, если существует. OnSysVmInit позволяет
кэшировать файл (так как ввод/вывод в файл регистрации не критичен) и
использует значение ЛОЖНО для двоичного контекста, так, чтобы VxD
мог создавать файл ввода/вывода в любое время, независимо от того, какой