Re: BSOD при вызове ExReleaseFastMutex()
От: Геннадий Майко США  
Дата: 02.12.04 11:07
Оценка:
Здравствуйте, Freid, Вы писали:

F> Имеется несколько вызовов ExReleaseFastMutex(). Как правило, они отрабатывают нормально,

F>но иногда вываливается БСОД с ошибкой IRQL_NOT_LESS_OR_EQUAL. Похоже, что вызов происходит
F>на уровне выше PASSIVE_LEVEL.
F> Почему, всё-таки, так происходит и как этого можно корректно избежать?
--
Это может происходить потому, что некоторые функции драйвера могут вызываться на разных IRQL.

C помощью функции KeGetCurrentIrql() Вы можете определить текущий IRQL и, в зависимости от его значения, вызывать или нет эту функцию (или, скорее всего, вызывать или нет ExAcquireFastMutex). По крайней мере Вы сможете определить, когда именно возникает эта ситуация и дальше уже пытаться решать эту проблему.

C уважением,
Геннадий Майко.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.