Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Есть *.vxd - файл. Как заставить систему видеть *.vxd файл?


Chieftain ©   (2003-06-18 18:26:00) 

Дело в том, что на некоторых машинах код:

VxDHandle := CreateFile("\\.\IDE21201.VXD", 0, 0, nil, 0,
FILE_FLAG_DELETE_ON_CLOSE, 0);

if VxDHandle <> INVALID_HANDLE_VALUE then begin
...
end
else begin
WriteLn(SysErrorMessage(GetLastError));
end;

Вызывает ошибку: Системе не удается найти указанный файл

И ваще, что значит "\\.\"?


Chieftain   (2003-06-19 10:19:00) [1]

Ваще VxD находится в той же директории, что и exe-файл. Проблема на самом деле в том, что на некоторых компах прога и так прекрасно работает, а на некоторых умудряется не находить VxD-шек, находящихся в Windows\System и Windows\System\Iosubsys. Еще одна неприятность - на тех компах что мне доступны - прога работает, а пользователи находящиеся в других городах жалуются. Как же тут нормально поковыряешся?

Спасибо за ответ, кое что начало проясняться.
Только сразу же возникает вопрос, а как гарантированно можно загрузить VxD? :)


NightAngel   (2003-06-18 22:39:00) [2]

И если Вы пытаетесь загрузить VXD, где он у Вас находиться?


NightAngel   (2003-06-18 21:48:00) [3]

При этом "\\.\IDE21201.VXD"если открыть VXD удалось, то значит драйвер сидит в памяти. Что происходит: Фактически, после вызова CreateFileA мы попадаем в Kernel32!ORD_0001, эта функция эмулирует VxDCall, она нас приводит к функции vxd-шки VWIN32 под названием _VWIN32_ReleaseWin32Mutex и затем мы получаем список DDB и ищем что задано. Она не грузит vxd, а просто посылает им DIOC_OPEN и DIOC_CLOSEHANDLE сообщения и находит как динамически так и не динамически загруженные VXD .
Вам необходимо, сначала загрузить VXD, а потом уже пытаться получить его HANDLE.


Наверх

Титульная страница Поиск, карта сайта Написать письмо