Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: API and IOCTL  (Прочитано 10985 раз)
0 Пользователей и 1 Гость смотрят эту тему.
igor_m
Гость
« : 03-02-2004 10:41 » 

На апи пишем DeviceIoControl( IOCTL_SET_COMMAND1, // Комманда
а драйвер сразу знает что это FilterIoControl.
1) А КАК это получилось?
2) А могу я новые комманы так вввоить?КАК?
Система W98 драйвер Vpacket.vxd из 98DDK.
У Финогенова на ассемблере вроде нормально расписано , но на ассемблере .         Или я опять чего-то не понял?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 04-02-2004 06:31 » 

Цитата

На апи пишем DeviceIoControl( IOCTL_SET_COMMAND1, // Комманда
а драйвер сразу знает что это FilterIoControl.


Ничего не понял. Ты объясни. Драйвер WDM?

 
Цитата

У Финогенова на ассемблере вроде нормально расписано , но на ассемблере . Или я опять чего-то не понял?



А он разве под Win драйвера пишет? Вобще не знаю ни одной его статьи или книги с драйверами под Win.
Записан
Anonymous
Гость
« Ответ #2 : 04-02-2004 07:40 » 

Прошу прощения за сумбур.
1)В 5 части статьи Грома "Как писать драйвера" в конце читаем :
#define IOCTL_SET_COMMAND1 // наш код управления .....
res = DeviceIoControl ....
и дальше сразу :
Вызов такой функции приведет к обращению драйвером к функции FilterIoControl ---> как это получиось?   или где про это прочитать?

2)Основы разработки прикладных виртуальных драйверов
Часть 2. Взаимодействие драйвера и приложения
К.Г.Финогенов номера с 2 по 11
http://www.compress.ru/Article.asp?id=991
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #3 : 04-02-2004 07:56 » 

Цитата

В 5 части статьи Грома "Как писать драйвера" в конце читаем :
#define IOCTL_SET_COMMAND1 // наш код управления .....
res = DeviceIoControl ....
и дальше сразу :
Вызов такой функции приведет к обращению драйвером к функции FilterIoControl ---> как это получиось? или где про это прочитать?


Сразу скажу что статью Грома я не читал, но попытаюсь объяснить. При вызове DeviceIoControl операционная система вызовет обработчик кода IRP_MJ_DEVICE_CONTROL, которую регистрирует драйвер при своей загрузке. В этом обработчике он проверяет какой IOCTL  ему послали и в соотвествие с этим вызывает функции.

Цитата

2)Основы разработки прикладных виртуальных драйверов
Часть 2. Взаимодействие драйвера и приложения
К.Г.Финогенов номера с 2 по 11


А какие там драйвера- Legacy NT, WDM или те что в Win 95/98. И что за манера писать драйвера на ассемблере, судя по асму- там не NT и не WDM драйвера- их нормальные люди на асме не пишут.
Записан
igor_m
Гость
« Ответ #4 : 04-02-2004 08:34 » 

Спасибо уже более ясно. Но вот вопрос: А список IOCTL которые драйвер может обрабатывать откуда он берёт? Можно этот список корректировать?

И ещё на ассемблернуютему есть Iczelion Уроки VXD. Но этого ресуса я уже не вижу.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #5 : 04-02-2004 11:08 » 

Сразу скажу- все что я говорю относится только к Windows NT/2000/XP/2003.

Цитата

А список IOCTL которые драйвер может обрабатывать откуда он берёт?

Это запрограммировано.

switch(IOCTL_CODE)
{
case IOCTL_CODE_1:
ProcessIoctlCode1();
break;
........
}

Цитата

Можно этот список корректировать?

 
в откомпилированном драйвере- нет, можно написать фильтр драйвер.

Цитата

И ещё на ассемблернуютему есть Iczelion Уроки VXD. Но этого ресуса я уже не вижу.


Забудь про VxD- это никому уже не нужно, также как и Win95/98/Me.
Записан
igor_m
Гость
« Ответ #6 : 04-02-2004 12:14 » new

С помощью Вашей подсказки кажется нашёл:
"Драйвер с нуля"
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DriverDeviceControl;

"Как писать драйвера (часть 3)"
MajorFunctions[IRP_MJ_DEVICE_CONTROL] = FilterIoControl;

Так получается что IRP_MJ_DEVICE_CONTROL  где-то описаны?
И описаны они только для NT/2000/XP/2003?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #7 : 04-02-2004 12:23 » 

Цитата

Так получается что IRP_MJ_DEVICE_CONTROL где-то описаны?


В DDK. Качай любой для направления NT с этого сайта и читай.
В куче книг, статей и т.д.  Набери в googl'e IRP_MJ_DEVICE_CONTROL  получишь около 1000 ссылок.
Записан
igor_m
Гость
« Ответ #8 : 04-02-2004 12:27 » 

Спасибо.Будем посмотреть.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines