こんにちは、システム上の 64 ビット プロセスのスレッド コンテキストを取得しようとしています。正しい機能を備えた 32 ビットと 64 ビットの両方のソリューションを使用してみました。しかし、私はいつもエラー「0x57」、無効なパラメータで終わります。64 ビット コードの短いサンプル。
// open a handle to the thread
HANDLE hThread = OpenThread(THREAD_GET_CONTEXT | THREAD_SET_CONTEXT |
THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION, FALSE,
atoi(argv[1]));
if(hThread == NULL) {
printf("Error opening thread handle.. 0x%08x\n", GetLastError());
return 0;
}
// suspend the thread
if(Wow64SuspendThread(hThread ) == -1) {
printf("Error suspending thread.. 0x%08x\n", GetLastError());
CloseHandle(hThread );
return 0;
}
// get the thread context
WOW64_CONTEXT orig_ctx = {WOW64_CONTEXT_FULL };
if(GetThreadContext(hThread , &orig_ctx) == FALSE) {
printf("Error 0x%08x\n", GetLastError());
CloseHandle(hThread );
return 0;
}
ハンドルが間違っているとは思えませんが、コードは 32 ビット プロセスで正しく動作していました。助けやアドバイスをいただければ幸いです。前もって感謝します!