C ++ - OpenProcess возвращает код ошибки 87 - PullRequest
1 голос
/ 20 декабря 2010

У меня есть эта проблема с функцией OpenProcess для Win32 API. Программа предназначена для чтения целого числа из программы с заданным 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 Ответ

3 голосов
/ 20 декабря 2010

OpenProcess возвращает ERROR_INVALID_PARAMETER, когда вы присваиваете ему PID, равный нулю. Убедитесь, что вызов operator>>(std::istream&, int&) завершился успешно, прежде чем вызывать OpenProcess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...