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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблемы с IRQ Levels  (Прочитано 12713 раз)
0 Пользователей и 1 Гость смотрят эту тему.
De...
Гость
« : 07-09-2004 14:05 » 

Люди, спасайте! проблема заключается в следующем. Есть функция которая работает на DISPATCH_LEVEL, она даже вроде как DPC (точно не знаю так как исходник не мой я его дорабатываю). Нужно в этой функции вызвать ZwCreateFile которая работает в PASSIVE_LEVEL.  чего я тока не творил, ничего не выходит!
пожалуйста, объясните!!!! Заранее спасибо!
Записан
mad
Гость
« Ответ #1 : 07-09-2004 16:05 » 

Вроде или как?
А что ты творил? С этого момента поподробнее...
Фигушки. Так прямо и не вызовешь.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 08-09-2004 07:00 » 

Цитата

Люди, спасайте! проблема заключается в следующем. Есть функция которая работает на DISPATCH_LEVEL, она даже вроде как DPC (точно не знаю так как исходник не мой я его дорабатываю). Нужно в этой функции вызвать ZwCreateFile которая работает в PASSIVE_LEVEL. чего я тока не творил, ничего не выходит!
пожалуйста, объясните!!!! Заранее спасибо!



 Спасаю! Можно запостить WorkItem в отдельный поток и там вызвать эту ф-цию, но только вызов будет асинхронный(ждать то ты не можешь на DISPATCH_LEVEL).
 Сделать все что можно на DISPATCH, а потом отложить обработку на отдельный поток- этот поток можно и самому сделать и в него посылать сообщения или юзать IoQueueWorkItem.
 На идею- вызвать Zw ф-ции на IRQL>= APC_LEVEL забей сразу- уже на APC_LEVEL не завершаться APC, а на DISPATCH тем более, да еще и Paged память трогать нельзя.
Записан
mad
Гость
« Ответ #3 : 08-09-2004 07:13 » 

Цитата

Можно запостить WorkItem в отдельный поток

Ну ты сказанул. Итемы постятся в очередь.

Цитата

да еще и Paged память трогать нельзя

Можно, все, но только аккуратно

А все таки если очень хочется ее вызвать?
Ничего не способен посоветовать? =)
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #4 : 08-09-2004 07:16 » 

Цитата

Ну ты сказанул. Итемы постятся в очередь.


Может стоить изучить NT, системный поток выбирает WorkItem из очереди и выполняет, то есть фактически постится он в отдельный системный поток.

Цитата

Можно, все, но только аккуратно


А потом выходят кривые драйвера, где всякие товарищи пытаются трогать PTE, только не учитывают планировщик и наличие PFN. Все это работает до поры до времени. Баг на баге.
Записан
mad
Гость
« Ответ #5 : 08-09-2004 07:26 » 

хе, если хочется потрогать пте, почему бы его не потрогать? хм.... а ты твердо уверен, что пте связан с планировщиком? =)

да все работает баг на баге, главное, что работает до поры до времени...
Записан
mad
Гость
« Ответ #6 : 08-09-2004 07:33 » 

Я воть тоже решил наконец таки потрогать idt (рефлект с дисэблом int) тк меня совершенно не устраивает отказ в установке isr в лист, есть какойто му..к решил зашарить лист. И не устраивает установка isr в конец листа. Пока немного падает, но скоро будет работать. Глввное найти золотую середину рутин ядра и своих наворотов.
Записан
mad
Гость
« Ответ #7 : 08-09-2004 07:37 » 

про zwR/W не знаю но не думаю что это архи гемор сделать доступ к ним с диспетч или точно сказать, что так сделать без модификации кода zwR/W ob менеджера и тп. невозможно.
Записан
mad
Гость
« Ответ #8 : 08-09-2004 07:41 » 

Цитата

да все работает баг на баге, главное, что работает до поры до времени...


да все работает баг на баге, главное, что работает до поры до зарплаты...
Записан
mad
Гость
« Ответ #9 : 08-09-2004 07:42 » 

что то я уже совсем, сам с собой разговариваю и цитирую =) ладна пайду =)
Записан
med
Гость
« Ответ #10 : 08-09-2004 07:44 » 

aggressive acid neon lite http://www.turbo-shop.ru/main.php?topic=145&value=
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #11 : 08-09-2004 07:54 » 

Цитата

хе, если хочется потрогать пте, почему бы его не потрогать? хм.... а ты твердо уверен, что пте связан с планировщиком? =)


 Да, учи что такое планирование и переключение адресных пространств вобще, без привязке к конкретной операционке.
 Есть такой предмет- Теория Операционных Систем.
 Твой стиль работы я называю- "ассемблерный маньяк", они всегда пытаются что-то фигачить на уровне процессора не учитывая что на нем еще операционка работает, все это непортабельно, криво и ужасно, а главное никому не нужно. Я не понимаю- зачем пытаться работать на уровне процессора в обход системы? Лень выучить как работает система?
Записан
mad
Гость
« Ответ #12 : 08-09-2004 08:11 » 

Что ты знаешь о моем стиле работы, я то как раз всегда пытають подстроиться под возможности ос? Ты сам маньяк, а я сумашедший. Я говорю о том, когда очень надо, а нельзя, хорошо вот что у человека проблема давно решена (но он в принципе не знает об этом) и ему впринципе не критично на каком irql вызывать запись, но все ведь могло быть совсем иначе......к вопросу о надобности. Люди переписывают не только части ос но и реализуют свои части ос (tcp/ip стек, менеджер irq, rtx планировщики, 2е extender) только лишь потому что текущая реализация части не удовлетворяет потребностям задачи.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #13 : 21-09-2004 05:52 » 

А если просто понизить уровень ?
Записан

while (8==8)
Detsel
Гость
« Ответ #14 : 22-09-2004 11:36 » 

Всем спасибо! Но я нашел способ который устраивает меня и не потребовал особых усилий! Еще раз спасибо=)
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #15 : 27-09-2004 13:45 » 

Цитата

А если просто понизить уровень ?


Если это не ты его поднял то будет синяк, у винды.(-)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines