Перехвачена у меня какая-то функция, положим, что NtOpenProcess. Нужно передавать информацию о перехвате в какое-то другое место и (самое важное) дождаться решения о том, нужно ли перехватывать! Притом, во время ожидания, NtOpenProcess может вызываться еще несколько раз и запросы должны вставать в очередь. Пока что у меня в голове только вариант с созданием для каждого вызова NtOpenProcess своего Event и синхронизацией по ZwWaitForSingleObject в NtOpenProcess, плюс переменная для хранения полученного решения. Помоему достаточно кривое решение.... Есть ли у кого-нибудь мысли на этот счет?
Код (Text): stdcall drugoe_mesto,param1,param2.... cmp eax,PEREXVATIVOT_TRUE ... proc drugoe_mesto p1,p2... ... mov eax,PEREXVATIVOT_TRUE ret endp
Weberd Через критические секции попробуй (EnterCriticalSection). (А вообще я не уверен, что запросы теряются, а не встают в очередь.)
вы меня не поняли совсем, я видать плохо сформулировал то, что мне надо.... другое место, результата которого ждет перехваченная функция - это юзермодное приложение. то есть перехваченная функция как-то сообщает о перехвате, например создает Irp, а потом засыпает по ZwWaitFor...., затем приходит результат мутекс или евент сбрасывается, функция просыпается и через спец переменную (вот слабое место - переменная глобальная) смотрит, что ей дальше делать.