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

UptoLike

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

72
поток является текущим. Это позволяет VxD открывать файл во время
Sys_VM_Init, когда начальный поток системной VM является текущим, а
осуществлять запись в файл тем же самым обработчиком во время другого
сообщения VM или потока, когда текущим является другой поток.
OnSysVmInit держит файл открытым и хранит дескриптор файла в
глобальной переменной fh так, чтобы обработчики
сообщений другого
SKELETON.VXD могли также писать в файл. Файл закрывается
обработчиком сообщения OnSysVmTerminate, при завершении работы
Windows.
Все обработчики сообщений, включая OnSysVmInit, осуществляют
запись в этот уже открытый файл, используя IFSMgr_Ring0_WriteFile. Эта
функция использует параметры, которые обычно используются для записи:
дескриптор, буфер и счетчик. Однако, если большая часть файловых
функций ввода/
вывода изменяет положение указателя файла
автоматически с каждой операцией чтения и записи,
IFSMgr_Ring0_WriteFile требует явного задания параметра положения
указателя файла. Это означает, что вызывающий должен сохранять у себя
текущее положение указателя файла. SKELETON делает это, обнуляя при
инициализации глобальную переменную file_pos, и инкрементируя ее
количеством байтов, записанных с каждым обращением к
IFSMgr_Ring0_WriteFile
.
IFSMgr_Ring0_WriteFile не выполняет никакого форматирования,
она просто пишет строку буфера. Перед вызовом IFSMgr_Ring0_WriteFile
каждый обработчик сообщения сначала форматирует буфер, используя
сервисную функцию VMM _Sprintf, представленную в библиотеке
VXDWRAPS.CLB DDK .
                                    72



поток является текущим. Это позволяет VxD открывать файл во время
Sys_VM_Init, когда начальный поток системной VM является текущим, а
осуществлять запись в файл тем же самым обработчиком во время другого
сообщения VM или потока, когда текущим является другой поток.
     OnSysVmInit держит файл открытым и хранит дескриптор файла в
глобальной переменной fh так, чтобы обработчики сообщений другого
SKELETON.VXD могли также писать в файл. Файл закрывается
обработчиком сообщения OnSysVmTerminate, при завершении работы
Windows.
     Все обработчики сообщений, включая OnSysVmInit, осуществляют
запись в этот уже открытый файл, используя IFSMgr_Ring0_WriteFile. Эта
функция использует параметры, которые обычно используются для записи:
дескриптор, буфер и счетчик. Однако, если большая часть файловых
функций    ввода/вывода      изменяет    положение      указателя    файла
автоматически     с       каждой   операцией      чтения      и     записи,
IFSMgr_Ring0_WriteFile требует явного задания параметра положения
указателя файла. Это означает, что вызывающий должен сохранять у себя
текущее положение указателя файла. SKELETON делает это, обнуляя при
инициализации глобальную переменную file_pos, и инкрементируя ее
количеством     байтов,     записанных   с     каждым      обращением    к
IFSMgr_Ring0_WriteFile.
     IFSMgr_Ring0_WriteFile не выполняет никакого форматирования,
она просто пишет строку буфера. Перед вызовом IFSMgr_Ring0_WriteFile
каждый обработчик сообщения сначала форматирует буфер, используя
сервисную функцию VMM _Sprintf, представленную в библиотеке
VXDWRAPS.CLB DDK .