ВУЗ:
Составители:
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 мог создавать файл ввода/вывода в любое время, независимо от того, какой
Страницы
- « первая
- ‹ предыдущая
- …
- 69
- 70
- 71
- 72
- 73
- …
- следующая ›
- последняя »