De...
Гость
|
|
« : 07-09-2004 14:05 » |
|
Люди, спасайте! проблема заключается в следующем. Есть функция которая работает на DISPATCH_LEVEL, она даже вроде как DPC (точно не знаю так как исходник не мой я его дорабатываю). Нужно в этой функции вызвать ZwCreateFile которая работает в PASSIVE_LEVEL. чего я тока не творил, ничего не выходит! пожалуйста, объясните!!!! Заранее спасибо!
|
|
|
Записан
|
|
|
|
mad
Гость
|
|
« Ответ #1 : 07-09-2004 16:05 » |
|
Вроде или как? А что ты творил? С этого момента поподробнее... Фигушки. Так прямо и не вызовешь.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
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
Главный специалист
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 » |
|
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #11 : 08-09-2004 07:54 » |
|
хе, если хочется потрогать пте, почему бы его не потрогать? хм.... а ты твердо уверен, что пте связан с планировщиком? =)
Да, учи что такое планирование и переключение адресных пространств вобще, без привязке к конкретной операционке. Есть такой предмет- Теория Операционных Систем. Твой стиль работы я называю- "ассемблерный маньяк", они всегда пытаются что-то фигачить на уровне процессора не учитывая что на нем еще операционка работает, все это непортабельно, криво и ужасно, а главное никому не нужно. Я не понимаю- зачем пытаться работать на уровне процессора в обход системы? Лень выучить как работает система?
|
|
|
Записан
|
|
|
|
mad
Гость
|
|
« Ответ #12 : 08-09-2004 08:11 » |
|
Что ты знаешь о моем стиле работы, я то как раз всегда пытають подстроиться под возможности ос? Ты сам маньяк, а я сумашедший. Я говорю о том, когда очень надо, а нельзя, хорошо вот что у человека проблема давно решена (но он в принципе не знает об этом) и ему впринципе не критично на каком irql вызывать запись, но все ведь могло быть совсем иначе......к вопросу о надобности. Люди переписывают не только части ос но и реализуют свои части ос (tcp/ip стек, менеджер irq, rtx планировщики, 2е extender) только лишь потому что текущая реализация части не удовлетворяет потребностям задачи.
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #13 : 21-09-2004 05:52 » |
|
А если просто понизить уровень ?
|
|
|
Записан
|
while (8==8)
|
|
|
Detsel
Гость
|
|
« Ответ #14 : 22-09-2004 11:36 » |
|
Всем спасибо! Но я нашел способ который устраивает меня и не потребовал особых усилий! Еще раз спасибо=)
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #15 : 27-09-2004 13:45 » |
|
А если просто понизить уровень ?
Если это не ты его поднял то будет синяк, у винды.(-)
|
|
|
Записан
|
|
|
|
|