Compilerwarnung (Ebene 1) C4733
Inline asm assigning to 'FS:0' : handler not registered as safe handler
Eine Funktion, die den Wert bei FS:0 ändert, um einen neuen Ausnahmehandler hinzuzufügen, funktioniert möglicherweise nicht mit sicheren Ausnahmen, da der Handler möglicherweise nicht als gültiger Ausnahmehandler registriert wird (siehe /SAFESEH).
Um diese Warnung zu beheben, entfernen Sie entweder die FS:0-Definition, oder deaktivieren Sie diese Warnung, und verwenden Sie sie. SAFESEH zum Angeben der sicheren Ausnahmehandler.
Im folgenden Beispiel wird C4733 generiert:
// 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;
}