Здравствуйте, ononim, Вы писали:
W>>Здравствуйте. Думаю, вопрос уже немало обсосан, но осмелюсь поднять очередную тему.
W>>Реализовал сопрограммы используя WinAPI-функции SetThreadContext и GetThreadContext. Точнее, я подглядел как это сделал другой человек
Он эмулировал ими стандартные POSIX-функции getcontext/setcontext/makecontext/swapcontext и потом, на их основе "возвел" класс сопрограммы. Все работает четко, но исключения не ловятся
То есть если я внутри сопрограмммы напишу:
O>винда не ловит исключения если
O>1) цепочка SEH обработчиков, начинающаяся с _NT_TIB::ExceptionList невалидна
O>2) текущий esp не укладывается в _NT_TIB::StackBase/StackLimit
То есть при входе в сопрограмму нужно модифицировать _NT_TIB::StackBase/StackLimit на новый стек, и как-то правильно построить _NT_TIB::ExceptionList? А как мне достучаться к "текущей" _NT_TIB? Я, вообще, не бред говорю?