![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Renim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
Есть-ли в Win XP аналог vwin32.vxd?
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
С xp не встречался, но, может быть, пригодится:
И в 98-95 нет такого vxd - vwin32. Не случайно CreateFile-у передается имя вот так: hDevice = CreateFile("\\\\.\\vwin32",... Это всего лишь затычка в kernel-ле, посылающая вызовы из приложения конкретным vxd-шкам. Т.е. по смыслу это попытка создать некий сервис, позволяющий из win32 вызывать функции(аналоги int 21h,ax=73xxh, IOCTL, и т.п.), не заботясь о том, что на самом деле вызов должен идти к реальному vxd. Так что, раз тут нет никакой связи с реальными драйверами, то вопрос можно поставить так: есть ли возможность в XP приложениям иметь достаточно низкоуровненвый доступ к устройствам(читать сектора и тп) ? Если да, то скорее всего, нужен совершенно аналогичный вызов к аналогу kernel-а в XP... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Renim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
Возможно ты прав. Но почему тогда в MSDN-е написано:
"Windows 95/98/Me provides a VxD named VWIN32.VXD that supports..." Кстати, в XP CreateFile("\\\\.\\vwin32",... не работает - возвращает 0xffffffff. А GetLastError совместно с FormatMessage говорят, что "Задан неверный параметр." |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Если писать на СИ, то рабочий код(мы с Sheff-ом проверяли) выглядит именно так, те :
VxDFileName string "\\\\.\\vwin32"+0 (Строка, оканчивающаяся нулем, я просто си не знаю - как это записать точно), и вызов: CreateFile(VxDFileName,.. На самом деле kernel-у передается вот это имя(если на асм писать): VxDFileName db '\\.\vwin32',0 ; Имя VxD и это тоже работает(под 98). Попробуй в XP передать все-же нуль-терменированную строку, но вроде бы, судя по MSDN и тому, что у тебя возвращает такой Last Error(характерный для того случая, когда передаешь, к примеру, имя несуществующей VxD), нифига не должно работать... И еще что я думаю... Что такое вызов vwin32 через DeviceIOControl ? Фактически, вызов сервиса драйвера. В 98 как было ? Пишешь свой драйвер(vxd) и зовешь его сервисы, загрузив предварительно либо динамик vxd, либо указав статик-vxd в файле конфигурации(чтобы он дефолтом грузился при старте винд.). Видимо, в NT(XP) необходимо либо искать такой стандартный драйвер(который читает сектора) - там они wdm, вроде бы, называются(кстати, можно попробовать вызвать любой стандартный wdm аналогично), либо писать драйвер самому - а он уже разыщет среди стандартных драйверов wdm такие сервисы, которые тебе нужны... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Renim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
У меня установлен Win XP... Я задавал поиск файлов *.wdm по всему диску - ниодного не нашел... Vxd-шек нашлось всего 4 штуки. По ходу дела у XP драйвера валяются в каком-то другом формате... И DriverStudio (по крайней мере версия 2.5) про этот формат пока ничего не знает.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |