/Gh (Attiva funzione hook _penter)

Genera una chiamata alla _penter funzione all'inizio di ogni metodo o funzione.

Sintassi

/Gh

Osservazioni:

La _penter funzione non fa parte di alcuna libreria. È necessario specificare una definizione per _penter.

A meno che non si intenda chiamare _penterin modo esplicito , non è necessario fornire un prototipo. La funzione deve eseguire il push del contenuto di tutti i registri all'ingresso e visualizzare il contenuto invariato all'uscita. Deve apparire come se avesse il prototipo seguente:

void __declspec(naked) __cdecl _penter( void );

Questa dichiarazione non è disponibile per i progetti a 64 bit.

Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  3. Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.

Per impostare l'opzione del compilatore a livello di codice

Esempio

Il codice seguente, quando viene compilato con /Gh, mostra come _penter viene chiamato due volte; una volta quando si immette la funzione main e una volta quando si immette la funzione x. L'esempio è costituito da due file di origine, compilati separatamente.

local_penter.cppFile di origine :

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

Gh_compiler_option.cppFile di origine :

// 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();
}

Quando viene eseguita, la funzione locale _penter viene chiamata in ingresso a main e x:

In a function!
In a function!

Vedi anche

Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC
/GH (Abilitare _pexit funzione hook)