Получение 0x3e6 при вызове GetThreadContext для отлаженного потока - PullRequest
0 голосов
/ 09 июня 2019

Я строю простой отладчик для Windows.Я хочу отобразить контекст регистров отладчика после достижения точки останова, но когда я вызываю GetThreadContext, я получаю:

ERROR_NOACCESS

998 (0x3E6)

Invalid access to memory location.

Я использую компилятор masm32 и ml (под visual-studio 2019)

Вот мой соответствующий код:

.data
 context CONTEXT <?>
 pi PROCESS_INFORMATION <?>
 debug_event DEBUG_EVENT <?> 

...

.code
...
invoke CreateProcess,  NULL, addr command.command, NULL, NULL, FALSE, DEBUG_PROCESS, NULL,NULL, addr starti, addr pi


...

mov context.ContextFlags, CONTEXT_ALL

invoke GetThreadContext, pi.hThread, offset context

Я пытался:

  1. поиграть с флагами (CONTEXT_ALL, CONTEXT_FULL)
  2. Получить аргумент hThread с помощью структуры debug_event, например:

     invoke GetThreadContext, debug_event.u.CreateProcessInfo.hThread, addr context   
    

Но я все еще получаю точно такую ​​же ошибку.

Любая помощь будетприветствуется!

Омер

...