Compartilhar via


estrutura PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY (winnt.h)

Contém configurações de política de mitigação de processo para HSP (Proteção de Pilha imposta por hardware) no modo de usuário. As funções GetProcessMitigationPolicy e SetProcessMitigationPolicy usam essa estrutura.

Sintaxe

typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
  union {
    DWORD Flags;
    struct {
      DWORD EnableUserShadowStack : 1;
      DWORD AuditUserShadowStack : 1;
      DWORD SetContextIpValidation : 1;
      DWORD AuditSetContextIpValidation : 1;
      DWORD EnableUserShadowStackStrictMode : 1;
      DWORD BlockNonCetBinaries : 1;
      DWORD BlockNonCetBinariesNonEhcont : 1;
      DWORD AuditBlockNonCetBinaries : 1;
      DWORD CetDynamicApisOutOfProcOnly : 1;
      DWORD SetContextIpValidationRelaxedMode : 1;
      DWORD ReservedFlags : 22;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;

Membros

DUMMYUNIONNAME

DUMMYUNIONNAME.Flags

Esse membro é reservado para uso do sistema.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack

Se TRUE, o modo de usuário Proteção contra Pilha imposta por hardware estará habilitado para o processo no modo de compatibilidade. Isso significa que a CPU verifica os endereços de retorno da função em runtime empregando um mecanismo de pilha de sombra, se compatível com o hardware. No modo de compatibilidade, somente violações de pilha de sombra que ocorrem em módulos considerados compatíveis com pilhas de sombra (CETCOMPAT) são fatais. Para que um módulo seja considerado CETCOMPAT, ele precisa ser compilado com CETCOMPAT para binários ou marcado usando SetProcessDynamicEnforcedCetCompatibleRanges para código dinâmico. Este campo não pode ser alterado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack

Se TRUE, as violações de pilha de sombra que teriam sido fatais serão tratadas como não fatais e os eventos de diagnóstico serão registrados no Log de Eventos. Quando esse campo é TRUE, EnableUserShadowStack deve ser TRUE e EnableUserShadowStackStrictMode pode ser TRUE, dependendo se o modo de compatibilidade está sendo auditado ou o modo estrito está sendo auditado. Este campo não pode ser alterado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation

Se TRUE, ao chamar APIs que modificam o contexto de execução de um thread, como SetThreadContext e RtlRestoreContext, a validação será executada no Ponteiro de Instrução especificado no novo contexto de execução. Este campo não pode ser alterado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation

Se TRUE, os ponteiros de instrução que causariam a falha da validação serão permitidos e os eventos de diagnóstico serão registrados no Log de Eventos. Quando esse campo é TRUE, SetContextIpValidation deve ser TRUE e SetContextIpValidationRelaxedMode pode ser TRUE, dependendo do modo em que a validação do Ponteiro de Instrução está operando no momento. Este campo não pode ser alterado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode

Se TRUE, o modo de usuário Proteção contra Pilha imposta por hardware estará habilitado para o processo no modo estrito. Todas as violações da pilha de sombra são fatais. Quando esse campo for TRUE, EnableUserShadowStack deverá ser TRUE. Se o HSP estiver habilitado no modo de compatibilidade, ele poderá ser atualizado para o modo estrito em runtime definindo esse campo como TRUE e chamando SetProcessMitigationPolicy. O HSP não pode ser rebaixado ou desabilitado por meio de SetProcessMitigationPolicy. Se o HSP estiver desabilitado, ele não poderá ser habilitado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries

Se TRUE, os binários que não são compilados com CETCOMPAT serão impedidos de serem carregados no processo. Essa política pode ser habilitada depois que um processo é iniciado chamando SetProcessMitigationPolicy. Ele não pode ser desabilitado depois de habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont

Se TRUE, os binários que não são compilados com CETCOMPAT ou não contêm metadados de continuação de tratamento de exceção (/guard:ehcont) são impedidos de serem carregados no processo. Quando esse campo for TRUE, BlockNonCetBinaries deverá ser TRUE. Essa política pode ser habilitada depois que um processo é iniciado chamando SetProcessMitigationPolicy. Ele não pode ser desabilitado ou rebaixado depois de habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries

Se TRUE, as cargas binárias que teriam sido bloqueadas serão permitidas e os eventos de diagnóstico serão registrados no Log de Eventos. Quando esse campo é TRUE, BlockNonCetBinaries deve ser TRUE e BlockNonCetBinariesNonEhcont pode ser TRUE, dependendo de quais tipos de binários estão sendo impedidos de serem carregados no processo. Este campo não pode ser alterado por meio de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly

Se TRUE, determinadas APIs de HSP usadas para especificar propriedades de segurança do código dinâmico só poderão ser chamadas de fora do processo para fins de segurança. Essas APIs são SetProcessDynamicEHContinuationTargets e SetProcessDynamicEnforcedCetCompatibleRanges. Essa política pode ser habilitada depois que um processo é iniciado chamando SetProcessMitigationPolicy. Ele não pode ser desabilitado depois de habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode

Se TRUE, a validação do Ponteiro de Instrução do processo será rebaixada para o modo relaxado, o que permite todos os Ponteiros de Instrução que estão em código dinâmico ou em binários que não contêm metadados de continuação de tratamento de exceção. Quando esse campo é TRUE, SetContextIpValidation deve ser TRUE. O processo pode ser atualizado do modo relaxado para o modo normal em runtime definindo esse campo como FALSE e chamando SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags

Esse membro é reservado para uso do sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 2004 (10.0; Build 19041)
Servidor mínimo com suporte Windows Server, versão 2004 (10.0; Build 19041)
Cabeçalho winnt.h

Confira também

CETCOMPAT

GetProcessMitigationPolicy

SetProcessMitigationPolicy