annotate win32/winsvc.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1 /***********************************************************************\
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2 * winsvc.d *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
3 * *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
4 * Windows API header module *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
5 * *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
6 * Translated from MinGW Windows headers *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
7 * by Stewart Gordon *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
8 * *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
9 * Placed into public domain *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
10 \***********************************************************************/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
11 module win32.winsvc;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
12 pragma(lib, "advapi32.lib");
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
13
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
14 private import win32.w32api, win32.windef;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
15
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
16 static assert (_WIN32_WINNT_ONLY,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
17 "win32.winsvc is available only if version WindowsNTonly, WindowsXP, "
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
18 "Windows2003 or WindowsVista is set");
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
19
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
20
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
21 // FIXME: check Windows version support
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
22
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
23 const TCHAR[]
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
24 SERVICES_ACTIVE_DATABASE = "ServicesActive",
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
25 SERVICES_FAILED_DATABASE = "ServicesFailed";
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
26
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
27 const TCHAR SC_GROUP_IDENTIFIER = '+';
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
28
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
29 const DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
30 SC_MANAGER_ALL_ACCESS = 0xf003f,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
31 SC_MANAGER_CONNECT = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
32 SC_MANAGER_CREATE_SERVICE = 2,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
33 SC_MANAGER_ENUMERATE_SERVICE = 4,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
34 SC_MANAGER_LOCK = 8,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
35 SC_MANAGER_QUERY_LOCK_STATUS = 16,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
36 SC_MANAGER_MODIFY_BOOT_CONFIG = 32;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
37
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
38 const DWORD SERVICE_NO_CHANGE = 0xffffffff;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
39
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
40 enum : DWORD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
41 SERVICE_STOPPED = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
42 SERVICE_START_PENDING,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
43 SERVICE_STOP_PENDING,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
44 SERVICE_RUNNING,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
45 SERVICE_CONTINUE_PENDING,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
46 SERVICE_PAUSE_PENDING,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
47 SERVICE_PAUSED // = 7
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
48 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
49
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
50 const DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
51 SERVICE_ACCEPT_STOP = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
52 SERVICE_ACCEPT_PAUSE_CONTINUE = 2,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
53 SERVICE_ACCEPT_SHUTDOWN = 4,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
54 SERVICE_ACCEPT_PARAMCHANGE = 8,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
55 SERVICE_ACCEPT_NETBINDCHANGE = 16,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
56 SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
57 SERVICE_ACCEPT_POWEREVENT = 64,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
58 SERVICE_ACCEPT_SESSIONCHANGE = 128;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
59
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
60 enum : DWORD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
61 SERVICE_CONTROL_STOP = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
62 SERVICE_CONTROL_PAUSE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
63 SERVICE_CONTROL_CONTINUE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
64 SERVICE_CONTROL_INTERROGATE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
65 SERVICE_CONTROL_SHUTDOWN,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
66 SERVICE_CONTROL_PARAMCHANGE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
67 SERVICE_CONTROL_NETBINDADD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
68 SERVICE_CONTROL_NETBINDREMOVE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
69 SERVICE_CONTROL_NETBINDENABLE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
70 SERVICE_CONTROL_NETBINDDISABLE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
71 SERVICE_CONTROL_DEVICEEVENT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
72 SERVICE_CONTROL_HARDWAREPROFILECHANGE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
73 SERVICE_CONTROL_POWEREVENT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
74 SERVICE_CONTROL_SESSIONCHANGE, // = 14
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
75 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
76
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
77 enum : DWORD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
78 SERVICE_ACTIVE = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
79 SERVICE_INACTIVE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
80 SERVICE_STATE_ALL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
81 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
82
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
83 const DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
84 SERVICE_QUERY_CONFIG = 0x0001,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
85 SERVICE_CHANGE_CONFIG = 0x0002,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
86 SERVICE_QUERY_STATUS = 0x0004,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
87 SERVICE_ENUMERATE_DEPENDENTS = 0x0008,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
88 SERVICE_START = 0x0010,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
89 SERVICE_STOP = 0x0020,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
90 SERVICE_PAUSE_CONTINUE = 0x0040,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
91 SERVICE_INTERROGATE = 0x0080,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
92 SERVICE_USER_DEFINED_CONTROL = 0x0100,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
93 SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
94
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
95 // This is not documented on the MSDN site
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
96 const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
97
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
98 enum : DWORD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
99 SERVICE_CONFIG_DESCRIPTION = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
100 SERVICE_CONFIG_FAILURE_ACTIONS,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
101 SERVICE_CONFIG_DELAYED_AUTO_START_INFO,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
102 SERVICE_CONFIG_FAILURE_ACTIONS_FLAG,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
103 SERVICE_CONFIG_SERVICE_SID_INFO,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
104 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
105 SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
106 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
107
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
108 struct SERVICE_STATUS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
109 DWORD dwServiceType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
110 DWORD dwCurrentState;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
111 DWORD dwControlsAccepted;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
112 DWORD dwWin32ExitCode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
113 DWORD dwServiceSpecificExitCode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
114 DWORD dwCheckPoint;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
115 DWORD dwWaitHint;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
116 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
117 alias SERVICE_STATUS* LPSERVICE_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
118
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
119 struct ENUM_SERVICE_STATUSA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
120 LPSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
121 LPSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
122 SERVICE_STATUS ServiceStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
123 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
124 alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
125
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
126 struct ENUM_SERVICE_STATUSW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
127 LPWSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
128 LPWSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
129 SERVICE_STATUS ServiceStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
130 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
131 alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
132
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
133 struct QUERY_SERVICE_CONFIGA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
134 DWORD dwServiceType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
135 DWORD dwStartType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
136 DWORD dwErrorControl;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
137 LPSTR lpBinaryPathName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
138 LPSTR lpLoadOrderGroup;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
139 DWORD dwTagId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
140 LPSTR lpDependencies;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
141 LPSTR lpServiceStartName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
142 LPSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
143 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
144 alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
145
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
146 struct QUERY_SERVICE_CONFIGW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
147 DWORD dwServiceType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
148 DWORD dwStartType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
149 DWORD dwErrorControl;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
150 LPWSTR lpBinaryPathName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
151 LPWSTR lpLoadOrderGroup;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
152 DWORD dwTagId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
153 LPWSTR lpDependencies;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
154 LPWSTR lpServiceStartName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
155 LPWSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
156 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
157 alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
158
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
159 struct QUERY_SERVICE_LOCK_STATUSA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
160 DWORD fIsLocked;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
161 LPSTR lpLockOwner;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
162 DWORD dwLockDuration;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
163 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
164 alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
165
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
166 struct QUERY_SERVICE_LOCK_STATUSW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
167 DWORD fIsLocked;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
168 LPWSTR lpLockOwner;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
169 DWORD dwLockDuration;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
170 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
171 alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
172
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
173 extern (Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
174 alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
175 alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
176 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
177
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
178 struct SERVICE_TABLE_ENTRYA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
179 LPSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
180 LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
181 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
182 alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
183
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
184 struct SERVICE_TABLE_ENTRYW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
185 LPWSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
186 LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
187 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
188 alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
189
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
190 alias HANDLE SC_HANDLE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
191 alias HANDLE* LPSC_HANDLE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
192 alias void* SC_LOCK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
193 alias DWORD SERVICE_STATUS_HANDLE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
194
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
195 extern (Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
196 alias void function(DWORD) LPHANDLER_FUNCTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
197 alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
198 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
199
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
200 static if (_WIN32_WINNT >= 0x500) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
201 struct SERVICE_STATUS_PROCESS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
202 DWORD dwServiceType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
203 DWORD dwCurrentState;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
204 DWORD dwControlsAccepted;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
205 DWORD dwWin32ExitCode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
206 DWORD dwServiceSpecificExitCode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
207 DWORD dwCheckPoint;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
208 DWORD dwWaitHint;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
209 DWORD dwProcessId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
210 DWORD dwServiceFlags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
211 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
212 alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
213
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
214 enum SC_STATUS_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
215 SC_STATUS_PROCESS_INFO = 0
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
216 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
217
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
218 enum SC_ENUM_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
219 SC_ENUM_PROCESS_INFO = 0
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
220 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
221
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
222 struct ENUM_SERVICE_STATUS_PROCESSA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
223 LPSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
224 LPSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
225 SERVICE_STATUS_PROCESS ServiceStatusProcess;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
226 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
227 alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
228
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
229 struct ENUM_SERVICE_STATUS_PROCESSW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
230 LPWSTR lpServiceName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
231 LPWSTR lpDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
232 SERVICE_STATUS_PROCESS ServiceStatusProcess;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
233 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
234 alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
235
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
236 struct SERVICE_DESCRIPTIONA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
237 LPSTR lpDescription;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
238 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
239 alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
240
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
241 struct SERVICE_DESCRIPTIONW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
242 LPWSTR lpDescription;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
243 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
244 alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
245
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
246 enum SC_ACTION_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
247 SC_ACTION_NONE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
248 SC_ACTION_RESTART,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
249 SC_ACTION_REBOOT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
250 SC_ACTION_RUN_COMMAND
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
251 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
252
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
253 struct SC_ACTION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
254 SC_ACTION_TYPE Type;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
255 DWORD Delay;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
256 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
257 alias SC_ACTION* LPSC_ACTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
258
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
259 struct SERVICE_FAILURE_ACTIONSA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
260 DWORD dwResetPeriod;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
261 LPSTR lpRebootMsg;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
262 LPSTR lpCommand;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
263 DWORD cActions;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
264 SC_ACTION* lpsaActions;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
265 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
266 alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
267
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
268 struct SERVICE_FAILURE_ACTIONSW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
269 DWORD dwResetPeriod;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
270 LPWSTR lpRebootMsg;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
271 LPWSTR lpCommand;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
272 DWORD cActions;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
273 SC_ACTION* lpsaActions;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
274 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
275 alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
276 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
277
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
278 extern (Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
279 BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
280 LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
281 BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
282 LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
283 BOOL CloseServiceHandle(SC_HANDLE);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
284 BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
285 SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
286 DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
287 SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
288 DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
289 BOOL DeleteService(SC_HANDLE);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
290 BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
291 DWORD, PDWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
292 BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
293 DWORD, PDWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
294 BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
295 DWORD, PDWORD, PDWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
296 BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
297 DWORD, PDWORD, PDWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
298 BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
299 BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
300 BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
301 BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
302 SC_LOCK LockServiceDatabase(SC_HANDLE);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
303 BOOL NotifyBootConfigStatus(BOOL);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
304 SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
305 SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
306 SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
307 SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
308 BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
309 PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
310 BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
311 PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
312 BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
313 DWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
314 BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
315 DWORD, PDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
316 BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
317 PSECURITY_DESCRIPTOR, DWORD, LPDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
318 BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
319 SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
320 LPHANDLER_FUNCTION);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
321 SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
322 LPHANDLER_FUNCTION);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
323 BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
324 PSECURITY_DESCRIPTOR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
325 BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
326 BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
327 BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
328 BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
329 BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
330 BOOL UnlockServiceDatabase(SC_LOCK);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
331
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
332 static if (_WIN32_WINNT >= 0x500) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
333 BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
334 DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
335 BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
336 DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
337 BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
338 BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
339 BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
340 LPDWORD);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
341 SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
342 LPHANDLER_FUNCTION_EX, LPVOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
343 SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
344 LPHANDLER_FUNCTION_EX, LPVOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
345 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
346
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
347 static if (_WIN32_WINNT >= 0x501) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
348 BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
349 BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
350 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
351 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
352
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
353 version (Unicode) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
354 alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
355 alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
356 alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
357 alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
358 alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
359 alias ChangeServiceConfigW ChangeServiceConfig;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
360 alias CreateServiceW CreateService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
361 alias EnumDependentServicesW EnumDependentServices;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
362 alias EnumServicesStatusW EnumServicesStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
363 alias GetServiceDisplayNameW GetServiceDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
364 alias GetServiceKeyNameW GetServiceKeyName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
365 alias OpenSCManagerW OpenSCManager;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
366 alias OpenServiceW OpenService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
367 alias QueryServiceConfigW QueryServiceConfig;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
368 alias QueryServiceLockStatusW QueryServiceLockStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
369 alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
370 alias StartServiceW StartService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
371 alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
372
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
373 static if (_WIN32_WINNT >= 0x500) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
374 alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
375 alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
376 alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
377 alias EnumServicesStatusExW EnumServicesStatusEx;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
378 alias QueryServiceConfig2W QueryServiceConfig2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
379 alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
380 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
381
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
382 static if (_WIN32_WINNT >= 0x501) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
383 alias ChangeServiceConfig2W ChangeServiceConfig2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
384 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
385
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
386 } else {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
387 alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
388 alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
389 alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
390 alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
391 alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
392 alias ChangeServiceConfigA ChangeServiceConfig;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
393 alias CreateServiceA CreateService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
394 alias EnumDependentServicesA EnumDependentServices;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
395 alias EnumServicesStatusA EnumServicesStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
396 alias GetServiceDisplayNameA GetServiceDisplayName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
397 alias GetServiceKeyNameA GetServiceKeyName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
398 alias OpenSCManagerA OpenSCManager;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
399 alias OpenServiceA OpenService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
400 alias QueryServiceConfigA QueryServiceConfig;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
401 alias QueryServiceLockStatusA QueryServiceLockStatus;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
402 alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
403 alias StartServiceA StartService;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
404 alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
405
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
406 static if (_WIN32_WINNT >= 0x500) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
407 alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
408 alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
409 alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
410 alias EnumServicesStatusExA EnumServicesStatusEx;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
411 alias QueryServiceConfig2A QueryServiceConfig2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
412 alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
413 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
414
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
415 static if (_WIN32_WINNT >= 0x501) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
416 alias ChangeServiceConfig2A ChangeServiceConfig2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
417 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
418
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
419 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
420
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
421 alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
422 alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
423 alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
424 alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
425
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
426 static if (_WIN32_WINNT >= 0x500) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
427 alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
428 alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
429 alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
430 }