Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpset/ttset.c

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

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

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

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