Compartilhar via


__fastfail

Seção específica da Microsoft

Encerra imediatamente o processo de chamada com sobrecarga mínima.

Sintaxe

__declspec(noreturn) void __fastfail(unsigned int code);

Parâmetros

code
[in] Uma constante simbólica FAST_FAIL_<description> de winnt.h ou wdm.h que indica o motivo do término do processo.

Valor retornado

O intrínseco __fastfail não retorna.

Comentários

O __fastfail intrínseco fornece um mecanismo para uma solicitação de falha rápida – uma forma de um processo potencialmente corrompido solicitar o encerramento imediato do processo. Falhas críticas que podem ter corrompido o estado de programa e pilha além da recuperação não podem ser tratadas pela recurso de manipulação de exceção regular. Use __fastfail para finalizar o processo usando uma sobrecarga mínima.

Internamente, __fastfail é implementado usando diversos mecanismos de arquitetura:

Arquitetura Instrução Local do argumento de código
x86 int 0x29 ecx
x64 int 0x29 rcx
ARM Opcode 0xDEFB r0
ARM64 Opcode 0xF003 x0

Uma solicitação de falha rápida é independente e normalmente exige apenas dois instruções para executar. Após a execução de uma solicitação de falha rápida, o kernel toma a ação apropriada. No código do modo de usuário, não há nenhuma dependência de memória além do ponteiro de instruções quando um evento de falha rápida é gerado. Isso aumenta a confiabilidade, mesmo se houver uma grave corrupção de memória.

O argumento code, uma das constantes simbólicas FAST_FAIL_<description> de winnt.h ou wdm.h, descreve o tipo de condição de falha. Ele é incorporado em relatórios de falha de maneira específica ao ambiente.

Solicitações de falha rápida do modo de usuário são exibidas como uma segunda chance de exceção não continuada, com o código de exceção 0xC0000409 e pelo menos um parâmetro de exceção. O primeiro parâmetro de exceção é o valor code. Esse código de exceção indica ao WER (Relatório de Erros do Windows) e à infraestrutura de depuração que o processo está corrompido e que as ações mínimas no processo devem ser consideradas em resposta à falha. Solicitações de falha rápida do modo kernel são implementadas usando um código de verificação de bugs dedicado KERNEL_SECURITY_CHECK_FAILURE (0x139). Em ambos os casos, nenhum manipuladores de exceção é chamado porque o programa deve ser em um estado corrompido. Se um depurador estiver presente, terá a oportunidade de examinar o estado do programa antes do encerramento.

Suporte para o mecanismo de falha rápida nativa iniciado no Windows 8. Sistemas operacionais Windows que não dão suporte nativo à instrução de falha rápida tratarão normalmente uma solicitação de falha rápida como uma violação de acesso ou como uma verificação de bugs UNEXPECTED_KERNEL_MODE_TRAP. Nesses casos, o programa é ainda encerrado, mas não necessariamente mais rápido.

__fastfail só está disponível como um intrínseco.

Requisitos

Intrinsic Arquitetura
__fastfail x86, x64, ARM, ARM64

Arquivo de cabeçalho<intrin.h>

Fim da seção específica da Microsoft

Confira também

Intrínsecos do compilador