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 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 |