C ++ - OpenProcess返回错误代码87

时间:2010-12-19 21:01:45

标签: c++ winapi

我对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(“无效参数”),我不明白为什么!

1 个答案:

答案 0 :(得分:3)

当你给它一个零值时,

OpenProcess会返回ERROR_INVALID_PARAMETER。在调用OpenProcess之前检查以确保operator>>(std::istream&, int&)调用成功。

相关问题