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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 [4]  Все   Вниз
  Печать  
Автор Тема: Не должно быть здесь этой ошибки! :confused:  (Прочитано 91874 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #90 : 18-12-2011 13:12 » 

загрузку-выгрузку посмотрите...
на самом деле ставьте везде - кашу маслом не испортишь)

Код:
NTSTATUS ReadMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
GetMessage(MSG_READ, DeviceObject, NULL);
#if DBG
          DbgPrint("Read", MSG_READ);
        #endif
return STATUS_SUCCESS;

}
а где завершение IRP?! если это обработчик IRP.
http://support.microsoft.com/kb/320275/ru
ваш случай пятый скорее всего.

Добавлено через 1 минуту и 13 секунд:
и еще раз внимательно читайте описание драйвера который вы пытаетесь собрать.
http://drp.su/ru/driver_dev/03_01-8.htm

Добавлено через 1 минуту и 20 секунд:
что такое IRP
« Последнее редактирование: 18-12-2011 13:14 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Fredwriter
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #91 : 18-12-2011 13:23 » 

В том то и дело, что в книге не было в этих местах никакой обработки IRP. Там было только то, что я выложил. Ну ладно если надо, я могу это добавить, но разве в этом проблема? Может он из-за этого комп вырубать?
Записан

Ищущий да обрящет
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #92 : 18-12-2011 13:39 » 

 Жжешь Улыбаюсь)
в книге приведены КУСКИ кода. это не значит что они будут работать без осознания ЧТО ИМЕННО они делают и ЗАЧЕМ!

пока вы не начнете хотя бы пытаться понять что за входные переменные к вам приходят в разных функциях, что с ними делать в той или иной ситуации, зачем и когда написанные вами функции вызываются  - дальнейший разговор бессмыслен)
« Последнее редактирование: 18-12-2011 13:41 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Fredwriter
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #93 : 18-12-2011 13:50 » 

Хорошо, в книге приведены куски кода, и это не значит что они будут работать без осознания ЧТО ИМЕННО они делают и ЗАЧЕМ! Я пишу драйвер в первый раз в жизни, и некоторые понятия еще до конца в голове не уложились, поэтому могу по крупному тупить, а вы вместо того, что-бы ржать поддержали бы меня бедолагу), и пожалуйста, помогли бы мне прямыми ответами на вопросы, теория она обычно со временем приходит во всяком случае в в моём случае.
PS Ведь согласитесь, программирование в режиме ядра отличается от программирования в обычном родном пользовательском режиме. И тем более программирование драйверов содержит огромное кол-во теории с которой не так то легко справиться. И еще я писал то раньше на Delphi, и пришлось мне Си немного изучить - объём информации еще больше вырастает. Поэтому я и завёл эту тему я думал, что этот форум для этого и нужен.
« Последнее редактирование: 18-12-2011 14:14 от Fredwriter » Записан

Ищущий да обрящет
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #94 : 18-12-2011 14:13 » 

а вы вопросы учитесь правильные задавать)
в правильном вопросе содержится часть ответа)
Цитата
В том то и дело, что в книге не было в этих местах никакой обработки IRP. Там было только то, что я выложил. Ну ладно если надо, я могу это добавить, но разве в этом проблема?
Может он из-за этого комп вырубать?
1. есть такая вероятность.
2. может.
я вам достаточно четко пытаюсь задать направление куда копать дальше... можете копать. а можете не копать)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Fredwriter
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #95 : 18-12-2011 14:16 » new

Это то я копну конечно вроде не глубоко.)

Добавлено через 1 час, 31 минуту и 7 секунд:
Поставил завершение IRP запроса везде, где надо все равно вырубает как-будто так и надо).
Вот так я поставил завершение IRP - запроса:
Код:
NTSTATUS ReadMyDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
    NTSTATUS status = STATUS_SUCCESS;
    GetMessage(MSG_READ, DeviceObject, NULL);
    #if DBG
      DbgPrint("Read", MSG_READ);
    #endif
    Irp->IoStatus.Status = status;
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return status;  

}

« Последнее редактирование: 18-12-2011 15:47 от Fredwriter » Записан

Ищущий да обрящет
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #96 : 18-12-2011 19:52 » 

   irp->IoStatus.Information = 0;
еще.


ищите выполнение какой из функции драйвера приводит к результату.
отключите все кроме DriverEntry и Unload, потом включайте по очереди. проверяя загрузку-выгрузку по паре раз.
в Unload тоже DbgPrint поместите...
« Последнее редактирование: 18-12-2011 19:56 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Fredwriter
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #97 : 18-12-2011 20:32 » 

спасибо за поддержку, но у меня теперь не перезагружается, я немного изменил код управляющей программы, теперь у меня она работает по следующей последовательности:
1 - загрузка
2 - открытие
4 - запись
5 - чтение
3 - закрытие
9 - выгрузка

Записан

Ищущий да обрящет
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #98 : 19-12-2011 22:00 » 

на самом деле если драйвер был бы правильно написан - перезагружаться не должно было ни при каких обстоятельствах.
код приложения априори не должен приводить к краху системы.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: 1 2 3 [4]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines