Compartir a través de


Advertencia del compilador (nivel 1) C4733

Ensamblador insertado que asigna a "FS:0": el controlador no está registrado como controlador seguro

Una función que modifica el valor en FS:0 para agregar un controlador de excepciones nuevo puede no funcionar con excepciones seguras, porque es posible que el controlador no esté registrado como un controlador de excepciones válido (consulte /SAFESEH).

Para resolver esta advertencia, quite la definición de FS:0 o desactive esta advertencia y use .SAFESEH para especificar los controladores de excepciones seguros.

El ejemplo siguiente genera la advertencia C4733:

// C4733.cpp
// compile with: /W1 /c
// processor: x86
#include "stdlib.h"
#include "stdio.h"
void my_handler()
{
   printf("Hello from my_handler\n");
   exit(1);
}

int main()
{
   _asm {
      push    my_handler
      mov     eax, DWORD PTR fs:0
      push    eax
      mov     DWORD PTR fs:0, esp   // C4733
   }

   *(int*)0 = 0;
}