KeWaitForSingleObject и потоки

Тема в разделе "WASM.WIN32", создана пользователем relikt, 16 авг 2005.

  1. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    Доброго времени суток.



    Перекрываю функцию реестра, например ZwOpenKey,

    в ней останавливаю поток на KeWaitForSingleObject.



    Мой поток должен обработать данные(идет запрос в драйвер из приложения), далее как тока все ок, вызываем KeSetEvent, остановленный поток продолжает работу, но было бы все прекрасно, пока не запутился Task Manager, который лезет в реестр, но при этом блокирует мой поток(возможно до моего потока не доходит дело), получается dedlock. Такое же поведение у Explorer коды он desktop перерисовывает, то тоже в реестр чтото пишет, IRQL уровень проверял, равен PASSIVE_LEVEL.



    Как бы этого избежать, и почему тормозится мой поток?,

    Если в KeWaitForSingleObject указать таймоут и проверить результат, dedlock можно избежать, но тогда данный запрос в реестр верхней прогой уже не обработаеш, можно тока промониторить.





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



    Спасибо.