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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблемы с IRQ Levels  (Прочитано 12778 раз)
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 » new

Цитата

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


да все работает баг на баге, главное, что работает до поры до зарплаты...
Записан
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