Partager via


Avertissement du compilateur (niveau 1) C4733

Affectation inline asm à « FS :0 » : gestionnaire non inscrit en tant que gestionnaire sécurisé

Une fonction modifiant la valeur à FS :0 pour ajouter un nouveau gestionnaire d’exceptions peut ne pas fonctionner avec des exceptions sécurisées, car le gestionnaire peut ne pas être inscrit en tant que gestionnaire d’exceptions valide (voir /SAFESEH).

Pour résoudre cet avertissement, supprimez la définition FS :0 ou désactivez cet avertissement et utilisez . SAFESEH pour spécifier les gestionnaires d’exceptions fiables.

L’exemple suivant génère l’erreur 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;
}