我对win32 api的OpenProcess函数有这个问题。程序用于从给定程序PID和整数地址到用户输入的程序中读取整数。
int main() {
DWORD pidz;
int buffer[1];
int temp;
int* ptr_i;
std::cout << "Type the address of i in programA: ";
std::cin >> std::hex >> temp;
std::cout << "\n";
ptr_i = (int*)temp;
std::cout << "Enter PID of programA: ";
std::cin >> pidz;
std::cout << "\n\n";
HANDLE handle_prgmA = OpenProcess(PROCESS_ALL_ACCESS,0,pidz);
if (handle_prgmA==NULL) {
std::cout << "***Could not assign handle\n";
HRESULT apa = GetLastError();
std::cout << apa << "\n";
}
if (ReadProcessMemory(handle_prgmA,ptr_i,&buffer,4,NULL)) {
std::cout << buffer[0];
}
else {
std::cout << "***Could not read memory\n";
}
CloseHandle(handle_prgmA);
}
OpenProcess不断返回错误代码87(“无效参数”),我不明白为什么!
答案 0 :(得分:3)
OpenProcess
会返回ERROR_INVALID_PARAMETER
。在调用OpenProcess之前检查以确保operator>>(std::istream&, int&)
调用成功。