Função SetProcessDEPPolicy (winbase.h)
Altera as configurações de emulação de conversão de DEP e DEP-ATL para um processo de 32 bits.
Sintaxe
BOOL SetProcessDEPPolicy(
[in] DWORD dwFlags
);
Parâmetros
[in] dwFlags
Um DWORD que pode ser um ou mais dos valores a seguir.
Retornar valor
Se a função for bem-sucedida, ela retornará TRUE.
Se a função falhar, ela retornará FALSE. Para recuperar valores de erro definidos para essa função, chame GetLastError.
Comentários
A função SetProcessDEPPolicy substitui a política de DEP do sistema para o processo atual, a menos que sua política DEP tenha sido especificada na criação do processo. A configuração de política de DEP do sistema deve ser OptIn ou OptOut. Se a política de DEP do sistema for AlwaysOff ou AlwaysOn, SetProcessDEPPolicy retornará um erro. Depois que o DEP é habilitado para um processo, as chamadas subsequentes para SetProcessDEPPolicy são ignoradas.
A política DEP especificada na criação do processo com o atributo PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY não pode ser alterada durante a vida útil do processo. Nesse caso, as chamadas para SetProcessDEPPolicy falham com ERROR_ACCESS_DENIED.
SetProcessDEPPolicy tem suporte apenas para processos de 32 bits. Se essa função for chamada em um processo de 64 bits, ela falhará com ERROR_NOT_SUPPORTED.
Aplicativos gravados na ATL 7.1 e anteriores podem tentar executar código em páginas marcadas como não executáveis, o que dispara uma falha de NX e encerra o aplicativo. A emulação thunk de DEP-ATL permite que um aplicativo que, de outra forma, dispararia uma falha do NX para ser executado com o DEP habilitado. Para obter informações sobre as versões da ATL, consulte Números de versão da ATL e do MFC.
Se a emulação thunk de DEP-ATL estiver habilitada, o sistema intercepta falhas NX, emula as instruções e manipula as exceções para que o aplicativo possa continuar a ser executado. Se a emulação thunk de DEP-ATL estiver desabilitada definindo PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION para o processo, as falhas do NX não serão interceptadas, o que é útil ao testar aplicativos para compatibilidade com o DEP.
A tabela a seguir resume as interações entre a política de DEP do sistema, a emulação thunk de DEP-ATL e SetProcessDEPPolicy. Para obter a configuração de política de DEP do sistema, use a função GetSystemDEPPolicy .
Política de DEP do sistema | Comportamento de DEP | DEP_ATL comportamento de emulação thunk | Comportamento de SetProcessDEPPolicy |
---|---|---|---|
AlwaysOff 0 |
Desabilitado para o sistema operacional e todos os processos. | Não aplicável. | Retorna um erro. |
AlwaysOn 1 |
Habilitado para o sistema operacional e todos os processos. | Desabilitado. | Retorna um erro. |
OptIn 2 Configuração padrão para versões de cliente do Windows. |
Habilitado para o sistema operacional e desabilitado para processos não sistema. Os administradores podem habilitar explicitamente o DEP para arquivos executáveis selecionados. | Não aplicável. |
O DEP pode ser habilitado para o processo atual.
Se o DEP estiver habilitado para o processo atual, a emulação thunk de DEP-ATL poderá ser desabilitada para esse processo. |
OptOut 3 Configuração padrão para versões do Windows Server. |
Habilitado para o sistema operacional e todos os processos. Os administradores podem desabilitar explicitamente o DEP para arquivos executáveis selecionados. | Habilitada. |
O DEP pode ser desabilitado para o processo atual.
Se o DEP estiver desabilitado para o processo atual, a emulação thunk de DEP-ATL será desabilitada automaticamente para esse processo. |
Para compilar um aplicativo que chama essa função, defina _WIN32_WINNT como 0x0600 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista com SP1, Windows XP com SP3 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |