다음을 통해 공유


SetProcessDEPPolicy 함수(winbase.h)

32비트 프로세스에 대한 DEP(데이터 실행 방지) 및 DEP-ATL unk 에뮬레이션 설정을 변경합니다.

구문

BOOL SetProcessDEPPolicy(
  [in] DWORD dwFlags
);

매개 변수

[in] dwFlags

다음 값 중 하나 이상이 될 수 있는 DWORD 입니다.

의미
0
DEP 시스템 정책이 OptIn 또는 OptOut이고 DEP가 프로세스에 사용하도록 설정된 경우 dwFlags 를 0으로 설정하면 프로세스에 대한 DEP가 비활성화됩니다.
PROCESS_DEP_ENABLE
0x00000001
현재 프로세스에서 DEP를 영구적으로 사용하도록 설정합니다. PROCESS_DEP_ENABLE 설정하여 프로세스에 DEP를 사용하도록 설정한 후에는 프로세스 수명 동안 사용하지 않도록 설정할 수 없습니다.
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
0x00000002
현재 프로세스에 대해 DEP-ATL 썽크 에뮬레이션을 사용하지 않도록 설정하여 시스템이 ATL(활성 템플릿 라이브러리) 썽크 계층에서 발생한 NX 오류를 가로채지 못하도록 합니다. 자세한 내용은 주의 섹션을 참조하세요. 이 플래그는 PROCESS_DEP_ENABLE 사용하여만 지정할 수 있습니다.

반환 값

함수가 성공하면 TRUE를 반환합니다.

함수가 실패하면 FALSE를 반환합니다. 이 함수에 대해 정의된 오류 값을 검색하려면 GetLastError를 호출합니다.

설명

SetProcessDEPPolicy 함수는 프로세스 생성 시 DEP 정책을 지정하지 않는 한 현재 프로세스에 대한 시스템 DEP 정책을 재정의합니다. 시스템 DEP 정책 설정은 OptIn 또는 OptOut이어야 합니다. 시스템 DEP 정책이 AlwaysOff 또는 AlwaysOn인 경우 SetProcessDEPPolicy 는 오류를 반환합니다. 프로세스에 DEP를 사용하도록 설정하면 SetProcessDEPPolicy 에 대한 후속 호출이 무시됩니다.

PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY 특성을 사용하여 프로세스 생성 시 지정된 DEP 정책은 프로세스 수명 동안 변경할 수 없습니다. 이 경우 SetProcessDEPPolicy 에 대한 호출은 ERROR_ACCESS_DENIED 실패합니다.

SetProcessDEPPolicy 는 32비트 프로세스에 대해서만 지원됩니다. 이 함수가 64비트 프로세스에서 호출되면 ERROR_NOT_SUPPORTED 함께 실패합니다.

ATL 7.1 이하에 기록된 애플리케이션은 실행 불가능으로 표시된 페이지에서 코드를 실행하려고 시도할 수 있습니다. 그러면 NX 오류가 트리거되고 애플리케이션이 종료됩니다. DEP-ATL thunk 에뮬레이션을 사용하면 그렇지 않으면 NX 오류를 트리거하는 애플리케이션이 DEP를 사용하도록 설정된 상태로 실행할 수 있습니다. ATL 버전에 대한 자세한 내용은 ATL 및 MFC 버전 번호를 참조하세요.

DEP-ATL thunk 에뮬레이션이 사용하도록 설정된 경우 시스템은 NX 오류를 가로채고, 지침을 에뮬레이트하고, 예외를 처리하여 애플리케이션이 계속 실행될 수 있도록 합니다. 프로세스에 대한 PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 설정하여 DEP-ATL 썽크 에뮬레이션을 사용하지 않도록 설정하면 NX 오류가 가로채지 않습니다. 이는 DEP와의 호환성을 위해 애플리케이션을 테스트할 때 유용합니다.

다음 표에는 시스템 DEP 정책, DEP-ATL thunk 에뮬레이션 및 SetProcessDEPPolicy 간의 상호 작용이 요약되어 있습니다. 시스템 DEP 정책 설정을 얻으려면 GetSystemDEPPolicy 함수를 사용합니다.

시스템 DEP 정책 DEP 동작 DEP_ATL 썽크 에뮬레이션 동작 SetProcessDEPPolicy 동작
AlwaysOff

0

운영 체제 및 모든 프로세스에서 사용할 수 없습니다. 해당 사항 없음 오류를 반환합니다.
AlwaysOn

1

운영 체제 및 모든 프로세스에 대해 사용하도록 설정됩니다. 사용 안 함. 오류를 반환합니다.
OptIn

2

Windows 클라이언트 버전에 대한 기본 구성입니다.

운영 체제에 대해 사용하도록 설정되고 비시스템 프로세스에 대해 사용하지 않도록 설정됩니다. 관리자는 선택한 실행 파일에 대해 DEP를 명시적으로 사용하도록 설정할 수 있습니다. 해당 사항 없음 DEP는 현재 프로세스에 대해 사용하도록 설정할 수 있습니다.

현재 프로세스에 DEP를 사용하도록 설정하면 해당 프로세스에 대해 DEP-ATL thunk 에뮬레이션을 사용하지 않도록 설정할 수 있습니다.

Optout

3

Windows Server 버전에 대한 기본 구성입니다.

운영 체제 및 모든 프로세스에 대해 사용하도록 설정됩니다. 관리자는 선택한 실행 파일에 대해 DEP를 명시적으로 사용하지 않도록 설정할 수 있습니다. 사용. DEP는 현재 프로세스에 대해 사용하지 않도록 설정할 수 있습니다.

현재 프로세스에서 DEP를 사용하지 않도록 설정하면 해당 프로세스에 대해 DEP-ATL thunk 에뮬레이션이 자동으로 비활성화됩니다.

 

이 함수를 호출하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0600 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista SP1, Windows XP SP3 포함 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

데이터 실행 방지

GetProcessDEPPolicy

GetSystemDEPPolicy