Всем доброго! При вызове KfRaiseIrql вылетаю в BSOD, с сообщением что плохой WorkItem...IRQ, в чем могут быть грабли? Код (Text): .text:0001133F mov al, 1Fh .text:00011341 call KfRaiseIrql и Код (Text): .text:0001162E KfRaiseIrql proc near ; CODE XREF: sub_11204+Bp .text:0001162E ; sub_11334+Dp .text:0001162E jmp ds:__imp_KfRaiseIrql .text:0001162E KfRaiseIrql endp Где я допустил ошибку?
В книге "Программирование драйверов..." Солдатов не рекомендовал такими шутками пользоваться Лучше пользуй KeAcquireSpinLock - поднимает IRQL до DISPATCH_LEVEL KeReleaseSpinLock - возвращает IRQL назад Эти же ф-ции помогут и в многопроцессорной системе "...Когда фрагмент кода, работающего на уровне режима ядра, собирается обратиться к одно из «охраняемых» структур данных, он должен сначала выполнить запрос на владение спин-блокировкой. Так как только один из процессоров в каждый момент времени имеет право собственности на объект спин-блокировки, то таким образом и обеспечивается разделение доступа к охраняемым данным между потоками, работающими на разных процессорах."