Compartir a través de


Función SetProcessDEPPolicy (winbase.h)

Cambia la prevención de ejecución de datos (DEP) y la configuración de emulación thunk de DEP-ATL para un proceso de 32 bits.

Sintaxis

BOOL SetProcessDEPPolicy(
  [in] DWORD dwFlags
);

Parámetros

[in] dwFlags

DWORD que puede ser uno o varios de los valores siguientes.

Valor Significado
0
Si la directiva del sistema de DEP es OptIn o OptOut y DEP está habilitada para el proceso, el establecimiento de dwFlags en 0 deshabilita DEP para el proceso.
PROCESS_DEP_ENABLE
0x00000001
Habilita DEP permanentemente en el proceso actual. Después de habilitar DEP para el proceso estableciendo PROCESS_DEP_ENABLE, no se puede deshabilitar durante la vida útil del proceso.
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
0x00000002
Deshabilita la emulación thunk de DEP-ATL para el proceso actual, lo que impide que el sistema intercepte los errores de NX que se originan en la capa thunk de la biblioteca de plantillas activas (ATL). Para obtener más información, vea la sección Comentarios. Esta marca solo se puede especificar con PROCESS_DEP_ENABLE.

Valor devuelto

Si la función se ejecuta correctamente, devuelve TRUE.

Si se produce un error en la función, devuelve FALSE. Para recuperar los valores de error definidos para esta función, llame a GetLastError.

Comentarios

La función SetProcessDEPPolicy invalida la directiva DEP del sistema para el proceso actual a menos que se haya especificado su directiva DEP durante la creación del proceso. La configuración de directiva de DEP del sistema debe ser OptIn o OptOut. Si la directiva DEP del sistema es AlwaysOff o AlwaysOn, SetProcessDEPPolicy devuelve un error. Después de habilitar DEP para un proceso, se omiten las llamadas posteriores a SetProcessDEPPolicy .

La directiva DEP especificada durante la creación del proceso con el atributo PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY no se puede cambiar durante la vida útil del proceso. En este caso, se produce un error en las llamadas a SetProcessDEPPolicycon ERROR_ACCESS_DENIED.

SetProcessDEPPolicy solo se admite para procesos de 32 bits. Si se llama a esta función en un proceso de 64 bits, se produce un error con ERROR_NOT_SUPPORTED.

Las aplicaciones escritas en ATL 7.1 y versiones anteriores pueden intentar ejecutar código en páginas marcadas como no ejecutables, lo que desencadena un error de NX y finaliza la aplicación. La emulación thunk de DEP-ATL permite que una aplicación que de otro modo desencadene un error de NX para ejecutarse con DEP habilitado. Para obtener información sobre las versiones de ATL, vea Números de versión de ATL y MFC.

Si la emulación thunk de DEP-ATL está habilitada, el sistema intercepta los errores de NX, emula las instrucciones y controla las excepciones para que la aplicación pueda continuar ejecutándose. Si la emulación thunk de DEP-ATL está deshabilitada estableciendo PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION para el proceso, los errores de NX no se interceptan, lo que resulta útil al probar las aplicaciones para la compatibilidad con DEP.

En la tabla siguiente se resumen las interacciones entre la directiva DEP del sistema, la emulación thunk de DEP-ATL y SetProcessDEPPolicy. Para obtener la configuración de directiva de DEP del sistema, use la función GetSystemDEPPolicy .

Directiva de DEP del sistema Comportamiento de DEP DEP_ATL comportamiento de emulación thunk Comportamiento de SetProcessDEPPolicy
AlwaysOff

0

Deshabilitado para el sistema operativo y todos los procesos. No es aplicable. Devuelve un error.
AlwaysOn

1

Habilitado para el sistema operativo y todos los procesos. Deshabilitado. Devuelve un error.
OptIn

2

Configuración predeterminada para las versiones de cliente de Windows.

Habilitado para el sistema operativo y deshabilitado para procesos que no son del sistema. Los administradores pueden habilitar explícitamente DEP para los archivos ejecutables seleccionados. No es aplicable. DEP se puede habilitar para el proceso actual.

Si DEP está habilitado para el proceso actual, la emulación thunk de DEP-ATL se puede deshabilitar para ese proceso.

OptOut

3

Configuración predeterminada para las versiones de Windows Server.

Habilitado para el sistema operativo y todos los procesos. Los administradores pueden deshabilitar explícitamente DEP para los archivos ejecutables seleccionados. Habilitado. DEP se puede deshabilitar para el proceso actual.

Si DEP está deshabilitado para el proceso actual, la emulación thunk de DEP-ATL se deshabilita automáticamente para ese proceso.

 

Para compilar una aplicación que llama a esta función, defina _WIN32_WINNT como 0x0600 o posterior. Para obtener más información, vea Usar los encabezados de Windows.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista con SP1, Windows XP con SP3 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Prevención de ejecución de datos

GetProcessDEPPolicy

GetSystemDEPPolicy