/Gh (_penter-Hookfunktion aktivieren)
Bewirkt einen Aufruf der _penter
Funktion am Anfang jeder Methode oder Funktion.
Syntax
/Gh
Hinweise
Die _penter
Funktion ist nicht Teil einer Bibliothek. Es liegt an Ihnen, eine Definition für _penter
.
Sofern Sie nicht explizit anrufen _penter
möchten, müssen Sie keinen Prototyp bereitstellen. Die Funktion muss den Inhalt aller Register beim Eintrag pushen und den unveränderten Inhalt beim Beenden auffüllen. Es muss so aussehen, als hätte er den folgenden Prototyp:
void __declspec(naked) __cdecl _penter( void );
Diese Deklaration ist für 64-Bit-Projekte nicht verfügbar.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
Geben Sie die Compileroption im Feld "Zusätzliche Optionen " ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.
Beispiel
Der folgende Code, wenn er mit /Gh kompiliert wird, zeigt, wie _penter
zweimal aufgerufen wird; einmal beim Eingeben der Funktion main
und einmal beim Eingeben der Funktionx
. Das Beispiel besteht aus zwei Quelldateien, die Sie separat kompilieren.
Quelldatei local_penter.cpp
:
// local_penter.cpp
// compile with: cl /EHsc /c local_penter.cpp
// processor: x86
#include <stdio.h>
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
}
}
Quelldatei Gh_compiler_option.cpp
:
// Gh_compiler_option.cpp
// compile with: cl /EHsc /Gh Gh_compiler_option.cpp local_penter.obj
// processor: x86
#include <stdio.h>
void x() {}
int main() {
x();
}
Wenn sie ausgeführt wird, wird die lokale _penter
Funktion beim Eintrag zu main
und x
:
In a function!
In a function!
Siehe auch
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/GH
(Aktivieren _pexit Hook-Funktion)