Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2556 by yutakapon, Sun Jul 6 06:50:40 2008 UTC revision 2660 by maya, Tue Feb 17 13:53:24 2009 UTC
# Line 15  Line 15 
15  #include <tchar.h>  #include <tchar.h>
16  #include <setupapi.h>  #include <setupapi.h>
17    
18    // VS2005でビルドされたバイナリが Windows95 でも起動できるようにするために、
19    // IsDebuggerPresent()のシンボル定義を追加する。
20    //
21    // cf.http://jet2.u-abel.net/program/tips/forceimp.htm
22    // 装飾された名前のアドレスを作るための仮定義
23    // (これだけでインポートを横取りしている)
24    EXTERN_C int WINAPI _imp__IsDebuggerPresent()
25        { return PtrToInt((void*) &_imp__IsDebuggerPresent); }
26    // 実際に横取り処理を行う関数
27    EXTERN_C BOOL WINAPI Cover_IsDebuggerPresent()
28        { return FALSE; }
29    // 関数が実際に呼び出されたときに備えて
30    // 横取り処理関数を呼び出させるための下準備
31    EXTERN_C void __stdcall DoCover_IsDebuggerPresent()
32    {
33        DWORD dw;
34        DWORD_PTR FAR* lpdw;
35        // 横取り関数を設定するアドレスを取得
36        lpdw = (DWORD_PTR FAR*) &_imp__IsDebuggerPresent;
37        // このアドレスを書き込めるように設定
38        // (同じプログラム内なので障害なく行える)
39        VirtualProtect(lpdw, sizeof(DWORD_PTR), PAGE_READWRITE, &dw);
40        // 横取り関数を設定
41        *lpdw = (DWORD_PTR)(FARPROC) Cover_IsDebuggerPresent;
42        // 読み書きの状態を元に戻す
43        VirtualProtect(lpdw, sizeof(DWORD_PTR), dw, NULL);
44    }
45    // アプリケーションが初期化される前に下準備を呼び出す
46    // ※ かなり早くに初期化したいときは、このコードを
47    //  ファイルの末尾に書いて「#pragma init_seg(lib)」を、
48    //  この変数宣言の手前に書きます。
49    //  初期化を急ぐ必要が無い場合は WinMain 内から
50    //  DoCover_IsDebuggerPresent を呼び出して構いません。
51    EXTERN_C int s_DoCover_IsDebuggerPresent
52        = (int) (DoCover_IsDebuggerPresent(), 0);
53    
54  /* first instance flag */  /* first instance flag */
55  static BOOL FirstInstance = TRUE;  static BOOL FirstInstance = TRUE;
56    

Legend:
Removed from v.2556  
changed lines
  Added in v.2660

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26