Re[21]: Применим ли Си++ в серьезном коде?
От: dm7  
Дата: 17.06.04 05:58
Оценка:
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.