__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