Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Флаг вот только в руки реализовывать __CxxFrameHandler в ядре. На DISPATCH_LEVEL же это вообще невозможно, потому как exceptions основаны на thread local storage (сегмент FS), а на DISPATCH_LEVEL это понятие размыто. Запачкаешь FS:[0] какой-то нити, спасибо за это никто не скажет
Смотри ссылку
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/other_23zb.asp, в kernel mode есть SEH, то есть FS:[0] можно свободно "пачкать". Кстати FS:[0] меняется не __CxxFrameHandler, а любой функцией в которой создаётся exception handling frame, например если в функции есть локальный объект класса с деструктором. А зачем обязательно C++ exception handling, можно и SEH использовать:
ExRaiseStatus() вместо throw и
__try/__except/__finally вместо try/catch (он только не может быть в той же функции где используются локальные объекты с деструкторами).
Вот ещё документ по теме
http://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/KMcode.doc.