/Gh (_penter-Hookfunktion aktivieren)
Führt zu einem Aufruf der _penter-Funktion zu Beginn jeder Methode oder Funktion.
/Gh
Hinweise
Die _penter-Funktion gehört zu keiner Bibliothek; Sie müssen daher selbst eine Definition für _penter angeben.
Wenn Sie nicht die Absicht haben, _penter explizit aufzurufen, brauchen Sie keinen Prototypen bereitzustellen. Die Funktion muss so angezeigt werden, als hätte sie den folgenden Prototypen, und sie muss den Inhalt aller Register beim Eintritt auf den Stapel legen und den unveränderten Inhalt beim Austritt vom Stapel holen:
void __declspec(naked) _cdecl _penter( void );
Diese Deklaration ist nicht für 64-Bit-Projekte verfügbar.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.
Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.
Beispiel
Im folgenden Codebeispiel wird dargestellt, wie beim Kompilieren mit /Gh die _penter-Funktion zweimal aufgerufen wird: einmal zu Beginn der main-Funktion und einmal zu Beginn der x-Funktion.
// Gh_compiler_option.cpp
// compile with: /Gh
// processor: x86
#include <stdio.h>
void x() {}
int main() {
x();
}
extern "C" void __declspec(naked) _cdecl _penter( void ) {
_asm {
push eax
push ebx
push ecx
push edx
push ebp
push edi
push esi
}
printf_s("\nIn a function!");
_asm {
pop esi
pop edi
pop ebp
pop edx
pop ecx
pop ebx
pop eax
ret
}
}