0

我正在尝试使用 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());

任何人 ?

4

2 回答 2

3

首先,如上所述,您应该将线程句柄作为参数传递,而不是进程句柄。

CONTEXT那么,您要求GetThreadContextAPI填充结构的哪一部分?您将零留在那里,应该有 1+ 个标志来指示感兴趣的数据:

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

另请参阅https://stackoverflow.com/a/199809/868014上的代码片段

于 2011-12-29T07:27:07.783 回答
2

GetThreadContext 采用线程句柄而不是进程句柄。

于 2011-12-29T01:36:00.270 回答