* tar xzf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
[lab.git] / utvpn / utvpn-unix-v101-7101-public / src / Mayaqua / Microsoft.h
1 // SoftEther UT-VPN SourceCode\r
2 // \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
7 // \r
8 // http://utvpn.tsukuba.ac.jp/\r
9 // \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
13 // \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
18 // \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
22 // \r
23 // このファイルは GPL バージョン 2 ライセンスで公開されています。\r
24 // 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布\r
25 // することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示\r
26 // を除去することはできません。改変した著作物を配布する場合は、改変実施者の\r
27 // 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。\r
28 // \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
32 // ホストされています。\r
33 // 本プログラムの配布者は、本プログラムを、業としての利用以外のため、\r
34 // および、試験または研究のために利用が行われることを想定して配布\r
35 // しています。\r
36 // SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に\r
37 // あります。\r
38 // 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード\r
39 // の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して\r
40 // いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して\r
41 // ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース\r
42 // に組み込みさせていただきます。\r
43 // \r
44 // GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する\r
45 // 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。\r
46 // \r
47 // 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社\r
48 // (SoftEther Corporation) およびその他の著作権保持者が保有しています。\r
49 // ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの\r
50 // 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意\r
51 // ください。\r
52 // \r
53 // お願い: どのような通信ソフトウェアにも通常は必ず未発見の\r
54 // セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、\r
55 // UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの\r
56 // 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社\r
57 // および脆弱性情報の届出を受け付ける公的機関まで通報いただき、\r
58 // 公益保護にご協力いただきますようお願い申し上げます。\r
59 // \r
60 // ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を\r
61 // 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客\r
62 // を保護するための努力を行います。\r
63 // \r
64 // ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/\r
65 // 日本国内の脆弱性情報届出受付公的機関:\r
66 //         独立行政法人 情報処理推進機構\r
67 //         http://www.ipa.go.jp/security/vuln/report/\r
68 // \r
69 // 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。\r
70 // 連絡先: http://www.softether.co.jp/jp/contact/\r
71 \r
72 // -----------------------------------------------\r
73 // [ChangeLog]\r
74 // 2010.05.20\r
75 //  新規リリース by SoftEther\r
76 // -----------------------------------------------\r
77 \r
78 // Microsoft.h\r
79 // Microsoft.c のヘッダ\r
80 \r
81 #ifdef  OS_WIN32\r
82 \r
83 // Windows 用の型が windows.h をインクルードしていなくても使えるようにする\r
84 #ifndef _WINDEF_\r
85 \r
86 typedef void *HWND;\r
87 \r
88 #endif  // _WINDEF_\r
89 \r
90 #ifndef MICROSOFT_H\r
91 #define MICROSOFT_H\r
92 \r
93 \r
94 // イベントログ定数\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
98 \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
102 \r
103 \r
104 // TCP/IP レジストリ値\r
105 #define TCP_MAX_NUM_CONNECTIONS                         16777214\r
106 \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
110 \r
111 // 定数\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
132 \r
133 // サービスがフリーズした場合の自殺までの時間\r
134 #define SVC_SELFKILL_TIMEOUT            (5 * 60 * 1000)\r
135 \r
136 // Win32 版仮想 LAN カードのデバイスドライバの名称 (先頭部分)\r
137 #define VLAN_ADAPTER_NAME                       "UT-VPN Client Adapter"\r
138 \r
139 // Win32 版仮想 LAN カードのデバイスドライバの名称 (フルネーム)\r
140 #define VLAN_ADAPTER_NAME_TAG           "UT-VPN Client Adapter - %s"\r
141 \r
142 // Win32 版仮想 LAN カードの [ネットワーク接続] における表示名 (フルネーム)\r
143 #define VLAN_CONNECTION_NAME            "%s - UT-VPN Client"\r
144 \r
145 \r
146 // サービス時のコマンドライン書式\r
147 #define SVC_RUN_COMMANDLINE                     L"\"%s\" /service"\r
148 \r
149 // モード値\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
167 \r
168 \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
171 \r
172 #define VISTA_MMCSS_KEYNAME                     "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks"\r
173 #define VISTA_MMCSS_FILENAME            "mmcss_backup.dat"\r
174 \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
178 \r
179 #define SVC_USERMODE_SETTING_KEY        "Software\\SoftEther Corporation\\UT-VPN\\UserMode Settings"\r
180 #define SVC_HIDETRAY_REG_VALUE          "HideTray_%S"\r
181 \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
184 \r
185 #define MMCSS_PROFILE_KEYNAME           "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile"\r
186 \r
187 // その他の定数\r
188 #define MS_REG_TCP_SETTING_KEY          "Software\\SoftEther Corporation\\Network Settings"\r
189 \r
190 \r
191 \r
192 // ドライバ関係の定数\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
205 \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
211 \r
212 #define DRIVER_DEVICE_ID_TAG            "SenAdapter_%s"\r
213 \r
214 \r
215 #if             (defined(MICROSOFT_C) || defined(NETWORK_C)) && (defined(OS_WIN32))\r
216 \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
228 \r
229 // Win32 ネットワーク関係の API 関数へのポインタ\r
230 typedef struct NETWORK_WIN32_FUNCTIONS\r
231 {\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
250 #endif\r
251 \r
252 \r
253 #ifdef  MICROSOFT_C\r
254 // 内部用構造体\r
255 typedef struct MS\r
256 {\r
257         HINSTANCE hInst;\r
258         HINSTANCE hKernel32;\r
259         bool IsNt;\r
260         bool IsAdmin;\r
261         struct NT_API *nt;\r
262         HANDLE hCurrentProcess;\r
263         UINT CurrentProcessId;\r
264         bool MiniDumpEnabled;\r
265         char *ExeFileName;\r
266         char *ExeFileDir;\r
267         char *WindowsDir;\r
268         char *System32Dir;\r
269         char *TempDir;\r
270         char *WinTempDir;\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
285         char *MyTempDir;\r
286         char *UserName;\r
287         char *UserNameEx;\r
288         wchar_t *ExeFileNameW;\r
289         wchar_t *ExeFileDirW;\r
290         wchar_t *WindowsDirW;\r
291         wchar_t *System32DirW;\r
292         wchar_t *TempDirW;\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
312         IO *LockFile;\r
313 } MS;\r
314 \r
315 // Windows NT 用 API\r
316 typedef struct NT_API\r
317 {\r
318         HINSTANCE hAdvapi32;\r
319         HINSTANCE hShell32;\r
320         HINSTANCE hNewDev;\r
321         HINSTANCE hSetupApi;\r
322         HINSTANCE hWtsApi32;\r
323         HINSTANCE hPsApi;\r
324         HINSTANCE hKernel32;\r
325         HINSTANCE hSecur32;\r
326         HINSTANCE hUser32;\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
386 } NT_API;\r
387 \r
388 typedef struct MS_EVENTLOG\r
389 {\r
390         HANDLE hEventLog;\r
391 } MS_EVENTLOG;\r
392 \r
393 extern NETWORK_WIN32_FUNCTIONS *w32net;\r
394 \r
395 #endif  // MICROSOFT_C\r
396 \r
397 // 警告を出さないようにするための構造体\r
398 typedef struct NO_WARNING\r
399 {\r
400         DWORD ThreadId;\r
401         THREAD *NoWarningThread;\r
402         EVENT *HaltEvent;\r
403         volatile bool Halt;\r
404         wchar_t *SoundFileName;\r
405 } NO_WARNING;\r
406 \r
407 // ルートキーの ID\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
412 \r
413 // サービス関数\r
414 typedef void (SERVICE_FUNCTION)();\r
415 \r
416 // プロセスリスト項目\r
417 typedef struct MS_PROCESS\r
418 {\r
419         char ExeFilename[MAX_PATH];             // EXE ファイル名\r
420         wchar_t ExeFilenameW[MAX_PATH]; // EXE ファイル名 (Unicode)\r
421         UINT ProcessId;                                 // プロセス ID\r
422 } MS_PROCESS;\r
423 \r
424 #define MAX_MS_ADAPTER_IP_ADDRESS       64\r
425 \r
426 // ネットワークアダプタ\r
427 typedef struct MS_ADAPTER\r
428 {\r
429         char Title[MAX_PATH];                   // 表示名\r
430         UINT Index;                                             // インデックス\r
431         UINT Type;                                              // 種類\r
432         UINT Status;                                    // ステータス\r
433         UINT Mtu;                                               // MTU\r
434         UINT Speed;                                             // 速度\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
457 } MS_ADAPTER;\r
458 \r
459 // ネットワークアダプタリスト\r
460 typedef struct MS_ADAPTER_LIST\r
461 {\r
462         UINT Num;                                               // 個数\r
463         MS_ADAPTER **Adapters;                  // 内容\r
464 } MS_ADAPTER_LIST;\r
465 \r
466 // TCP 設定\r
467 typedef struct MS_TCP\r
468 {\r
469         UINT RecvWindowSize;                    // 受信ウインドウサイズ\r
470         UINT SendWindowSize;                    // 送信ウインドウサイズ\r
471 } MS_TCP;\r
472 \r
473 // スリープ防止\r
474 typedef struct MS_NOSLEEP\r
475 {\r
476         THREAD *Thread;                                 // スレッド\r
477         EVENT *HaltEvent;                               // 停止イベント\r
478         volatile bool Halt;                             // 停止フラグ\r
479         bool NoScreenSaver;                             // スクリーンセーバーも防止\r
480 \r
481         // 以下 Windows Vista 用\r
482         wchar_t ScreenSaveActive[MAX_PATH];\r
483         wchar_t SCRNSAVE_EXE[MAX_PATH];\r
484 } MS_NOSLEEP;\r
485 \r
486 // 子ウインドウ列挙\r
487 typedef struct ENUM_CHILD_WINDOW_PARAM\r
488 {\r
489         LIST *o;\r
490         bool no_recursion;\r
491         bool include_ipcontrol;\r
492 } ENUM_CHILD_WINDOW_PARAM;\r
493 \r
494 // 関数プロトタイプ\r
495 void MsInit();\r
496 void MsFree();\r
497 char *MsCutExeNameFromCommandLine(char *str);\r
498 wchar_t *MsCutExeNameFromUniCommandLine(wchar_t *str);\r
499 \r
500 DWORD MsRegAccessMaskFor64Bit(bool force32bit);\r
501 DWORD MsRegAccessMaskFor64BitEx(bool force32bit, bool force64bit);\r
502 \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
506 \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
510 \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
517 \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
524 \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
531 \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
538 \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
542 \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
546 \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
553 \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
566 \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
573 \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
580 \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
587 \r
588 bool MsIsNt();\r
589 bool MsIsAdmin();\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
596 \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
613 \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
628 \r
629 bool MsShowNetworkConfiguration(HWND hWnd);\r
630 \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
648 void MsTest();\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
728 void MsTestOnly();\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
753 \r
754 \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
769 \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
774 \r
775 void MsPrintTick();\r
776 bool MsDisableIme();\r
777 \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
786 \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
807 \r
808 bool MsExecDriverInstaller(char *arg);\r
809 bool MsIsVista();\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
816 bool MsIsX64();\r
817 bool MsIsIA64();\r
818 void *MsDisableWow64FileSystemRedirection();\r
819 void MsRestoreWow64FileSystemRedirection(void *p);\r
820 void MsSetWow64FileSystemRedirectionEnable(bool enable);\r
821 \r
822 bool MsCheckFileDigitalSignature(HWND hWnd, char *name, bool *danger);\r
823 bool MsCheckFileDigitalSignatureW(HWND hWnd, wchar_t *name, bool *danger);\r
824 \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
829 \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
834 \r
835 UINT MsGetCursorPosHash();\r
836 bool MsIsProcessExists(char *exename);\r
837 bool MsIsProcessExistsW(wchar_t *exename);\r
838 \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
849 \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
854 \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
912 \r
913 // 内部関数\r
914 #ifdef  MICROSOFT_C\r
915 \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
946 \r
947 #endif  // MICROSOFT_C\r
948 \r
949 #endif  // MICROSOFT_H\r
950 \r
951 #endif  // OS_WIN32\r
952 \r