Freigeben über


/Gh (_penter-Hookfunktion aktivieren)

Aktualisiert: November 2007

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 );

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Klicken Sie auf den Ordner C/C++.

  3. Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.

  4. Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.

So legen Sie diese Compileroption programmgesteuert fest

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
    }
}

In a function!
In a function!

Siehe auch

Referenz

Compileroptionen

Festlegen von Compileroptionen