1 // SoftEther UT-VPN SourceCode
\r
3 // Copyright (C) 2004-2010 SoftEther Corporation.
\r
4 // Copyright (C) 2004-2010 University of Tsukuba, Japan.
\r
5 // Copyright (C) 2003-2010 Daiyuu Nobori.
\r
6 // All Rights Reserved.
\r
8 // http://utvpn.tsukuba.ac.jp/
\r
10 // This program is free software; you can redistribute it and/or
\r
11 // modify it under the terms of the GNU General Public License
\r
12 // version 2 as published by the Free Software Foundation.
\r
14 // This program is distributed in the hope that it will be useful,
\r
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
17 // GNU General Public License for more details.
\r
19 // You should have received a copy of the GNU General Public License version 2
\r
20 // along with this program; if not, write to the Free Software
\r
21 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
\r
23 // このファイルは GPL バージョン 2 ライセンスで公開されています。
\r
24 // 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布
\r
25 // することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示
\r
26 // を除去することはできません。改変した著作物を配布する場合は、改変実施者の
\r
27 // 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。
\r
29 // この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の
\r
30 // ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )
\r
31 // および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって
\r
33 // 本プログラムの配布者は、本プログラムを、業としての利用以外のため、
\r
34 // および、試験または研究のために利用が行われることを想定して配布
\r
36 // SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に
\r
38 // 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード
\r
39 // の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して
\r
40 // いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して
\r
41 // ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース
\r
44 // GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する
\r
45 // 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。
\r
47 // 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社
\r
48 // (SoftEther Corporation) およびその他の著作権保持者が保有しています。
\r
49 // ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの
\r
50 // 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意
\r
53 // お願い: どのような通信ソフトウェアにも通常は必ず未発見の
\r
54 // セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、
\r
55 // UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの
\r
56 // 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社
\r
57 // および脆弱性情報の届出を受け付ける公的機関まで通報いただき、
\r
58 // 公益保護にご協力いただきますようお願い申し上げます。
\r
60 // ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を
\r
61 // 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客
\r
64 // ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/
\r
65 // 日本国内の脆弱性情報届出受付公的機関:
\r
67 // http://www.ipa.go.jp/security/vuln/report/
\r
69 // 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。
\r
70 // 連絡先: http://www.softether.co.jp/jp/contact/
\r
72 // -----------------------------------------------
\r
75 // 新規リリース by SoftEther
\r
76 // -----------------------------------------------
\r
83 // Windows 用の型が windows.h をインクルードしていなくても使えるようにする
\r
95 #define MS_EVENTLOG_TYPE_INFORMATION 0
\r
96 #define MS_EVENTLOG_TYPE_WARNING 1
\r
97 #define MS_EVENTLOG_TYPE_ERROR 2
\r
99 #define MS_RC_EVENTLOG_TYPE_INFORMATION 0x40000001L
\r
100 #define MS_RC_EVENTLOG_TYPE_WARNING 0x80000002L
\r
101 #define MS_RC_EVENTLOG_TYPE_ERROR 0xC0000003L
\r
105 #define TCP_MAX_NUM_CONNECTIONS 16777214
\r
107 #define DEFAULT_TCP_MAX_WINDOW_SIZE_RECV 5955584
\r
108 #define DEFAULT_TCP_MAX_WINDOW_SIZE_SEND 131072
\r
109 #define DEFAULT_TCP_MAX_NUM_CONNECTIONS 16777214
\r
112 #define SVC_ARG_INSTALL "/install"
\r
113 #define SVC_ARG_UNINSTALL "/uninstall"
\r
114 #define SVC_ARG_START "/start"
\r
115 #define SVC_ARG_STOP "/stop"
\r
116 #define SVC_ARG_TEST "/test"
\r
117 #define SVC_ARG_USERMODE "/usermode"
\r
118 #define SVC_ARG_USERMODE_SHOWTRAY "/usermode_showtray"
\r
119 #define SVC_ARG_USERMODE_HIDETRAY "/usermode_hidetray"
\r
120 #define SVC_ARG_SERVICE "/service"
\r
121 #define SVC_ARG_SETUP_INSTALL "/setup_install"
\r
122 #define SVC_ARG_SETUP_UNINSTALL "/setup_uninstall"
\r
123 #define SVC_ARG_WIN9X_SERVICE "/win9x_service"
\r
124 #define SVC_ARG_WIN9X_INSTALL "/win9x_install"
\r
125 #define SVC_ARG_WIN9X_UNINSTALL "/win9x_uninstall"
\r
126 #define SVC_ARG_TCP "/tcp"
\r
127 #define SVC_ARG_TCP_SETUP "/tcpsetup"
\r
128 #define SVC_ARG_TRAFFIC "/traffic"
\r
129 #define SVC_ARG_UIHELP "/uihelp"
\r
130 #define SVC_ARG_UIHELP_W L"/uihelp"
\r
131 #define SVC_ARG_SILENT "/silent"
\r
133 // サービスがフリーズした場合の自殺までの時間
\r
134 #define SVC_SELFKILL_TIMEOUT (5 * 60 * 1000)
\r
136 // Win32 版仮想 LAN カードのデバイスドライバの名称 (先頭部分)
\r
137 #define VLAN_ADAPTER_NAME "UT-VPN Client Adapter"
\r
139 // Win32 版仮想 LAN カードのデバイスドライバの名称 (フルネーム)
\r
140 #define VLAN_ADAPTER_NAME_TAG "UT-VPN Client Adapter - %s"
\r
142 // Win32 版仮想 LAN カードの [ネットワーク接続] における表示名 (フルネーム)
\r
143 #define VLAN_CONNECTION_NAME "%s - UT-VPN Client"
\r
147 #define SVC_RUN_COMMANDLINE L"\"%s\" /service"
\r
150 #define SVC_MODE_NONE 0
\r
151 #define SVC_MODE_INSTALL 1
\r
152 #define SVC_MODE_UNINSTALL 2
\r
153 #define SVC_MODE_START 3
\r
154 #define SVC_MODE_STOP 4
\r
155 #define SVC_MODE_TEST 5
\r
156 #define SVC_MODE_USERMODE 6
\r
157 #define SVC_MODE_SERVICE 7
\r
158 #define SVC_MODE_SETUP_INSTALL 8
\r
159 #define SVC_MODE_SETUP_UNINSTALL 9
\r
160 #define SVC_MODE_WIN9X_SERVICE 10
\r
161 #define SVC_MODE_WIN9X_INSTALL 11
\r
162 #define SVC_MODE_WIN9X_UNINSTALL 12
\r
163 #define SVC_MODE_TCP 13
\r
164 #define SVC_MODE_TCPSETUP 14
\r
165 #define SVC_MODE_TRAFFIC 15
\r
166 #define SVC_MODE_UIHELP 16
\r
169 #define WIN9X_SVC_REGKEY_1 "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices"
\r
170 #define WIN9X_SVC_REGKEY_2 "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
\r
172 #define VISTA_MMCSS_KEYNAME "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks"
\r
173 #define VISTA_MMCSS_FILENAME "mmcss_backup.dat"
\r
175 #define SVC_NAME "SVC_%s_NAME"
\r
176 #define SVC_TITLE "SVC_%s_TITLE"
\r
177 #define SVC_DESCRIPT "SVC_%s_DESCRIPT"
\r
179 #define SVC_USERMODE_SETTING_KEY "Software\\SoftEther Corporation\\UT-VPN\\UserMode Settings"
\r
180 #define SVC_HIDETRAY_REG_VALUE "HideTray_%S"
\r
182 #define SVC_CALLING_SM_PROCESS_ID_KEY "Software\\SoftEther Corporation\\UT-VPN\\Service Control\\%s"
\r
183 #define SVC_CALLING_SM_PROCESS_ID_VALUE "ProcessId"
\r
185 #define MMCSS_PROFILE_KEYNAME "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile"
\r
188 #define MS_REG_TCP_SETTING_KEY "Software\\SoftEther Corporation\\Network Settings"
\r
193 #define DRIVER_INF_FILE_NAME L"|vpn_driver.inf"
\r
194 #define DRIVER_INF_FILE_NAME_X64 L"|vpn_driver_x64.inf"
\r
195 #define DRIVER_INF_FILE_NAME_IA64 L"|vpn_driver_ia64.inf"
\r
196 #define DRIVER_INF_FILE_NAME_9X L"|vpn_driver_9x.inf"
\r
197 #define DRIVER_SYS_FILE_NAME L"|vpn_driver.sys"
\r
198 #define DRIVER_SYS_FILE_NAME_X64 L"|vpn_driver_x64.sys"
\r
199 #define DRIVER_SYS_FILE_NAME_IA64 L"|vpn_driver_ia64.sys"
\r
200 #define DRIVER_SYS_FILE_NAME_9X L"|vpn_driver_9x.sys"
\r
201 #define DRIVER_INSTALL_INF_NAME_TAG "Sen_%s.inf"
\r
202 #define DRIVER_INSTALL_SYS_NAME_TAG "Sen_%s.sys"
\r
203 #define DRIVER_INSTALL_SYS_NAME_TAG_NEW "Sen_%04u.sys"
\r
204 #define DRIVER_INSTALL_SYS_NAME_TAG_MAXID 128
\r
206 // Vista 用ドライバインストーラ関係
\r
207 #define VISTA_DRIVER_INSTALLER_SRC L"|driver_installer.exe"
\r
208 #define VISTA_DRIVER_INSTALLER_SRC_X64 L"|driver_installer_x64.exe"
\r
209 #define VISTA_DRIVER_INSTALLER_SRC_IA64 L"|driver_installer_ia64.exe"
\r
210 #define VISTA_DRIVER_INSTALLER_DST L"%s\\driver_installer.exe"
\r
212 #define DRIVER_DEVICE_ID_TAG "SenAdapter_%s"
\r
215 #if (defined(MICROSOFT_C) || defined(NETWORK_C)) && (defined(OS_WIN32))
\r
217 typedef enum __TCP_TABLE_CLASS {
\r
218 _TCP_TABLE_BASIC_LISTENER,
\r
219 _TCP_TABLE_BASIC_CONNECTIONS,
\r
220 _TCP_TABLE_BASIC_ALL,
\r
221 _TCP_TABLE_OWNER_PID_LISTENER,
\r
222 _TCP_TABLE_OWNER_PID_CONNECTIONS,
\r
223 _TCP_TABLE_OWNER_PID_ALL,
\r
224 _TCP_TABLE_OWNER_MODULE_LISTENER,
\r
225 _TCP_TABLE_OWNER_MODULE_CONNECTIONS,
\r
226 _TCP_TABLE_OWNER_MODULE_ALL
\r
227 } _TCP_TABLE_CLASS, *_PTCP_TABLE_CLASS;
\r
229 // Win32 ネットワーク関係の API 関数へのポインタ
\r
230 typedef struct NETWORK_WIN32_FUNCTIONS
\r
232 HINSTANCE hIpHlpApi32;
\r
233 DWORD (WINAPI *DeleteIpForwardEntry)(PMIB_IPFORWARDROW);
\r
234 DWORD (WINAPI *CreateIpForwardEntry)(PMIB_IPFORWARDROW);
\r
235 DWORD (WINAPI *GetIpForwardTable)(PMIB_IPFORWARDTABLE, PULONG, BOOL);
\r
236 DWORD (WINAPI *GetNetworkParams)(PFIXED_INFO, PULONG);
\r
237 DWORD (WINAPI *GetIfTable)(PMIB_IFTABLE, PULONG, BOOL);
\r
238 DWORD (WINAPI *IpRenewAddress)(PIP_ADAPTER_INDEX_MAP);
\r
239 DWORD (WINAPI *IpReleaseAddress)(PIP_ADAPTER_INDEX_MAP);
\r
240 DWORD (WINAPI *GetInterfaceInfo)(PIP_INTERFACE_INFO, PULONG);
\r
241 DWORD (WINAPI *GetAdaptersInfo)(PIP_ADAPTER_INFO, PULONG);
\r
242 DWORD (WINAPI *GetExtendedTcpTable)(PVOID, PDWORD, BOOL, ULONG, _TCP_TABLE_CLASS, ULONG);
\r
243 DWORD (WINAPI *AllocateAndGetTcpExTableFromStack)(PVOID *, BOOL, HANDLE, DWORD, DWORD);
\r
244 DWORD (WINAPI *GetTcpTable)(PMIB_TCPTABLE, PDWORD, BOOL);
\r
245 DWORD (WINAPI *NotifyRouteChange)(PHANDLE, LPOVERLAPPED);
\r
246 BOOL (WINAPI *CancelIPChangeNotify)(LPOVERLAPPED);
\r
247 DWORD (WINAPI *NhpAllocateAndGetInterfaceInfoFromStack)(IP_INTERFACE_NAME_INFO **,
\r
248 PDWORD, BOOL, HANDLE, DWORD);
\r
249 } NETWORK_WIN32_FUNCTIONS;
\r
258 HINSTANCE hKernel32;
\r
262 HANDLE hCurrentProcess;
\r
263 UINT CurrentProcessId;
\r
264 bool MiniDumpEnabled;
\r
271 char *WindowsDrive;
\r
272 char *ProgramFilesDir;
\r
273 char *CommonStartMenuDir;
\r
274 char *CommonProgramsDir;
\r
275 char *CommonStartupDir;
\r
276 char *CommonAppDataDir;
\r
277 char *CommonDesktopDir;
\r
278 char *PersonalStartMenuDir;
\r
279 char *PersonalProgramsDir;
\r
280 char *PersonalStartupDir;
\r
281 char *PersonalAppDataDir;
\r
282 char *PersonalDesktopDir;
\r
283 char *MyDocumentsDir;
\r
284 char *LocalAppDataDir;
\r
288 wchar_t *ExeFileNameW;
\r
289 wchar_t *ExeFileDirW;
\r
290 wchar_t *WindowsDirW;
\r
291 wchar_t *System32DirW;
\r
293 wchar_t *WinTempDirW;
\r
294 wchar_t *WindowsDriveW;
\r
295 wchar_t *ProgramFilesDirW;
\r
296 wchar_t *CommonStartMenuDirW;
\r
297 wchar_t *CommonProgramsDirW;
\r
298 wchar_t *CommonStartupDirW;
\r
299 wchar_t *CommonAppDataDirW;
\r
300 wchar_t *CommonDesktopDirW;
\r
301 wchar_t *PersonalStartMenuDirW;
\r
302 wchar_t *PersonalProgramsDirW;
\r
303 wchar_t *PersonalStartupDirW;
\r
304 wchar_t *PersonalAppDataDirW;
\r
305 wchar_t *PersonalDesktopDirW;
\r
306 wchar_t *MyDocumentsDirW;
\r
307 wchar_t *LocalAppDataDirW;
\r
308 wchar_t *MyTempDirW;
\r
309 wchar_t *UserNameW;
\r
310 wchar_t *UserNameExW;
\r
311 wchar_t *MinidumpBaseFileNameW;
\r
315 // Windows NT 用 API
\r
316 typedef struct NT_API
\r
318 HINSTANCE hAdvapi32;
\r
319 HINSTANCE hShell32;
\r
321 HINSTANCE hSetupApi;
\r
322 HINSTANCE hWtsApi32;
\r
324 HINSTANCE hKernel32;
\r
325 HINSTANCE hSecur32;
\r
327 HINSTANCE hDbgHelp;
\r
328 BOOL (WINAPI *OpenProcessToken)(HANDLE, DWORD, PHANDLE);
\r
329 BOOL (WINAPI *LookupPrivilegeValue)(char *, char *, PLUID);
\r
330 BOOL (WINAPI *AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD);
\r
331 BOOL (WINAPI *InitiateSystemShutdown)(LPTSTR, LPTSTR, DWORD, BOOL, BOOL);
\r
332 BOOL (WINAPI *LogonUserW)(wchar_t *, wchar_t *, wchar_t *, DWORD, DWORD, HANDLE *);
\r
333 BOOL (WINAPI *LogonUserA)(char *, char *, char *, DWORD, DWORD, HANDLE *);
\r
334 BOOL (WINAPI *UpdateDriverForPlugAndPlayDevicesW)(HWND hWnd, wchar_t *hardware_id, wchar_t *inf_path, UINT flag, BOOL *need_reboot);
\r
335 UINT (WINAPI *CM_Get_DevNode_Status_Ex)(UINT *, UINT *, DWORD, UINT, HANDLE);
\r
336 UINT (WINAPI *CM_Get_Device_ID_ExA)(DWORD, char *, UINT, UINT, HANDLE);
\r
337 UINT (WINAPI *WTSQuerySessionInformation)(HANDLE, DWORD, WTS_INFO_CLASS, wchar_t *, DWORD *);
\r
338 void (WINAPI *WTSFreeMemory)(void *);
\r
339 BOOL (WINAPI *WTSDisconnectSession)(HANDLE, DWORD, BOOL);
\r
340 BOOL (WINAPI *WTSEnumerateSessions)(HANDLE, DWORD, DWORD, PWTS_SESSION_INFO *, DWORD *);
\r
341 SC_HANDLE (WINAPI *OpenSCManager)(LPCTSTR, LPCTSTR, DWORD);
\r
342 SC_HANDLE (WINAPI *CreateServiceA)(SC_HANDLE, LPCTSTR, LPCTSTR, DWORD, DWORD, DWORD, DWORD, LPCTSTR, LPCTSTR, LPDWORD, LPCTSTR, LPCTSTR, LPCTSTR);
\r
343 SC_HANDLE (WINAPI *CreateServiceW)(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, DWORD, DWORD, LPCWSTR, LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR);
\r
344 BOOL (WINAPI *ChangeServiceConfig2)(SC_HANDLE, DWORD, LPVOID);
\r
345 BOOL (WINAPI *CloseServiceHandle)(SC_HANDLE);
\r
346 SC_HANDLE (WINAPI *OpenService)(SC_HANDLE, LPCTSTR, DWORD);
\r
347 BOOL (WINAPI *QueryServiceStatus)(SC_HANDLE, LPSERVICE_STATUS);
\r
348 BOOL (WINAPI *StartService)(SC_HANDLE, DWORD, LPCTSTR);
\r
349 BOOL (WINAPI *ControlService)(SC_HANDLE, DWORD, LPSERVICE_STATUS);
\r
350 BOOL (WINAPI *SetServiceStatus)(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS);
\r
351 SERVICE_STATUS_HANDLE (WINAPI *RegisterServiceCtrlHandler)(LPCTSTR, LPHANDLER_FUNCTION);
\r
352 BOOL (WINAPI *StartServiceCtrlDispatcher)(CONST LPSERVICE_TABLE_ENTRY);
\r
353 BOOL (WINAPI *DeleteService)(SC_HANDLE);
\r
354 BOOL (WINAPI *EnumProcesses)(DWORD *, DWORD, DWORD *);
\r
355 BOOL (WINAPI *EnumProcessModules)(HANDLE, HMODULE *, DWORD, DWORD *);
\r
356 DWORD (WINAPI *GetModuleFileNameExA)(HANDLE, HMODULE, LPSTR, DWORD);
\r
357 DWORD (WINAPI *GetModuleFileNameExW)(HANDLE, HMODULE, LPWSTR, DWORD);
\r
358 LONG (WINAPI *RegDeleteKeyExA)(HKEY, LPCTSTR, REGSAM, DWORD);
\r
359 BOOL (WINAPI *IsWow64Process)(HANDLE, BOOL *);
\r
360 void (WINAPI *GetNativeSystemInfo)(SYSTEM_INFO *);
\r
361 BOOL (WINAPI *DuplicateTokenEx)(HANDLE, DWORD, SECURITY_ATTRIBUTES *, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, HANDLE *);
\r
362 BOOL (WINAPI *ConvertStringSidToSidA)(LPCSTR, PSID *);
\r
363 BOOL (WINAPI *SetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void *, DWORD);
\r
364 BOOL (WINAPI *GetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void *, DWORD, PDWORD);
\r
365 BOOL (WINAPI *CreateProcessAsUserA)(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, void *, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
\r
366 BOOL (WINAPI *CreateProcessAsUserW)(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, void *, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION);
\r
367 BOOL (WINAPI *LookupAccountSidA)(LPCSTR,PSID,LPSTR,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
\r
368 BOOL (WINAPI *LookupAccountNameA)(LPCSTR,LPCSTR,PSID,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
\r
369 BOOL (WINAPI *GetUserNameExA)(EXTENDED_NAME_FORMAT, LPSTR, PULONG);
\r
370 BOOL (WINAPI *GetUserNameExW)(EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
\r
371 BOOL (WINAPI *SwitchDesktop)(HDESK);
\r
372 HDESK (WINAPI *OpenDesktopA)(LPTSTR, DWORD, BOOL, ACCESS_MASK);
\r
373 BOOL (WINAPI *CloseDesktop)(HDESK);
\r
374 BOOL (WINAPI *SetProcessShutdownParameters)(DWORD, DWORD);
\r
375 HANDLE (WINAPI *RegisterEventSourceW)(LPCWSTR, LPCWSTR);
\r
376 BOOL (WINAPI *ReportEventW)(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR *, LPVOID);
\r
377 BOOL (WINAPI *DeregisterEventSource)(HANDLE);
\r
378 BOOL (WINAPI *Wow64DisableWow64FsRedirection)(void **);
\r
379 BOOLEAN (WINAPI *Wow64EnableWow64FsRedirection)(BOOLEAN);
\r
380 BOOL (WINAPI *Wow64RevertWow64FsRedirection)(void *);
\r
381 BOOL (WINAPI *GetFileInformationByHandle)(HANDLE, LPBY_HANDLE_FILE_INFORMATION);
\r
382 HANDLE (WINAPI *GetProcessHeap)();
\r
383 BOOL (WINAPI *MiniDumpWriteDump)(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
\r
384 PMINIDUMP_EXCEPTION_INFORMATION, PMINIDUMP_USER_STREAM_INFORMATION,
\r
385 PMINIDUMP_CALLBACK_INFORMATION);
\r
388 typedef struct MS_EVENTLOG
\r
393 extern NETWORK_WIN32_FUNCTIONS *w32net;
\r
395 #endif // MICROSOFT_C
\r
397 // 警告を出さないようにするための構造体
\r
398 typedef struct NO_WARNING
\r
401 THREAD *NoWarningThread;
\r
403 volatile bool Halt;
\r
404 wchar_t *SoundFileName;
\r
408 #define REG_CLASSES_ROOT 0 // HKEY_CLASSES_ROOT
\r
409 #define REG_LOCAL_MACHINE 1 // HKEY_LOCAL_MACHINE
\r
410 #define REG_CURRENT_USER 2 // HKEY_CURRENT_USER
\r
411 #define REG_USERS 3 // HKEY_USERS
\r
414 typedef void (SERVICE_FUNCTION)();
\r
417 typedef struct MS_PROCESS
\r
419 char ExeFilename[MAX_PATH]; // EXE ファイル名
\r
420 wchar_t ExeFilenameW[MAX_PATH]; // EXE ファイル名 (Unicode)
\r
421 UINT ProcessId; // プロセス ID
\r
424 #define MAX_MS_ADAPTER_IP_ADDRESS 64
\r
427 typedef struct MS_ADAPTER
\r
429 char Title[MAX_PATH]; // 表示名
\r
430 UINT Index; // インデックス
\r
432 UINT Status; // ステータス
\r
435 UINT AddressSize; // アドレスサイズ
\r
436 UCHAR Address[8]; // アドレス
\r
437 UINT64 RecvBytes; // 受信バイト数
\r
438 UINT64 RecvPacketsBroadcast; // 受信ブロードキャストパケット数
\r
439 UINT64 RecvPacketsUnicast; // 受信ユニキャストパケット数
\r
440 UINT64 SendBytes; // 送信バイト数
\r
441 UINT64 SendPacketsBroadcast; // 送信ブロードキャストパケット数
\r
442 UINT64 SendPacketsUnicast; // 送信ユニキャストパケット数
\r
443 bool Info; // 詳しい情報があるかどうか
\r
444 char Guid[MAX_SIZE]; // GUID
\r
445 UINT NumIpAddress; // IP アドレス個数
\r
446 IP IpAddresses[MAX_MS_ADAPTER_IP_ADDRESS]; // IP アドレス
\r
447 IP SubnetMasks[MAX_MS_ADAPTER_IP_ADDRESS]; // サブネット マスク
\r
448 UINT NumGateway; // ゲートウェイ個数
\r
449 IP Gateways[MAX_MS_ADAPTER_IP_ADDRESS]; // ゲートウェイ
\r
450 bool UseDhcp; // DHCP 使用フラグ
\r
451 IP DhcpServer; // DHCP サーバー
\r
452 UINT64 DhcpLeaseStart; // DHCP リース開始日時
\r
453 UINT64 DhcpLeaseExpires; // DHCP リース期限日時
\r
454 bool UseWins; // WINS 使用フラグ
\r
455 IP PrimaryWinsServer; // プライマリ WINS サーバー
\r
456 IP SecondaryWinsServer; // セカンダリ WINS サーバー
\r
460 typedef struct MS_ADAPTER_LIST
\r
463 MS_ADAPTER **Adapters; // 内容
\r
467 typedef struct MS_TCP
\r
469 UINT RecvWindowSize; // 受信ウインドウサイズ
\r
470 UINT SendWindowSize; // 送信ウインドウサイズ
\r
474 typedef struct MS_NOSLEEP
\r
476 THREAD *Thread; // スレッド
\r
477 EVENT *HaltEvent; // 停止イベント
\r
478 volatile bool Halt; // 停止フラグ
\r
479 bool NoScreenSaver; // スクリーンセーバーも防止
\r
481 // 以下 Windows Vista 用
\r
482 wchar_t ScreenSaveActive[MAX_PATH];
\r
483 wchar_t SCRNSAVE_EXE[MAX_PATH];
\r
487 typedef struct ENUM_CHILD_WINDOW_PARAM
\r
491 bool include_ipcontrol;
\r
492 } ENUM_CHILD_WINDOW_PARAM;
\r
497 char *MsCutExeNameFromCommandLine(char *str);
\r
498 wchar_t *MsCutExeNameFromUniCommandLine(wchar_t *str);
\r
500 DWORD MsRegAccessMaskFor64Bit(bool force32bit);
\r
501 DWORD MsRegAccessMaskFor64BitEx(bool force32bit, bool force64bit);
\r
503 bool MsRegIsKey(UINT root, char *name);
\r
504 bool MsRegIsKeyEx(UINT root, char *name, bool force32bit);
\r
505 bool MsRegIsKeyEx2(UINT root, char *name, bool force32bit, bool force64bit);
\r
507 bool MsRegIsValue(UINT root, char *keyname, char *valuename);
\r
508 bool MsRegIsValueEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
509 bool MsRegIsValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
511 bool MsRegGetValueTypeAndSize(UINT root, char *keyname, char *valuename, UINT *type, UINT *size);
\r
512 bool MsRegGetValueTypeAndSizeEx(UINT root, char *keyname, char *valuename, UINT *type, UINT *size, bool force32bit);
\r
513 bool MsRegGetValueTypeAndSizeEx2(UINT root, char *keyname, char *valuename, UINT *type, UINT *size, bool force32bit, bool force64bit);
\r
514 bool MsRegGetValueTypeAndSizeW(UINT root, char *keyname, char *valuename, UINT *type, UINT *size);
\r
515 bool MsRegGetValueTypeAndSizeExW(UINT root, char *keyname, char *valuename, UINT *type, UINT *size, bool force32bit);
\r
516 bool MsRegGetValueTypeAndSizeEx2W(UINT root, char *keyname, char *valuename, UINT *type, UINT *size, bool force32bit, bool force64bit);
\r
518 bool MsRegReadValue(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size);
\r
519 bool MsRegReadValueEx(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size, bool force32bit);
\r
520 bool MsRegReadValueEx2(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size, bool force32bit, bool force64bit);
\r
521 bool MsRegReadValueW(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size);
\r
522 bool MsRegReadValueExW(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size, bool force32bit);
\r
523 bool MsRegReadValueEx2W(UINT root, char *keyname, char *valuename, void **data, UINT *type, UINT *size, bool force32bit, bool force64bit);
\r
525 char *MsRegReadStr(UINT root, char *keyname, char *valuename);
\r
526 char *MsRegReadStrEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
527 char *MsRegReadStrEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
528 wchar_t *MsRegReadStrW(UINT root, char *keyname, char *valuename);
\r
529 wchar_t *MsRegReadStrExW(UINT root, char *keyname, char *valuename, bool force32bit);
\r
530 wchar_t *MsRegReadStrEx2W(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
532 UINT MsRegReadInt(UINT root, char *keyname, char *valuename);
\r
533 UINT MsRegReadIntEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
534 UINT MsRegReadIntEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
535 LIST *MsRegReadStrList(UINT root, char *keyname, char *valuename);
\r
536 LIST *MsRegReadStrListEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
537 LIST *MsRegReadStrListEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
539 BUF *MsRegReadBin(UINT root, char *keyname, char *valuename);
\r
540 BUF *MsRegReadBinEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
541 BUF *MsRegReadBinEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
543 bool MsRegNewKey(UINT root, char *keyname);
\r
544 bool MsRegNewKeyEx(UINT root, char *keyname, bool force32bit);
\r
545 bool MsRegNewKeyEx2(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
547 bool MsRegWriteValue(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size);
\r
548 bool MsRegWriteValueEx(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size, bool force32bit);
\r
549 bool MsRegWriteValueEx2(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size, bool force32bit, bool force64bit);
\r
550 bool MsRegWriteValueW(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size);
\r
551 bool MsRegWriteValueExW(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size, bool force32bit);
\r
552 bool MsRegWriteValueEx2W(UINT root, char *keyname, char *valuename, UINT type, void *data, UINT size, bool force32bit, bool force64bit);
\r
554 bool MsRegWriteStr(UINT root, char *keyname, char *valuename, char *str);
\r
555 bool MsRegWriteStrEx(UINT root, char *keyname, char *valuename, char *str, bool force32bit);
\r
556 bool MsRegWriteStrEx2(UINT root, char *keyname, char *valuename, char *str, bool force32bit, bool force64bit);
\r
557 bool MsRegWriteStrExpand(UINT root, char *keyname, char *valuename, char *str);
\r
558 bool MsRegWriteStrExpandEx(UINT root, char *keyname, char *valuename, char *str, bool force32bit);
\r
559 bool MsRegWriteStrExpandEx2(UINT root, char *keyname, char *valuename, char *str, bool force32bit, bool force64bit);
\r
560 bool MsRegWriteStrW(UINT root, char *keyname, char *valuename, wchar_t *str);
\r
561 bool MsRegWriteStrExW(UINT root, char *keyname, char *valuename, wchar_t *str, bool force32bit);
\r
562 bool MsRegWriteStrEx2W(UINT root, char *keyname, char *valuename, wchar_t *str, bool force32bit, bool force64bit);
\r
563 bool MsRegWriteStrExpandW(UINT root, char *keyname, char *valuename, wchar_t *str);
\r
564 bool MsRegWriteStrExpandExW(UINT root, char *keyname, char *valuename, wchar_t *str, bool force32bit);
\r
565 bool MsRegWriteStrExpandEx2W(UINT root, char *keyname, char *valuename, wchar_t *str, bool force32bit, bool force64bit);
\r
567 bool MsRegWriteInt(UINT root, char *keyname, char *valuename, UINT value);
\r
568 bool MsRegWriteIntEx(UINT root, char *keyname, char *valuename, UINT value, bool force32bit);
\r
569 bool MsRegWriteIntEx2(UINT root, char *keyname, char *valuename, UINT value, bool force32bit, bool force64bit);
\r
570 bool MsRegWriteBin(UINT root, char *keyname, char *valuename, void *data, UINT size);
\r
571 bool MsRegWriteBinEx(UINT root, char *keyname, char *valuename, void *data, UINT size, bool force32bit);
\r
572 bool MsRegWriteBinEx2(UINT root, char *keyname, char *valuename, void *data, UINT size, bool force32bit, bool force64bit);
\r
574 TOKEN_LIST *MsRegEnumKey(UINT root, char *keyname);
\r
575 TOKEN_LIST *MsRegEnumKeyEx(UINT root, char *keyname, bool force32bit);
\r
576 TOKEN_LIST *MsRegEnumKeyEx2(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
577 TOKEN_LIST *MsRegEnumValue(UINT root, char *keyname);
\r
578 TOKEN_LIST *MsRegEnumValueEx(UINT root, char *keyname, bool force32bit);
\r
579 TOKEN_LIST *MsRegEnumValueEx2(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
581 bool MsRegDeleteKey(UINT root, char *keyname);
\r
582 bool MsRegDeleteKeyEx(UINT root, char *keyname, bool force32bit);
\r
583 bool MsRegDeleteKeyEx2(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
584 bool MsRegDeleteValue(UINT root, char *keyname, char *valuename);
\r
585 bool MsRegDeleteValueEx(UINT root, char *keyname, char *valuename, bool force32bit);
\r
586 bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
\r
590 bool MsEnablePrivilege(char *name, bool enable);
\r
591 void *MsGetCurrentProcess();
\r
592 UINT MsGetCurrentProcessId();
\r
593 char *MsGetExeFileName();
\r
594 char *MsGetExeDirName();
\r
595 wchar_t *MsGetExeDirNameW();
\r
597 bool MsShutdown(bool reboot, bool force);
\r
598 bool MsShutdownEx(bool reboot, bool force, UINT time_limit, char *message);
\r
599 bool MsCheckLogon(wchar_t *username, char *password);
\r
600 bool MsIsPasswordEmpty(wchar_t *username);
\r
601 TOKEN_LIST *MsEnumNetworkAdapters(char *start_with_name, char *start_with_name_2);
\r
602 TOKEN_LIST *MsEnumNetworkAdaptersSen();
\r
603 bool MsGetSenDeiverFilename(char *name, UINT size, char *instance_name);
\r
604 bool MsMakeNewSenDriverFilename(char *name, UINT size);
\r
605 void MsGenerateSenDriverFilenameFromInt(char *name, UINT size, UINT n);
\r
606 TOKEN_LIST *MsEnumSenDriverFilenames();
\r
607 char *MsGetNetworkAdapterGuid(char *tag_name, char *instance_name);
\r
608 wchar_t *MsGetNetworkConnectionName(char *guid);
\r
609 char *MsGetNetworkConfigRegKeyNameFromGuid(char *guid);
\r
610 char *MsGetNetworkConfigRegKeyNameFromInstanceName(char *tag_name, char *instance_name);
\r
611 void MsSetNetworkConfig(char *tag_name, char *instance_name, char *friendly_name, bool show_icon);
\r
612 void MsInitNetworkConfig(char *tag_name, char *instance_name, char *connection_tag_name);
\r
614 char *MsGetSpecialDir(int id);
\r
615 wchar_t *MsGetSpecialDirW(int id);
\r
616 void MsGetSpecialDirs();
\r
617 bool MsCheckIsAdmin();
\r
618 void MsInitTempDir();
\r
619 void MsFreeTempDir();
\r
620 void MsGenLockFile(wchar_t *name, UINT size, wchar_t *temp_dir);
\r
621 void MsDeleteTempDir();
\r
622 void MsDeleteAllFile(char *dir);
\r
623 void MsDeleteAllFileW(wchar_t *dir);
\r
624 char *MsCreateTempFileName(char *name);
\r
625 char *MsCreateTempFileNameByExt(char *ext);
\r
626 IO *MsCreateTempFile(char *name);
\r
627 IO *MsCreateTempFileByExt(char *ext);
\r
629 bool MsShowNetworkConfiguration(HWND hWnd);
\r
631 bool MsInstallVLan(char *tag_name, char *connection_tag_name, char *instance_name);
\r
632 bool MsUpgradeVLan(char *tag_name, char *connection_tag_name, char *instance_name);
\r
633 bool MsEnableVLan(char *instance_name);
\r
634 bool MsDisableVLan(char *instance_name);
\r
635 bool MsUninstallVLan(char *instance_name);
\r
636 bool MsIsVLanEnabled(char *instance_name);
\r
637 void MsRestartVLan(char *instance_name);
\r
638 bool MsIsVLanExists(char *tag_name, char *instance_name);
\r
639 bool MsStartDriverInstall(char *instance_name, UCHAR *mac_address, char *sen_sys);
\r
640 void MsFinishDriverInstall(char *instance_name, char *sen_sys);
\r
641 void MsGetDriverPath(char *instance_name, wchar_t *src_inf, wchar_t *src_sys, wchar_t *dest_inf, wchar_t *dest_sys, char *sen_sys);
\r
642 void MsGetDriverPathA(char *instance_name, char *src_inf, char *src_sys, char *dest_inf, char *dest_sys, char *sen_sys);
\r
643 void MsGenMacAddress(UCHAR *mac);
\r
644 char *MsGetMacAddress(char *tag_name, char *instance_name);
\r
645 void MsSetMacAddress(char *tag_name, char *instance_name, char *mac_address);
\r
646 char *MsGetDriverVersion(char *tag_name, char *instance_name);
\r
647 char *MsGetDriverFileName(char *tag_name, char *instance_name);
\r
649 void MsInitGlobalNetworkConfig();
\r
650 void MsSetThreadPriorityHigh();
\r
651 void MsSetThreadPriorityLow();
\r
652 void MsSetThreadPriorityIdle();
\r
653 void MsSetThreadPriorityRealtime();
\r
654 void MsRestoreThreadPriority();
\r
655 char *MsGetLocalAppDataDir();
\r
656 char *MsGetCommonAppDataDir();
\r
657 char *MsGetWindowsDir();
\r
658 char *MsGetSystem32Dir();
\r
659 char *MsGetTempDir();
\r
660 char *MsGetWindowsDrive();
\r
661 char *MsGetProgramFilesDir();
\r
662 char *MsGetCommonStartMenuDir();
\r
663 char *MsGetCommonProgramsDir();
\r
664 char *MsGetCommonStartupDir();
\r
665 char *MsGetCommonAppDataDir();
\r
666 char *MsGetCommonDesktopDir();
\r
667 char *MsGetPersonalStartMenuDir();
\r
668 char *MsGetPersonalProgramsDir();
\r
669 char *MsGetPersonalStartupDir();
\r
670 char *MsGetPersonalAppDataDir();
\r
671 char *MsGetPersonalDesktopDir();
\r
672 char *MsGetMyDocumentsDir();
\r
673 char *MsGetMyTempDir();
\r
674 char *MsGetUserName();
\r
675 char *MsGetUserNameEx();
\r
676 char *MsGetWinTempDir();
\r
677 wchar_t *MsGetWindowsDirW();
\r
678 wchar_t *MsGetExeFileNameW();
\r
679 wchar_t *MsGetExeFileDirW();
\r
680 wchar_t *MsGetWindowDirW();
\r
681 wchar_t *MsGetSystem32DirW();
\r
682 wchar_t *MsGetTempDirW();
\r
683 wchar_t *MsGetWindowsDriveW();
\r
684 wchar_t *MsGetProgramFilesDirW();
\r
685 wchar_t *MsGetCommonStartMenuDirW();
\r
686 wchar_t *MsGetCommonProgramsDirW();
\r
687 wchar_t *MsGetCommonStartupDirW();
\r
688 wchar_t *MsGetCommonAppDataDirW();
\r
689 wchar_t *MsGetCommonDesktopDirW();
\r
690 wchar_t *MsGetPersonalStartMenuDirW();
\r
691 wchar_t *MsGetPersonalProgramsDirW();
\r
692 wchar_t *MsGetPersonalStartupDirW();
\r
693 wchar_t *MsGetPersonalAppDataDirW();
\r
694 wchar_t *MsGetPersonalDesktopDirW();
\r
695 wchar_t *MsGetMyDocumentsDirW();
\r
696 wchar_t *MsGetLocalAppDataDirW();
\r
697 wchar_t *MsGetMyTempDirW();
\r
698 wchar_t *MsGetUserNameW();
\r
699 wchar_t *MsGetUserNameExW();
\r
700 wchar_t *MsGetWinTempDirW();
\r
701 UINT MsGetProcessId();
\r
702 void MsTerminateProcess();
\r
703 bool MsIsServiceInstalled(char *name);
\r
704 bool MsInstallService(char *name, char *title, wchar_t *description, char *path);
\r
705 bool MsInstallServiceExW(char *name, wchar_t *title, wchar_t *description, wchar_t *path, UINT *error_code);
\r
706 bool MsInstallServiceW(char *name, wchar_t *title, wchar_t *description, wchar_t *path);
\r
707 bool MsUpdateServiceConfig(char *name);
\r
708 bool MsUninstallService(char *name);
\r
709 bool MsStartService(char *name);
\r
710 bool MsStartServiceEx(char *name, UINT *error_code);
\r
711 bool MsStopService(char *name);
\r
712 bool MsIsServiceRunning(char *name);
\r
713 bool MsIsTerminalServiceInstalled();
\r
714 bool MsIsUserSwitchingInstalled();
\r
715 bool MsIsTerminalServiceMultiUserInstalled();
\r
716 UINT MsGetCurrentTerminalSessionId();
\r
717 bool MsIsTerminalSessionActive(UINT session_id);
\r
718 bool MsIsCurrentTerminalSessionActive();
\r
719 bool MsIsCurrentDesktopAvailableForVnc();
\r
720 wchar_t *MsGetSessionUserName(UINT session_id);
\r
721 UINT MsService(char *name, SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop, UINT icon);
\r
722 void MsTestModeW(wchar_t *title, SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop);
\r
723 void MsTestMode(char *title, SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop);
\r
724 void MsServiceMode(SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop);
\r
725 void MsUserModeW(wchar_t *title, SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop, UINT icon);
\r
726 void MsUserMode(char *title, SERVICE_FUNCTION *start, SERVICE_FUNCTION *stop, UINT icon);
\r
727 bool MsIsUserMode();
\r
729 void MsStopUserModeFromService();
\r
730 char *MsGetPenCoreDllFileName();
\r
731 void MsPlaySound(char *name);
\r
732 void MsSetThreadSingleCpu();
\r
733 void MsWin9xTest();
\r
734 bool MsCheckVLanDeviceIdFromRootEnum(char *name);
\r
735 bool MsInstallVLan9x(char *instance_name);
\r
736 void MsUpdateCompatibleIDs(char *instance_name);
\r
737 LIST *MsGetProcessList();
\r
738 LIST *MsGetProcessList9x();
\r
739 LIST *MsGetProcessListNt();
\r
740 void MsFreeProcessList(LIST *o);
\r
741 void MsPrintProcessList(LIST *o);
\r
742 int MsCompareProcessList(void *p1, void *p2);
\r
743 MS_PROCESS *MsSearchProcessById(LIST *o, UINT id);
\r
744 void MsGetCurrentProcessExeName(char *name, UINT size);
\r
745 void MsGetCurrentProcessExeNameW(wchar_t *name, UINT size);
\r
746 bool MsKillProcess(UINT id);
\r
747 void MsKillOtherInstance();
\r
748 void MsKillOtherInstanceEx(char *exclude_svcname);
\r
749 bool MsGetShortPathNameA(char *long_path, char *short_path, UINT short_path_size);
\r
750 bool MsGetShortPathNameW(wchar_t *long_path, wchar_t *short_path, UINT short_path_size);
\r
751 void MsWriteCallingServiceManagerProcessId(char *svcname, UINT pid);
\r
752 UINT MsReadCallingServiceManagerProcessId(char *svcname, bool current_user);
\r
755 MS_ADAPTER_LIST *MsCreateAdapterListInner();
\r
756 MS_ADAPTER_LIST *MsCreateAdapterListInnerEx(bool no_info);
\r
757 void MsFreeAdapter(MS_ADAPTER *a);
\r
758 void MsFreeAdapterList(MS_ADAPTER_LIST *o);
\r
759 wchar_t *MsGetAdapterTypeStr(UINT type);
\r
760 wchar_t *MsGetAdapterStatusStr(UINT status);
\r
761 MS_ADAPTER *MsCloneAdapter(MS_ADAPTER *a);
\r
762 MS_ADAPTER_LIST *MsCloneAdapterList(MS_ADAPTER_LIST *o);
\r
763 void MsInitAdapterListModule();
\r
764 void MsFreeAdapterListModule();
\r
765 MS_ADAPTER_LIST *MsCreateAdapterList();
\r
766 MS_ADAPTER_LIST *MsCreateAdapterListEx(bool no_info);
\r
767 void MsGetAdapterTcpIpInformation(MS_ADAPTER *a);
\r
768 MS_ADAPTER *MsGetAdapter(char *title);
\r
770 void *MsLoadLibrary(char *name);
\r
771 void *MsLoadLibraryW(wchar_t *name);
\r
772 void *MsLoadLibraryAsDataFile(char *name);
\r
773 void *MsLoadLibraryAsDataFileW(wchar_t *name);
\r
775 void MsPrintTick();
\r
776 bool MsDisableIme();
\r
778 void MsGetTcpConfig(MS_TCP *tcp);
\r
779 void MsSetTcpConfig(MS_TCP *tcp);
\r
780 void MsSaveTcpConfigReg(MS_TCP *tcp);
\r
781 bool MsLoadTcpConfigReg(MS_TCP *tcp);
\r
782 bool MsIsTcpConfigSupported();
\r
783 void MsApplyTcpConfig();
\r
784 bool MsIsShouldShowTcpConfigApp();
\r
785 void MsDeleteTcpConfigReg();
\r
787 UINT MsGetConsoleWidth();
\r
788 UINT MsSetConsoleWidth(UINT size);
\r
789 NO_WARNING *MsInitNoWarning();
\r
790 void MsFreeNoWarning(NO_WARNING *nw);
\r
791 void MsNoWarningThreadProc(THREAD *thread, void *param);
\r
792 char *MsNoWarningSoundInit();
\r
793 void MsNoWarningSoundFree(char *s);
\r
794 bool MsCloseWarningWindow(UINT thread_id);
\r
795 LIST *MsEnumChildWindows(LIST *o, HWND hWnd);
\r
796 void MsAddWindowToList(LIST *o, HWND hWnd);
\r
797 UINT MsGetThreadLocale();
\r
798 LIST *NewWindowList();
\r
799 int CmpWindowList(void *p1, void *p2);
\r
800 void AddWindow(LIST *o, HWND hWnd);
\r
801 void FreeWindowList(LIST *o);
\r
802 LIST *EnumAllChildWindow(HWND hWnd);
\r
803 LIST *EnumAllChildWindowEx(HWND hWnd, bool no_recursion, bool include_ipcontrol, bool no_self);
\r
804 LIST *EnumAllWindow();
\r
805 LIST *EnumAllWindowEx(bool no_recursion, bool include_ipcontrol);
\r
806 LIST *EnumAllTopWindow();
\r
808 bool MsExecDriverInstaller(char *arg);
\r
810 bool MsIsWin2000();
\r
811 bool MsIsWin2000OrGreater();
\r
812 void MsRegistWindowsFirewall(char *title);
\r
813 void MsRegistWindowsFirewallEx(char *title, char *exe);
\r
814 void MsRegistWindowsFirewallEx2(char *title, char *exe);
\r
815 bool MsIs64BitWindows();
\r
818 void *MsDisableWow64FileSystemRedirection();
\r
819 void MsRestoreWow64FileSystemRedirection(void *p);
\r
820 void MsSetWow64FileSystemRedirectionEnable(bool enable);
\r
822 bool MsCheckFileDigitalSignature(HWND hWnd, char *name, bool *danger);
\r
823 bool MsCheckFileDigitalSignatureW(HWND hWnd, wchar_t *name, bool *danger);
\r
825 bool MsGetProcessExeName(char *path, UINT size, UINT id);
\r
826 bool MsGetProcessExeNameW(wchar_t *path, UINT size, UINT id);
\r
827 bool MsGetWindowOwnerProcessExeName(char *path, UINT size, HWND hWnd);
\r
828 bool MsGetWindowOwnerProcessExeNameW(wchar_t *path, UINT size, HWND hWnd);
\r
830 void *MsRunAsUserEx(char *filename, char *arg, bool hide);
\r
831 void *MsRunAsUserExW(wchar_t *filename, wchar_t *arg, bool hide);
\r
832 void *MsRunAsUserExInner(char *filename, char *arg, bool hide);
\r
833 void *MsRunAsUserExInnerW(wchar_t *filename, wchar_t *arg, bool hide);
\r
835 UINT MsGetCursorPosHash();
\r
836 bool MsIsProcessExists(char *exename);
\r
837 bool MsIsProcessExistsW(wchar_t *exename);
\r
839 void MsGetComputerName(char *name, UINT size);
\r
840 void MsNoSleepThread(THREAD *thread, void *param);
\r
841 void MsNoSleepThreadVista(THREAD *thread, void *param);
\r
842 UINT64 MsGetScreenSaverTimeout();
\r
843 void *MsNoSleepStart(bool no_screensaver);
\r
844 void MsNoSleepEnd(void *p);
\r
845 bool MsIsRemoteDesktopAvailable();
\r
846 bool MsIsRemoteDesktopCanEnableByRegistory();
\r
847 bool MsIsRemoteDesktopEnabled();
\r
848 bool MsEnableRemoteDesktop();
\r
850 void MsSetFileToHidden(char *name);
\r
851 void MsSetFileToHiddenW(wchar_t *name);
\r
852 bool MsGetFileVersion(char *name, UINT *v1, UINT *v2, UINT *v3, UINT *v4);
\r
853 bool MsGetFileVersionW(wchar_t *name, UINT *v1, UINT *v2, UINT *v3, UINT *v4);
\r
855 bool MsExtractCabinetFileFromExe(char *exe, char *cab);
\r
856 bool MsExtractCabinetFileFromExeW(wchar_t *exe, wchar_t *cab);
\r
857 BUF *MsExtractResourceFromExe(char *exe, char *type, char *name);
\r
858 BUF *MsExtractResourceFromExeW(wchar_t *exe, char *type, char *name);
\r
859 bool MsExtractCab(char *cab_name, char *dest_dir_name);
\r
860 bool MsExtractCabW(wchar_t *cab_name, wchar_t *dest_dir_name);
\r
861 bool MsGetCabarcExeFilename(char *name, UINT size);
\r
862 bool MsGetCabarcExeFilenameW(wchar_t *name, UINT size);
\r
863 bool MsExtractCabFromMsi(char *msi, char *cab);
\r
864 bool MsExtractCabFromMsiW(wchar_t *msi, wchar_t *cab);
\r
865 bool MsIsDirectory(char *name);
\r
866 bool MsIsDirectoryW(wchar_t *name);
\r
867 bool MsUniIsDirectory(wchar_t *name);
\r
868 bool MsUniFileDelete(wchar_t *name);
\r
869 bool MsUniDirectoryDelete(wchar_t *name);
\r
870 bool MsUniMakeDir(wchar_t *name);
\r
871 void MsUniMakeDirEx(wchar_t *name);
\r
872 void MsMakeDirEx(char *name);
\r
873 bool MsMakeDir(char *name);
\r
874 bool MsDirectoryDelete(char *name);
\r
875 bool MsFileDelete(char *name);
\r
876 bool MsExecute(char *exe, char *arg);
\r
877 bool MsExecuteW(wchar_t *exe, wchar_t *arg);
\r
878 bool MsExecuteEx(char *exe, char *arg, void **process_handle);
\r
879 bool MsExecuteExW(wchar_t *exe, wchar_t *arg, void **process_handle);
\r
880 UINT MsWaitProcessExit(void *process_handle);
\r
881 bool MsIsFileLocked(char *name);
\r
882 bool MsIsFileLockedW(wchar_t *name);
\r
883 bool MsIsLocalDrive(char *name);
\r
884 bool MsIsLocalDriveW(wchar_t *name);
\r
885 void MsUpdateSystem();
\r
886 bool MsGetPhysicalMacAddressFromNetbios(void *address);
\r
887 bool MsGetPhysicalMacAddressFromApi(void *address);
\r
888 bool MsGetPhysicalMacAddress(void *address);
\r
889 bool MsIsUseWelcomeLogin();
\r
890 UINT64 MsGetHiResCounter();
\r
891 double MsGetHiResTimeSpan(UINT64 diff);
\r
892 UINT64 MsGetHiResTimeSpanUSec(UINT64 diff);
\r
893 BUF *MsRegSubkeysToBuf(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
894 void MsBufToRegSubkeys(UINT root, char *keyname, BUF *b, bool overwrite, bool force32bit, bool force64bit);
\r
895 void MsRegDeleteSubkeys(UINT root, char *keyname, bool force32bit, bool force64bit);
\r
896 void MsRestartMMCSS();
\r
897 bool MsIsMMCSSNetworkThrottlingEnabled();
\r
898 void MsSetMMCSSNetworkThrottlingEnable(bool enable);
\r
899 void MsSetShutdownParameters(UINT level, UINT flag);
\r
900 void MsChangeIconOnTrayEx2(void *icon, wchar_t *tooltip, wchar_t *info_title, wchar_t *info, UINT info_flags);
\r
901 bool MsIsTrayInited();
\r
902 UINT MsGetClipboardOwnerProcessId();
\r
903 void MsDeleteClipboard();
\r
904 void *MsInitEventLog(wchar_t *src_name);
\r
905 void MsFreeEventLog(void *p);
\r
906 bool MsWriteEventLog(void *p, UINT type, wchar_t *str);
\r
907 bool MsIsWinXPOrWinVista();
\r
908 bool MsGetFileInformation(void *h, void *info);
\r
909 void MsSetErrorModeToSilent();
\r
910 void MsSetEnableMinidump(bool enabled);
\r
911 void MsWriteMinidump(wchar_t *filename, void *ex);
\r
916 LONG CALLBACK MsExceptionHandler(struct _EXCEPTION_POINTERS *ExceptionInfo);
\r
917 HKEY MsGetRootKeyFromInt(UINT root);
\r
918 NT_API *MsLoadNtApiFunctions();
\r
919 void MsFreeNtApiFunctions(NT_API *nt);
\r
920 void MsDestroyDevInfo(HDEVINFO info);
\r
921 HDEVINFO MsGetDevInfoFromDeviceId(SP_DEVINFO_DATA *dev_info_data, char *device_id);
\r
922 bool MsStartDevice(HDEVINFO info, SP_DEVINFO_DATA *dev_info_data);
\r
923 bool MsStopDevice(HDEVINFO info, SP_DEVINFO_DATA *dev_info_data);
\r
924 bool MsDeleteDevice(HDEVINFO info, SP_DEVINFO_DATA *dev_info_data);
\r
925 bool MsIsDeviceRunning(HDEVINFO info, SP_DEVINFO_DATA *dev_info_data);
\r
926 void CALLBACK MsServiceDispatcher(DWORD argc, LPTSTR *argv);
\r
927 void CALLBACK MsServiceHandler(DWORD opcode);
\r
928 void MsServiceStoperThread(THREAD *t, void *p);
\r
929 void MsServiceStoperMainThread(THREAD *t, void *p);
\r
930 void MsServiceStarterMainThread(THREAD *t, void *p);
\r
931 LRESULT CALLBACK MsUserModeWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
\r
932 void MsShowIconOnTray(HWND hWnd, HICON icon, wchar_t *tooltip, UINT msg);
\r
933 void MsRestoreIconOnTray();
\r
934 void MsChangeIconOnTray(HICON icon, wchar_t *tooltip);
\r
935 void MsChangeIconOnTrayEx(HICON icon, wchar_t *tooltip, wchar_t *info_title, wchar_t *info, UINT info_flags);
\r
936 void MsHideIconOnTray();
\r
937 void MsUserModeTrayMenu(HWND hWnd);
\r
938 bool MsAppendMenu(HMENU hMenu, UINT flags, UINT_PTR id, wchar_t *str);
\r
939 bool MsInsertMenu(HMENU hMenu, UINT pos, UINT flags, UINT_PTR id_new_item, wchar_t *lp_new_item);
\r
940 bool CALLBACK MsEnumChildWindowProc(HWND hWnd, LPARAM lParam);
\r
941 BOOL CALLBACK EnumTopWindowProc(HWND hWnd, LPARAM lParam);
\r
942 bool CALLBACK MsEnumThreadWindowProc(HWND hWnd, LPARAM lParam);
\r
943 HANDLE MsCreateUserToken();
\r
944 SID *MsGetSidFromAccountName(char *name);
\r
945 void MsFreeSid(SID *sid);
\r
947 #endif // MICROSOFT_C
\r
949 #endif // MICROSOFT_H
\r