Sdílet prostřednictvím


/Gh (povolení funkce hooku _penter)

Způsobí volání _penter funkce na začátku každé metody nebo funkce.

Syntaxe

/Gh

Poznámky

Funkce _penter není součástí žádné knihovny. Je na vás, abyste zadali definici ._penter

Pokud nemáte v úmyslu explicitně volat _penter, nemusíte poskytovat prototyp. Funkce musí nasdílit obsah všech registrů na vstupu a při ukončení zobrazit nezměněný obsah. Musí se zdát, jako by měl následující prototyp:

void __declspec(naked) __cdecl _penter( void );

Tato deklarace není k dispozici pro 64bitové projekty.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.

  3. Do pole Další možnosti zadejte možnost kompilátoru.

Programové nastavení tohoto parametru kompilátoru

Příklad

Následující kód při kompilaci pomocí /Gh ukazuje, jak _penter se volá dvakrát; jednou při zadávání funkce main a jednou při zadávání funkce x. Příklad se skládá ze dvou zdrojových souborů, které kompilujete samostatně.

Zdrojový soubor local_penter.cpp:

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

Zdrojový soubor Gh_compiler_option.cpp:

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

Při spuštění je místní _penter funkce volána při zadávání a main x:

In a function!
In a function!

Viz také

Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/GH (Povolení funkce háku _pexit)