/GH (_penter para habilitar a função de gancho)
Faz com que uma chamada para o _penter a função no início de cada método ou função.
/Gh
Comentários
O _penter função é não faz parte de qualquer biblioteca e cabe a você para fornecer uma definição para _penter.
A menos que você pretende chamar explicitamente _penter, você não precisa fornecer um protótipo. A função deve aparecer como se ele tivesse o seguinte protótipo e deve empurrar o conteúdo de todos os registradores na entrada e retirar o conteúdo inalterado ao sair:
void __declspec(naked) _cdecl _penter( void );
Essa declaração não está disponível para os projetos de 64 bits.
Para definir esta opção de compilador no ambiente de desenvolvimento Visual Studio
Abra o projeto Property Pages caixa de diálogo. Para obter detalhes, consulte:Como: Abrir páginas de propriedades do projeto.
Clique o C/C++ pasta.
Clique na a linha de comando página de propriedades.
Digite a opção de compilador no Opções adicionais de caixa.
Para definir esta opção de compilador programaticamente
- Consulte AdditionalOptions.
Exemplo
O código a seguir, quando compilado com /Gh, mostra como _penter é chamado duas vezes; uma vez ao inserir a função main e uma vez ao inserir a função 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
}
}