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 2663 by maya, Wed Feb 18 15:20:25 2009 UTC revision 2664 by maya, Fri Feb 20 04:45:31 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 でも起動できるようにするために、  #include "compat_w95.h"
 // IsDebuggerPresent()のシンボル定義を追加する。  
 //  
 // cf.http://jet2.u-abel.net/program/tips/forceimp.htm  
 // 装飾された名前のアドレスを作るための仮定義  
 // (これだけでインポートを横取りしている)  
 int WINAPI _imp__IsDebuggerPresent()  
     { return PtrToInt((void*) &_imp__IsDebuggerPresent); }  
 // 実際に横取り処理を行う関数  
 BOOL WINAPI Cover_IsDebuggerPresent()  
     { return FALSE; }  
 // 関数が実際に呼び出されたときに備えて  
 // 横取り処理関数を呼び出させるための下準備  
 void __stdcall DoCover_IsDebuggerPresent()  
 {  
     DWORD dw;  
     DWORD_PTR FAR* lpdw;  
     // 横取り関数を設定するアドレスを取得  
     lpdw = (DWORD_PTR FAR*) &_imp__IsDebuggerPresent;  
     // このアドレスを書き込めるように設定  
     // (同じプログラム内なので障害なく行える)  
     VirtualProtect(lpdw, sizeof(DWORD_PTR), PAGE_READWRITE, &dw);  
     // 横取り関数を設定  
     *lpdw = (DWORD_PTR)(FARPROC) Cover_IsDebuggerPresent;  
     // 読み書きの状態を元に戻す  
     VirtualProtect(lpdw, sizeof(DWORD_PTR), dw, NULL);  
 }  
 // アプリケーションが初期化される前に下準備を呼び出す  
 // ※ かなり早くに初期化したいときは、このコードを  
 //  ファイルの末尾に書いて「#pragma init_seg(lib)」を、  
 //  この変数宣言の手前に書きます。  
 //  初期化を急ぐ必要が無い場合は WinMain 内から  
 //  DoCover_IsDebuggerPresent を呼び出して構いません。  
 #if 0  
 /* C言語では以下のコードは、コンパイルエラーとなるので、DllMain から呼ぶ。*/  
 int s_DoCover_IsDebuggerPresent  
     = (int) (DoCover_IsDebuggerPresent(), 0);  
 #endif  
20    
21  #define Section "Tera Term"  #define Section "Tera Term"
22    

Legend:
Removed from v.2663  
changed lines
  Added in v.2664

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