Какие-нибудь функции или сервисы существуют,чтобы организовать
копирование файла при помощи статического драйвера?
(наподобие CopyFile)
То есть нужно,чтобы в виндах 98 мой драйвер реагировал на некоторые действия пользователя - и копировал один файл на место другого - не знаю как это сделать.В DDK не нашел ответа
VxD - сделал но по-другому04.03.02 08:33 Автор: New Статус: Незарегистрированный пользователь
> Какие-нибудь функции или сервисы существуют,чтобы > организовать > копирование файла при помощи статического драйвера? > (наподобие CopyFile) > > То есть нужно,чтобы в виндах 98 мой драйвер реагировал на > некоторые действия пользователя - и копировал один файл на > место другого - не знаю как это сделать.В DDK не нашел > ответа
Если это кому-нибудь потребуется
Нашел в DDK98 где про файлы написано - сделал через IFSMgr_Ring0_FileIO
> > Какие-нибудь функции или сервисы существуют,чтобы > > организовать > > копирование файла при помощи статического драйвера? > > (наподобие CopyFile) > > То-есть, звать CreateFile, ReadFile ... из VxD ? > У меня есть немножко мыслей(кода), могу занести.
Вот ИМЕННО ЭТО Я И ХОТЕЛ УЗНАТЬ
Очень нужны (просто необходимы такие мысли)
Плиз,подскажи,а то своим умишком долго еще доходить буду
Пардон:: сразу не ответил.02.03.02 05:55 Автор: Chingachguk <Chingachguk> Статус: Member
> Очень нужны (просто необходимы такие мысли) > Плиз,подскажи,а то своим умишком долго еще доходить буду
Тут вот какое дело. Я тут делал чтение своп-файла из вин32.(По этому поводу я долго пытал z0 в нитке ниже). И наткнулся
(далее речь идет о вин98)
на вот какой фикус-прикус:
зовем, к примеру (из win32-кода) CreateFile. Вызов проходит через kernel32. Но, как бы это сказать - транзитом: реально вызывается одна из VxD-шек, причем вызов ее до боли напоминает вот это:
Это пошел мой код, который сквозняком вызывает РЕАЛЬНЫЙ сервис из VxD:
Вызов того самого ORD_0001(процедура кернела):
.data
ORD_0001 dd 0BFF713D4h
TestName db "test.dat",0
SwpName db "C:\WINDOWS\win386.swp",0
;...
;; mov esi,offset SwpName ; В этом случае нам вернется 5 в EAX
mov esi,offset TestName ; А в этом - нормальное число (дескриптор на файл ?)
push ecx
mov eax,716Ch
push eax ; ?
push 0002a0010h ; 2a - VWIN32.VXD, 10 - ???
call dword ptr ORD_0001 ; VxDCall
; Если в ESI имя swap-а, то вернется в EAX 5(Доступ запрещен ?)
; Если в ESI имя нормального файла, то все OK - например, EAX=2e9h
А вот чтаа такое этот вызов на самом деле:
Функция LFN 6Ch: Создать или открыть файл с длинным именем(DOS !)
Ввод: AX=716Ch
BX=режим доступа Windows95
Биты 0-2:доступ
000-только для чтения
001-только для записи
; и т.д.
По моему мнению, этот сервис* можно тем более звать из других VxD через стандартный int 20h.
А к тому ж я вроде бы как видал, что вызовы ring0(VxD) - > ring3(kernel32) возможны, но тут лучше спецов спроси - я дилетант, вообще-то ж)
* Видимо, VWIN32.VXD - сборник, но реально - VMM32 ?
замечания02.03.02 09:35 Автор: z0 <z0> Статус: Member
именно VWIN32 - т.н. "третье ядро" чикаги
все функции нужные APP-ам там сидят
VMM собственно и есть именно VMM - управлялка виртуальных машинок и драйверков
просто исторически она грузит всех (кто-то ж должен начинать) и поэтому популярнее чем VWIN32 (с точки зрения новичков)
Всмысле, хочешь перехватить запись в файл?28.02.02 11:01 Автор: Zef <Alloo Zef> Статус: Elderman
Нет не перехватить,а именно просто скопировать файл - я только недавно начал драйверами интересоваться - поэтому много чего еще не понимаю.
А в DDK я видел fs_renamefile,fs_openfile,fs_readfile и подобные им.
Только вот не нашел понятного примера их использования.
Что такое pioreq pir?
Плиз,объясните