/Gh (Włącz funkcję _penter Hook)
Powoduje wywołanie _penter funkcji na początku każdej metody lub funkcji.
/Gh
Uwagi
_penter Funkcja nie jest częścią dowolnej biblioteki i to do podania definicję dla _penter.
Chyba że planujesz jawnie wywołać _penter, nie trzeba podać prototyp.Funkcja musi znajdować się tak, jakby miał następującym prototypie i musi naciskać zawartość wszystkich rejestrów na zapis i pop bez zmian zawartości przy wyjściu:
void __declspec(naked) _cdecl _penter( void );
Deklaracja ta nie jest dostępna dla 64-bitowych projektów.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu.Szczegółowe informacje – zobacz: Porady: otwieranie stron właściwości projektów.
Kliknij folder C/C++.
Kliknij stronę właściwości Wiersz polecenia.
Wpisz opcję kompilatora w Dodatkowe opcje pole.
Aby programowo ustawić tę opcję kompilatora
- Zobacz AdditionalOptions.
Przykład
Poniższy kod, począwszy od /Gh, pokazuje, jak _penter jest wywoływana dwukrotnie; raz podczas wprowadzania funkcji main i raz podczas wprowadzania funkcji 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
}
}