/Gh (Attiva funzione hook _penter)
Fa sì che venga chiamata la funzione _penter all'inizio di ogni metodo o funzione.
/Gh
Note
La funzione _penter non fa parte di alcuna libreria ed è il programmatore che decide se fornirne una definizione.
Non è necessario fornire un prototipo, a meno che non si intenda chiamare _penter esplicitamente. La funzione deve apparire come se avesse il seguente prototipo e deve inserire il contenuto di tutti i registri in ingresso e visualizzare il contenuto non modificato in uscita:
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 Procedura: aprire le pagine delle proprietà dei progetti.
Fare clic sulla cartella C/C++.
Fare clic sulla pagina delle proprietà Riga di comando.
Digitare l'opzione del compilatore nella casella Opzioni aggiuntive.
Per impostare l'opzione del compilatore a livello di codice
- Vedere la proprietà AdditionalOptions.
Esempio
Quando viene compilato con /Gh, il codice riportato di seguito illustra come _penter venga chiamata due volte: una volta quando si entra nella funzione main e una volta quando si entra nella funzione x.
// 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
}
}