Bagikan melalui


/Gh (Mengaktifkan fungsi hook _penter)

Menyebabkan panggilan ke _penter fungsi di awal setiap metode atau fungsi.

Sintaks

/Gh

Keterangan

Fungsi _penter ini bukan bagian dari pustaka apa pun. Terserah Anda untuk memberikan definisi untuk _penter.

Kecuali Anda berencana untuk secara eksplisit memanggil _penter, Anda tidak perlu memberikan prototipe. Fungsi harus mendorong konten semua register pada entri dan memunculkan konten yang tidak berubah saat keluar. Ini harus muncul seolah-olah memiliki prototipe berikut:

void __declspec(naked) __cdecl _penter( void );

Deklarasi ini tidak tersedia untuk proyek 64-bit.

Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.

  3. Masukkan opsi pengkompilasi dalam kotak Opsi Tambahan.

Untuk mengatur opsi pengkompilasi ini secara terprogram

Contoh

Kode berikut, saat dikompilasi dengan /Gh, menunjukkan bagaimana _penter dipanggil dua kali; sekali saat memasukkan fungsi main dan sekali saat memasukkan fungsi x. Contohnya terdiri dari dua file sumber, yang Anda kompilasi secara terpisah.

File sumber 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
    }
}

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

Saat dijalankan, fungsi lokal _penter dipanggil pada entri ke main dan x:

In a function!
In a function!

Baca juga

Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/GH (Aktifkan fungsi hook _pexit)