source: lab/trunk/Dev/utvpn/utvpn-unix-v101-7101-public/src/Mayaqua/Mayaqua.h @ 153

Last change on this file since 153 was 153, checked in by mitty, 12 years ago
  • add Makefile for mips-openwrt-linux
  • fix declaration of iconv for mips-openwrt-linux
File size: 20.2 KB
Line 
1// SoftEther UT-VPN SourceCode
2//
3// Copyright (C) 2004-2010 SoftEther Corporation.
4// Copyright (C) 2004-2010 University of Tsukuba, Japan.
5// Copyright (C) 2003-2010 Daiyuu Nobori.
6// All Rights Reserved.
7//
8// http://utvpn.tsukuba.ac.jp/
9//
10// This program is free software; you can redistribute it and/or
11// modify it under the terms of the GNU General Public License
12// version 2 as published by the Free Software Foundation.
13//
14// This program is distributed in the hope that it will be useful,
15// but WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17// GNU General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License version 2
20// along with this program; if not, write to the Free Software
21// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22//
23// このファイルは GPL バージョン 2 ライセンスで公開されています。
24// 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布
25// することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示
26// を除去することはできません。改変した著作物を配布する場合は、改変実施者の
27// 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。
28//
29// この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の
30// ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )
31// および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって
32// ホストされています。
33// 本プログラムの配布者は、本プログラムを、業としての利用以外のため、
34// および、試験または研究のために利用が行われることを想定して配布
35// しています。
36// SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に
37// あります。
38// 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード
39// の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して
40// いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して
41// ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース
42// に組み込みさせていただきます。
43//
44// GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する
45// 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。
46//
47// 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社
48// (SoftEther Corporation) およびその他の著作権保持者が保有しています。
49// ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの
50// 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意
51// ください。
52//
53// お願い: どのような通信ソフトウェアにも通常は必ず未発見の
54// セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、
55// UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの
56// 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社
57// および脆弱性情報の届出を受け付ける公的機関まで通報いただき、
58// 公益保護にご協力いただきますようお願い申し上げます。
59//
60// ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を
61// 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客
62// を保護するための努力を行います。
63//
64// ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/
65// 日本国内の脆弱性情報届出受付公的機関:
66//         独立行政法人 情報処理推進機構
67//         http://www.ipa.go.jp/security/vuln/report/
68//
69// 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。
70// 連絡先: http://www.softether.co.jp/jp/contact/
71
72// -----------------------------------------------
73// [ChangeLog]
74// 2010.05.20
75//  新規リリース by SoftEther
76// -----------------------------------------------
77
78// Mayaqua.h
79// Mayaqua Kernel ヘッダファイル
80
81#ifndef MAYAQUA_H
82#define MAYAQUA_H
83
84// PenCore.dll 関係
85#define PENCORE_DLL_NAME        "|PenCore.dll"
86
87//#define   USE_PROBE                       // Probe を使う
88
89// リリースフラグ用マクロ
90#ifdef  VPN_SPEED
91
92#define DONT_USE_KERNEL_STATUS          // カーネルステータスを更新しない
93#define WIN32_USE_HEAP_API_FOR_MEMORY   // メモリ確保にヒープ API を使用する
94#define WIN32_NO_DEBUG_HELP_DLL         // デバッグ用 DLL を呼び出さない
95#define DONT_CHECK_HEAP                 // ヒープの状態をチェックしない
96
97#endif  // VPN_SPEED
98
99#ifdef  VPN_EXE
100// 実行可能ファイルビルド用
101#ifdef  WIN32
102#include <windows.h>
103#include "../PenCore/resource.h"
104int main(int argc, char *argv[]);
105int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow)
106{
107    return main(0, NULL);
108}
109#endif  // WIN32
110#endif  // VPN_EXE
111
112// 定数
113#define DEFAULT_TABLE_FILE_NAME     "|strtable.stb"     // デフォルト文字列テーブル
114#define STRTABLE_ID                 "UT_VPN_20100520"   // 文字列テーブル識別子
115
116// OS の判別
117#ifdef  WIN32
118#define OS_WIN32        // Microsoft Windows
119#else
120#define OS_UNIX         // UNIX
121#endif  // WIN32
122
123// ディレクトリ区切り
124#ifdef  OS_WIN32
125#define PATH_BACKSLASH  // バックスラッシュ (\)
126#else   // WIN32
127#define PATH_SLASH      // スラッシュ (/)
128#endif  // WIN32
129
130// 文字コード
131#ifdef  OS_WIN32
132#define CODE_SHIFTJIS   // Shift_JIS コード
133#else   // WIN32
134#define CODE_EUC        // euc-jp コード
135#endif  // WIN32
136
137// エンディアン
138#define IsBigEndian()       (g_little_endian ? false : true)
139#define IsLittleEndian()    (g_little_endian)
140
141#ifdef  OS_WIN32
142// snprintf 関数の置換
143#define snprintf    _snprintf
144#endif  // OS_WIN32
145
146// コンパイラ依存
147#ifndef OS_WIN32
148// gcc コンパイラ
149#define GCC_PACKED      __attribute__ ((__packed__))
150#else   // OS_WIN32
151// VC++ コンパイラ
152#define GCC_PACKED
153#endif  // OS_WIN32
154
155// 現在のファイルと行番号を表示するマクロ
156#define WHERE           printf("%s: %u\n", __FILE__, __LINE__); SleepThread(10);
157#define WHERE32         {   \
158    char tmp[128]; sprintf(tmp, "%s: %u", __FILE__, __LINE__); Win32DebugAlert(tmp);    \
159    }
160#define TIMECHECK       printf("%-12s:%5u", __FILE__, __LINE__);TimeCheck();
161
162// プローブ関係
163#ifdef  USE_PROBE
164#define PROBE_WHERE                     WriteProbe(__FILE__, __LINE__, "");
165#define PROBE_STR(str)                  WriteProbe(__FILE__, __LINE__, (str));
166#define PROBE_DATA2(str, data, size)    WriteProbeData(__FILE__, __LINE__, (str), (data), (size));
167#define PROBE_DATA(data, size)          WriteProbeData(__FILE__, __LINE__, "", (data), (size));
168#else   // USE_PROBE
169#define PROBE_WHERE
170#define PROBE_STR(str)
171#define PROBE_DATA2(str, data, size)
172#define PROBE_DATA(data, size)
173#endif  // USE_PROBE
174
175// 現在の時間を表示するマクロ
176#ifdef  WIN32
177#define WHEN            {WHERE; MsPrintTick();}
178#else   // WIN32
179#define WHEN
180#endif  // WIN32
181
182#ifdef  OS_UNIX
183// UNIX 系 OS にのみ必要なヘッダ
184#include <sys/types.h>
185#include <unistd.h>
186#include <termios.h>
187#include <dirent.h>
188#ifdef  UNIX_LINUX
189#include <sys/vfs.h>
190#elif   UNIX_BSD
191#include <sys/param.h>
192#include <sys/mount.h>
193#endif
194#ifdef  UNIX_SOLARIS
195#include <sys/statvfs.h>
196#define USE_STATVFS
197#endif  // UNIX_SOLARIS
198#include <sys/stat.h>
199#include <sys/file.h>
200#include <sys/socket.h>
201#include <sys/time.h>
202#include <sys/resource.h>
203#include <sys/wait.h>
204#include <sys/ioctl.h>
205#ifdef  UNIX_SOLARIS
206#include <sys/filio.h>
207#endif  // UNIX_SOLARIS
208#include <sys/poll.h>
209#include <sys/resource.h>
210#include <pthread.h>
211#include <signal.h>
212#include <fcntl.h>
213#include <netinet/in.h>
214#include <netinet/tcp.h>
215//#include <netinet/ip.h>
216#include <netdb.h>
217#include <net/if.h>
218#include <net/if_arp.h>
219#include <readline/readline.h>
220#include <readline/history.h>
221//#include <curses.h>
222
223#ifdef  UNIX_LINUX
224#include <iconv.h>
225/*
226typedef void *iconv_t;
227iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
228size_t iconv (iconv_t __cd, char **__restrict __inbuf,
229                     size_t *__restrict __inbytesleft,
230                     char **__restrict __outbuf,
231                     size_t *__restrict __outbytesleft);
232int iconv_close (iconv_t __cd);
233*/
234#else   // UNIX_LINUX
235#include <iconv.h>
236#endif  // UNIX_LINUX
237
238
239#ifdef  UNIX_LINUX
240#include <netinet/if_ether.h>
241#include <net/ethernet.h>
242#include <netpacket/packet.h>
243#endif  // UNIX_LINUX
244
245#ifdef  UNIX_SOLARIS
246#include <sys/dlpi.h>
247#include <sys/stropts.h>
248#include <sys/stream.h>
249#endif  // UNIX_SOLARIS
250
251#ifndef NO_VLAN
252
253#include <Mayaqua/TunTap.h>
254
255#endif  // NO_VLAN
256
257#define closesocket(s)      close(s)
258
259#else   // Win32 のみ
260
261#include <conio.h>
262
263#endif  // OS_UNIX
264
265// IPv6 サポートフラグ
266#ifndef WIN32
267#ifndef AF_INET6
268#define NO_IPV6
269#endif  // AF_INET6
270#endif  // WIN32
271
272// 基本型宣言
273#include <Mayaqua/MayaType.h>
274
275// オブジェクト管理
276#include <Mayaqua/Object.h>
277
278// オブジェクト追跡
279#include <Mayaqua/Tracking.h>
280
281// ファイル入出力
282#include <Mayaqua/FileIO.h>
283
284// メモリ管理
285#include <Mayaqua/Memory.h>
286
287// 文字列処理
288#include <Mayaqua/Str.h>
289
290// 国際化文字列処理
291#include <Mayaqua/Internat.h>
292
293// 暗号化処理
294#include <Mayaqua/Encrypt.h>
295
296// セキュアトークン
297#include <Mayaqua/Secure.h>
298
299// カーネル
300#include <Mayaqua/Kernel.h>
301
302// パッケージ
303#include <Mayaqua/Pack.h>
304
305// 設定ファイル
306#include <Mayaqua/Cfg.h>
307
308// 文字列テーブル
309#include <Mayaqua/Table.h>
310
311// ネットワーク通信
312#include <Mayaqua/Network.h>
313
314// 64 bit リアルタイムクロック
315#include <Mayaqua/Tick64.h>
316
317// OS 依存コード
318#include <Mayaqua/OS.h>
319
320// Microsoft Windows 用コード
321#include <Mayaqua/Microsoft.h>
322
323
324// グローバル変数
325extern bool g_memcheck;
326extern bool g_debug;
327extern char *cmdline;
328extern wchar_t *uni_cmdline;
329extern bool g_little_endian;
330extern LOCK *tick_manual_lock;
331
332// カーネル状態
333#define NUM_KERNEL_STATUS   128
334extern UINT64 kernel_status[NUM_KERNEL_STATUS];
335extern UINT64 kernel_status_max[NUM_KERNEL_STATUS];
336extern LOCK *kernel_status_lock[NUM_KERNEL_STATUS];
337extern BOOL kernel_status_inited;
338
339// カーネル状態操作マクロ
340#define KS_LOCK(id)     LockKernelStatus(id)
341#define KS_UNLOCK(id)   UnlockKernelStatus(id)
342#define KS_GET64(id)    (kernel_status[id])
343#define KS_GET(id)      ((UINT)KS_GET64(id))
344#define KS_GETMAX64(id) (kernel_status_max[id])
345#define KS_GETMAX(id)   ((UINT)KS_GETMAX64(id))
346
347#ifdef  DONT_USE_KERNEL_STATUS
348// カーネルステータス操作を無効にする
349#define KS_INC(id)
350#define KS_DEC(id)
351#define KS_ADD(id, n)
352#define KS_SUB(id, n)
353#else   // DONT_USE_KERNEL_STATUS
354// カーネルステータス操作を有効にする
355#define KS_INC(id)                          \
356if (kernel_status_inited) {                 \
357    KS_LOCK(id);                            \
358    kernel_status[id]++;                    \
359    kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]);  \
360    KS_UNLOCK(id);                          \
361}
362#define KS_DEC(id)                          \
363if (kernel_status_inited) {                 \
364    KS_LOCK(id);                            \
365    kernel_status[id]--;                    \
366    kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]);  \
367    KS_UNLOCK(id);                          \
368}
369#define KS_ADD(id, n)                       \
370if (kernel_status_inited) {                 \
371    KS_LOCK(id);                            \
372    kernel_status[id] += n;                 \
373    kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]);  \
374    KS_UNLOCK(id);                          \
375}
376#define KS_SUB(id, n)                       \
377if (kernel_status_inited) {                 \
378    KS_LOCK(id);                            \
379    kernel_status[id] -= n;                 \
380    kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]);  \
381    KS_UNLOCK(id);                          \
382}
383#endif  // DONT_USE_KERNEL_STATUS
384
385// カーネル状態一覧
386// 文字列関係
387#define KS_STRCPY_COUNT         0       // StrCpy 呼び出し回数
388#define KS_STRLEN_COUNT         1       // StrLen 呼び出し回数
389#define KS_STRCHECK_COUNT       2       // StrCheck 呼び出し回数
390#define KS_STRCAT_COUNT         3       // StrCat 呼び出し回数
391#define KS_FORMAT_COUNT         4       // Format 呼び出し回数
392// メモリ関係
393#define KS_MALLOC_COUNT         5       // Malloc 呼び出し回数
394#define KS_REALLOC_COUNT        6       // ReAlloc 呼び出し回数
395#define KS_FREE_COUNT           7       // Free 呼び出し回数
396#define KS_TOTAL_MEM_SIZE       8       // これまでに確保したメモリの合計サイズ
397#define KS_CURRENT_MEM_COUNT    9       // 現在確保しているメモリブロック数
398#define KS_TOTAL_MEM_COUNT      10      // これまでに確保したメモリブロック数の合計
399#define KS_ZERO_COUNT           11      // Zero 呼び出し回数
400#define KS_COPY_COUNT           12      // Copy 呼び出し回数
401// ロック関係
402#define KS_NEWLOCK_COUNT        13      // NewLock を呼び出した回数
403#define KS_DELETELOCK_COUNT     14      // DeleteLock を呼び出した回数
404#define KS_LOCK_COUNT           15      // Lock を呼び出した回数
405#define KS_UNLOCK_COUNT         16      // Unlock を呼び出した回数
406#define KS_CURRENT_LOCK_COUNT   17      // 現在の LOCK オブジェクト数
407#define KS_CURRENT_LOCKED_COUNT 18      // 現在のロックされている LOCK オブジェクト数
408// カウンタ情報
409#define KS_NEW_COUNTER_COUNT    19      // NewCounter を呼び出した回数
410#define KS_DELETE_COUNTER_COUNT 20      // DeleteCounter を呼び出した回数
411#define KS_INC_COUNT            21      // Inc を呼び出した回数
412#define KS_DEC_COUNT            22      // Dec を呼び出した回数
413#define KS_CURRENT_COUNT        23      // 現在のカウント数の合計
414// 参照カウンタ情報
415#define KS_NEWREF_COUNT         24      // NewRef を呼び出した回数
416#define KS_FREEREF_COUNT        72      // REF オブジェクトを削除した回数
417#define KS_ADDREF_COUNT         25      // AddRef を呼び出した回数
418#define KS_RELEASE_COUNT        26      // Release を呼び出した回数
419#define KS_CURRENT_REF_COUNT    27      // 現在の REF オブジェクト数
420#define KS_CURRENT_REFED_COUNT  28      // 現在の参照数の合計
421// バッファ情報
422#define KS_NEWBUF_COUNT         29      // NewBuf を呼び出した回数
423#define KS_FREEBUF_COUNT        30      // FreeBuf を呼び出した回数
424#define KS_CURRENT_BUF_COUNT    31      // 現在の BUF オブジェクトの数
425#define KS_READ_BUF_COUNT       32      // ReadBuf を呼び出した回数
426#define KS_WRITE_BUF_COUNT      33      // WriteBuf を呼び出した回数
427#define KS_ADJUST_BUFSIZE_COUNT 34      // バッファサイズを調整した回数
428#define KS_SEEK_BUF_COUNT       35      // SeekBuf を呼び出した回数
429// FIFO 情報
430#define KS_NEWFIFO_COUNT        36      // NewFifo を呼び出した回数
431#define KS_FREEFIFO_COUNT       37      // FIFO オブジェクトを削除した回数
432#define KS_READ_FIFO_COUNT      38      // ReadFifo を呼び出した回数
433#define KS_WRITE_FIFO_COUNT     39      // WriteFifo を呼び出した回数
434#define KS_PEEK_FIFO_COUNT      40      // PeekFifo を呼び出した回数
435// リスト関係
436#define KS_NEWLIST_COUNT        41      // NewList を呼び出した回数
437#define KS_FREELIST_COUNT       42      // LIST オブジェクトを削除した回数
438#define KS_INSERT_COUNT         43      // Add を呼び出した回数
439#define KS_DELETE_COUNT         44      // Delete を呼び出した回数
440#define KS_SORT_COUNT           45      // Sort を呼び出した回数
441#define KS_SEARCH_COUNT         46      // Search を呼び出した回数
442#define KS_TOARRAY_COUNT        47      // ToArray を呼び出した回数
443// キュー関係
444#define KS_NEWQUEUE_COUNT       48      // NewQueue を呼び出した回数
445#define KS_FREEQUEUE_COUNT      49      // QUEUE オブジェクトを削除した回数
446#define KS_PUSH_COUNT           50      // Push を呼び出した回数
447#define KS_POP_COUNT            51      // POP を呼び出した回数
448// スタック関係
449#define KS_NEWSK_COUNT          52      // NewSk を呼び出した回数
450#define KS_FREESK_COUNT         53      // SK オブジェクトを削除した回数
451#define KS_INSERT_QUEUE_COUNT   54      // InsertQueue を呼び出した回数
452#define KS_GETNEXT_COUNT        55      // GetNext を呼び出した回数
453// カーネル関係
454#define KS_GETTIME_COUNT        56      // 時刻を取得した回数
455#define KS_GETTICK_COUNT        57      // システムタイマを取得した回数
456#define KS_NEWTHREAD_COUNT      58      // NewThread を呼び出した回数
457#define KS_FREETHREAD_COUNT     59      // THREAD オブジェクトを削除した回数
458#define KS_WAITFORTHREAD_COUNT  60      // WaitForThread を呼び出した回数
459#define KS_NEWEVENT_COUNT       61      // NewEvent を呼び出した回数
460#define KS_FREEEVENT_COUNT      62      // EVENT オブジェクトを削除した回数
461#define KS_WAIT_COUNT           63      // Wait を呼び出した回数
462#define KS_SLEEPTHREAD_COUNT    64      // SleepThread を呼び出した回数
463// IO 関係
464#define KS_IO_OPEN_COUNT        65      // ファイルを開いた回数
465#define KS_IO_CREATE_COUNT      66      // ファイルを作成した回数
466#define KS_IO_CLOSE_COUNT       67      // ファイルを閉じた回数
467#define KS_IO_READ_COUNT        68      // ファイルから読み込んだ回数
468#define KS_IO_WRITE_COUNT       69      // ファイルに書き込んだ回数
469#define KS_IO_TOTAL_READ_SIZE   70      // ファイルから読み込んだ合計バイト数
470#define KS_IO_TOTAL_WRITE_SIZE  71      // ファイルに書き込んだ合計バイト数
471// メモリプール関係
472#define KS_MEMPOOL_MALLOC_COUNT 75      // メモリプールを確保した回数
473#define KS_MEMPOOL_FREE_COUNT   73      // メモリプールを解放した回数
474#define KS_MEMPOOL_CURRENT_NUM  74      // 現在のメモリプールの個数
475#define KS_MEMPOOL_REALLOC_COUNT    76  // メモリプールを ReAlloc した回数
476
477
478// マクロ
479#define IsDebug()       (g_debug)       // デバッグモード
480#define IsMemCheck()    (g_memcheck)    // メモリチェックモード
481
482// 関数プロトタイプ
483void InitMayaqua(bool memcheck, bool debug, int argc, char **argv);
484void FreeMayaqua();
485bool IsNt();
486bool IsUnicode();
487void MayaquaDotNetMode();
488bool MayaquaIsDotNetMode();
489void MayaquaMinimalMode();
490bool MayaquaIsMinimalMode();
491bool Is64();
492bool Is32();
493bool IsIA64();
494bool IsX64();
495void InitKernelStatus();
496void FreeKernelStatus();
497void PrintDebugInformation();
498void LockKernelStatus(UINT id);
499void UnlockKernelStatus(UINT id);
500void PrintKernelStatus();
501void InitCommandLineStr(int argc, char **argv);
502void FreeCommandLineStr();
503void SetCommandLineStr(char *str);
504void SetCommandLineUniStr(wchar_t *str);
505char *GetCommandLineStr();
506wchar_t *GetCommandLineUniStr();
507void ParseCommandLineTokens();
508void FreeCommandLineTokens();
509TOKEN_LIST *GetCommandLineToken();
510UNI_TOKEN_LIST *GetCommandLineUniToken();
511void InitOsInfo();
512void FreeOsInfo();
513void Alert(char *msg, char *caption);
514void AlertW(wchar_t *msg, wchar_t *caption);
515OS_INFO *GetOsInfo();
516UINT GetOsType();
517void PrintOsInfo(OS_INFO *info);
518void CheckEndian();
519void CheckUnixTempDir();
520void TimeCheck();
521void SetHamMode();
522bool IsHamMode();
523void InitProbe();
524void FreeProbe();
525void EnableProbe(bool enable);
526bool IsProbeEnabled();
527void WriteProbe(char *filename, UINT line, char *str);
528void WriteProbeData(char *filename, UINT line, char *str, void *data, UINT size);
529USHORT CalcChecksum16(void *buf, UINT size);
530
531#ifdef  OS_WIN32
532// インポートライブラリ (for Win32)
533#pragma comment(lib, "Ws2_32.lib")
534#pragma comment(lib, "winmm.lib")
535#pragma comment(lib, "kernel32.lib")
536#pragma comment(lib, "user32.lib")
537#pragma comment(lib, "gdi32.lib")
538#pragma comment(lib, "shell32.lib")
539#pragma comment(lib, "comctl32.lib")
540#pragma comment(lib, "dbghelp.lib")
541#pragma comment(lib, "Iphlpapi.lib")
542#pragma comment(lib, "setupapi.lib")
543#pragma comment(lib, "version.lib")
544#pragma comment(lib, "Netapi32.lib")
545#pragma comment(lib, "shlwapi.lib")
546#pragma warning( disable : 4099 )
547#endif  // OS_WIN32
548
549// デバッグ用
550#ifndef ENCRYPT_C
551//#define   Disconnect(s)       {Debug("Disconnect() Called: %s %u\n", __FILE__, __LINE__);Disconnect(s);}
552#endif
553
554
555#endif  // MAYAQUA_H
556
557
Note: See TracBrowser for help on using the repository browser.