2016-06-17 8 views
0

一部のプロセスでデータ実行保護(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 
+0

サイドノートでは、 'OpenProcess()は'失敗した場合、あなたは 'GetProcessDEPPolicy()'を呼び出すべきではありません。オープンした 'HANDLE'に対して' CloseHandle() 'を呼び出すことを忘れないでください。 –

答えて

3

、機能GetProcessDEPPolicyが定義されている:

BOOL WINAPI GetProcessDEPPolicy(
    _In_ HANDLE hProcess, 
    _Out_ LPDWORD lpFlags, 
    _Out_ PBOOL lpPermanent 
); 

お知らせ最後の引数こと出力パラメータです。これはオプションではありませんが、0以外の0を渡しています。呼び出しは次のようになります。

BOOL permanent = FALSE; 
if (GetProcessDEPPolicy(hProc, &dwPolicy, &permanent) != FALSE) { 
+0

ありがとうございました。 –

関連する問題