Проясните пожалуйста ситуацию, теперь чего в Vista нельзя читать/писать значения отладочных регистров DR0-DR4 через SEH? (у меня там нули стоят) или изменилась структура контекста?....
zaaqq1 в первое поле контекста, где лежат флаги, втыкаете флаг изменения DR регистров? PS В XP он там по дефолту выставлен, возможно в Vista подрезали и теперь руками надо.
PE_Kill Флаги теже (0x0001003F = CONTEXT_ALL), брякается одинаково на XP SP3 и Vista SP1. Видимо, у zaaqq1 ошибка в настройке Dr1-3 и Dr7. А что там должно быть при первом заходе в SEH если ты ничего на делал? Нули. Ставь BP и возращайся из SEH-обработчика с ExceptionContinueExecution. Как точка сработает, снова вывалишься в SEH-обработчик - нулей не будет Код (Text): FORMAT PE GUI 4.0 entry start include 'include\win32a.inc' section '.main' code readable writable executable proc start call base base: xor eax, eax add dword [esp], (exhnd - base) push dword [fs:eax] mov dword [fs:eax], esp bugcode: mov eax, [eax] pop dword [fs:eax] pop eax retn exhnd: xor eax, eax mov ecx, [esp + 0Ch] cmp dword [ecx + 0B8h], bugcode jnz drbp add dword [ecx + 0B8h], 02h mov dword [ecx + 018h], 0101h push dword [ecx + 0B8h] pop dword [ecx+04h] jmp exend drbp: push 0 pop dword [ecx+04h] exend: retn endp
все прояснилось) при удаленной отладке туда не помещаются точки останова (windbg), при обыкновенной - помещаются