| 83 |
// cf.http://jet2.u-abel.net/program/tips/forceimp.htm |
// cf.http://jet2.u-abel.net/program/tips/forceimp.htm |
| 84 |
// 装飾された名前のアドレスを作るための仮定義 |
// 装飾された名前のアドレスを作るための仮定義 |
| 85 |
// (これだけでインポートを横取りしている) |
// (これだけでインポートを横取りしている) |
| 86 |
EXTERN_C int WINAPI _imp__IsDebuggerPresent() |
int WINAPI _imp__IsDebuggerPresent() |
| 87 |
{ return PtrToInt((void*) &_imp__IsDebuggerPresent); } |
{ return PtrToInt((void*) &_imp__IsDebuggerPresent); } |
| 88 |
// 実際に横取り処理を行う関数 |
// 実際に横取り処理を行う関数 |
| 89 |
EXTERN_C BOOL WINAPI Cover_IsDebuggerPresent() |
BOOL WINAPI Cover_IsDebuggerPresent() |
| 90 |
{ return FALSE; } |
{ return FALSE; } |
| 91 |
// 関数が実際に呼び出されたときに備えて |
// 関数が実際に呼び出されたときに備えて |
| 92 |
// 横取り処理関数を呼び出させるための下準備 |
// 横取り処理関数を呼び出させるための下準備 |
| 93 |
EXTERN_C void __stdcall DoCover_IsDebuggerPresent() |
void __stdcall DoCover_IsDebuggerPresent() |
| 94 |
{ |
{ |
| 95 |
DWORD dw; |
DWORD dw; |
| 96 |
DWORD_PTR FAR* lpdw; |
DWORD_PTR FAR* lpdw; |
| 111 |
// 初期化を急ぐ必要が無い場合は WinMain 内から |
// 初期化を急ぐ必要が無い場合は WinMain 内から |
| 112 |
// DoCover_IsDebuggerPresent を呼び出して構いません。 |
// DoCover_IsDebuggerPresent を呼び出して構いません。 |
| 113 |
#if 0 |
#if 0 |
| 114 |
/* C言語では以下のコードは、コンパイルエラーとなるので、いったん外す。*/ |
/* C言語では以下のコードは、コンパイルエラーとなるので、DllMain から呼ぶ。*/ |
| 115 |
EXTERN_C int s_DoCover_IsDebuggerPresent |
int s_DoCover_IsDebuggerPresent |
| 116 |
= (int) (DoCover_IsDebuggerPresent(), 0); |
= (int) (DoCover_IsDebuggerPresent(), 0); |
| 117 |
#endif |
#endif |
| 118 |
|
|
| 4125 |
// cf. http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/MemLeaks/ |
// cf. http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/MemLeaks/ |
| 4126 |
//_CrtSetBreakAlloc(3228); |
//_CrtSetBreakAlloc(3228); |
| 4127 |
#endif |
#endif |
| 4128 |
|
DoCover_IsDebuggerPresent(); |
| 4129 |
DisableThreadLibraryCalls(hInstance); |
DisableThreadLibraryCalls(hInstance); |
| 4130 |
hInst = hInstance; |
hInst = hInstance; |
| 4131 |
pvar = &InstVar; |
pvar = &InstVar; |