Export (0) Print
Expand All
Expand Minimize

/Gh (Enable _penter Hook Function)

/Gh

This option causes a call to the _penter function at the start of every method or function. The _penter function is not part of any library and it is up to you to provide a definition for _penter.

Unless you plan to explicitly call _penter, you do not need to provide a prototype. The function must appear as if it had the following prototype, and it must push the content of all registers on entry and pop the unchanged content on exit:

void __declspec(naked) _cdecl _penter( void );

The following code, when compiled with /Gh shows how _penter is called twice; once when entering function main and once when entering function x.

#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("\nIn a function!");

    _asm {
        pop esi
        pop edi
        pop ebp
        pop edx
        pop ecx
        pop ebx
        pop eax
        ret
    }
}

To set this compiler option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
  2. Click the C/C++ folder.
  3. Click the Command Line property page.
  4. Type the compiler option in the Additional Options box.

To set this compiler option programmatically

See AdditionalOptions.

See Also

Compiler Options | Setting Compiler Options

Show:
© 2014 Microsoft