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

まず第一に、上記で提案したように、プロセス ハンドルではなく、スレッド ハンドルを引数として渡す必要があります。

では、構造体のどの部分をAPICONTEXTで埋めるように要求しますか? GetThreadContextそこにゼロを残すと、関心のあるデータを示すために 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 に答える