Когда я пытаюсь проверить, использует ли какой-либо процесс защиту выполнения данных (DEP), я получаю ошибку 87 (INVALID_PARAMETER). Я проверил свой код и, похоже, все в порядке, но, к сожалению, у меня все еще такая же ошибка.Ошибка GetProcessDEPPolicy 87
Код:
BOOL var = true;
DWORD dwPolicy;
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, false, 3624);
if (hProc == NULL) {
cout << "Can't open Process because of the error " << GetLastError() << endl;
}
if (GetProcessDEPPolicy(hProc, &dwPolicy, 0) != FALSE) {
if (dwPolicy == PROCESS_DEP_ENABLE) {
cout << "For try.exe process data execution prevention is enabled" << endl;
}
else if (dwPolicy == NULL) {
cout << "For try.exe process data execution prevention is disabled" << endl;
}
else {
cout << "Data is thrunked and we can't change DEP value in future" << endl;
}
}
else {
cout << "There was an error with discovering DEP in try.exe process because of "<<GetLastError() << endl;
}
После компиляции и выполнения я получаю:
There was an error with discovering DEP in try.exe process because of 87
На боковой ноте вы не должны вызывать 'GetProcessDEPPolicy()', если 'OpenProcess()' терпит неудачу. И не забудьте называть 'CloseHandle()' на открытой 'HANDLE'. –