/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 _penter
in 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
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.
Per impostare l'opzione del compilatore a livello di codice
- Vedere AdditionalOptions.
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.cpp
File 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.cpp
File 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)