Я пытаюсь понять политики снижения безопасности процессов, представленные в Windows 10. Скажем, PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY
Я предполагаю, что должно возникать исключение при использовании плохого дескриптора.Итак, я проверяю это так:
bool bEnableIt = true; //false
BOOL bR;
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY pmshcp = {0};
pmshcp.RaiseExceptionOnInvalidHandleReference = bEnableIt;
pmshcp.HandleExceptionsPermanentlyEnabled = bEnableIt;
bR = ::SetProcessMitigationPolicy(ProcessStrictHandleCheckPolicy, &pmshcp, sizeof(pmshcp));
HANDLE hF = (HANDLE)0x1111;
::CloseHandle(hF); //Fake handle
hF = ::CreateFile(L"C:\\Windows\\System32\\notepad.exe", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
::CloseHandle(hF);
::CloseHandle(hF); //Double closing
Но в обоих случаях, независимо от того, включаю я это или отключаю, или вообще не вызываю SetProcessMitigationPolicy
, я получаю это исключение на обоих CloseHandle
звонит, когда звонят по плохому дескриптору:
Так чего мне здесь не хватает?
PS.Я звоню из 64-битного процесса в Windows 10.