我试图使用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());
任何人 ?
最佳答案
首先,如上所述,您应该将线程句柄作为参数传递,而不是进程句柄。
然后,您要求CONTEXT
API填充GetThreadContext
结构的哪一部分?您在那里保留零,并且应该有1+标志来指示感兴趣的数据:
CONTEXT ThreadContext = { CONTEXT_CONTROL };
if(GetThreadContext(ThreadHandle, &ThreadContext)) {
// ...
另请参见https://stackoverflow.com/a/199809/868014上的代码段