GetThreadContext через DuplicateHandle? - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь открыть дубликаты процесса и запросить информацию из дескрипторов потоков, используя GetThreadContext, но я получаю сообщение об ошибке ERROR_INVALID_HANDLE или ERROR_GEN_FAILURE. Информация об этом кажется очень ограниченной ....

processHandle = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid)
DuplicateHandle(processHandle,handle.Handle,GetCurrentProcess(),&dupHandle,0,FALSE,DUPLICATE_SAME_ACCESS);


            memset(&ctx,0x00,sizeof(ctx));
            GetThreadContext(dupHandle,&ctx);
            printf("Error:%x", GetLastError());

Кто-нибудь?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2011

Прежде всего, как предложено выше, вы должны передавать дескриптор потока в качестве аргумента, а не дескриптор процесса.

Тогда, какую часть структуры CONTEXT вы запрашиваете заполнение API GetThreadContext? Вы оставляете ноль там и должны быть флаги 1+ для обозначения данных, представляющих интерес:

CONTEXT ThreadContext = { CONTEXT_CONTROL };
if(GetThreadContext(ThreadHandle, &ThreadContext)) {
    // ...

См. Также фрагмент кода в https://stackoverflow.com/a/199809/868014

2 голосов
/ 29 декабря 2011

GetThreadContext принимает дескриптор потока, а не дескриптор процесса.

...