Implement QueryServiceConfigW.
[reactos.git] / reactos / include / idl / svcctl.idl
1 /*
2 * Service Control Manager (SCM) interface definition
3 */
4
5 //#include <windef.h>
6 //#include <winsvc.h>
7
8 #define BYTE unsigned char
9 #define DWORD unsigned long
10 #define BOOL unsigned long
11 #define SC_HANDLE unsigned int
12 #define SC_LOCK unsigned int
13 #define LPSTR char*
14 #define LPCSTR char*
15 #define LPWSTR wchar_t*
16 #define LPCWSTR wchar_t*
17 #define LPDWORD unsigned long*
18
19 [
20 uuid(367abb81-9844-35f1-ad32-98f038001003),
21 version(2.0),
22 pointer_default(unique),
23 explicit_handle
24 ]
25 interface svcctl
26 {
27 cpp_quote("#if 0")
28 typedef struct _SERVICE_STATUS
29 {
30 DWORD dwServiceType;
31 DWORD dwCurrentState;
32 DWORD dwControlsAccepted;
33 DWORD dwWin32ExitCode;
34 DWORD dwServiceSpecificExitCode;
35 DWORD dwCheckPoint;
36 DWORD dwWaitHint;
37 } SERVICE_STATUS, *LPSERVICE_STATUS;
38 cpp_quote("#endif")
39
40 /* Function 0 */
41 DWORD ScmrCloseServiceHandle([in] handle_t BindingHandle,
42 [in] SC_HANDLE hSCObject);
43
44 /* Function 1 */
45 BOOL ScmrControlService([in] handle_t BindingHandle,
46 [in] SC_HANDLE hService,
47 [in] DWORD dwControl,
48 [out] LPSERVICE_STATUS lpServiceStatus);
49
50 /* Function 2 */
51 DWORD ScmrDeleteService([in] handle_t BindingHandle,
52 [in] SC_HANDLE hService);
53
54 /* Function 3 */
55 DWORD ScmrLockServiceDatabase([in] handle_t BindingHandle,
56 [in] SC_HANDLE hSCManager,
57 [out] SC_LOCK *hLock);
58
59 /* Function 4 */
60 DWORD ScmrQueryServiceObjectSecurity([in] handle_t BindingHandle); /* FIXME */
61
62 /* Function 5 */
63 DWORD ScmrSetServiceObjectSecurity([in] handle_t BindingHandle); /* FIXME */
64
65 /* Function 6 */
66 DWORD ScmrQueryServiceStatus([in] handle_t BindingHandle,
67 [in] SC_HANDLE hSCManager,
68 [out] LPSERVICE_STATUS lpServiceStatus);
69
70 /* Function 7 */
71 DWORD ScmrSetServiceStatus([in] handle_t BindingHandle); /* FIXME */
72
73 /* Function 8 */
74 DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,
75 [in] SC_LOCK hLock);
76
77 /* Function 9 */
78 DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,
79 [in] BOOL BootAcceptable);
80
81
82 /* Function 11 */
83 DWORD ScmrChangeServiceConfigW([in] handle_t BindingHandle,
84 [in] SC_HANDLE hSCManager,
85 [in] DWORD dwServiceType,
86 [in] DWORD dwStartType,
87 [in] DWORD dwErrorControl,
88 [in, string, unique] LPCWSTR lpBinaryPathName,
89 [in, string, unique] LPCWSTR lpLoadOrderGroup,
90 [in, out, unique] LPDWORD lpdwTagId,
91 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
92 [in] DWORD dwDependenciesLength,
93 [in, string, unique] LPCWSTR lpServiceStartName,
94 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
95 [in] DWORD dwPasswordLength,
96 [in, string, unique] LPCWSTR lpDisplayName);
97
98 /* Function 12 */
99 DWORD ScmrCreateServiceW([in] handle_t BindingHandle,
100 [in] SC_HANDLE hSCManager,
101 [in, string, ref] LPCWSTR lpServiceName,
102 [in, string, unique] LPCWSTR lpDisplayName,
103 [in] DWORD dwDesiredAccess,
104 [in] DWORD dwServiceType,
105 [in] DWORD dwStartType,
106 [in] DWORD dwErrorControl,
107 [in, string, ref] LPCWSTR lpBinaryPathName,
108 [in, string, unique] LPCWSTR lpLoadOrderGroup,
109 [in, out, unique] LPDWORD lpdwTagId,
110 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
111 [in] DWORD dwDependenciesLength,
112 [in, string, unique] LPCWSTR lpServiceStartName,
113 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
114 [in] DWORD dwPasswordLength,
115 [out] SC_HANDLE *hService);
116
117 /* Function 13 */
118 DWORD ScmrEnumDependentServicesW([in] handle_t BindingHandle,
119 [in] SC_HANDLE hService,
120 [in] DWORD dwServiceState,
121 [out, size_is(cbBufSize)] BYTE *lpServices,
122 [in] DWORD cbBufSize,
123 [out] LPDWORD pcbBytesNeeded,
124 [out] LPDWORD lpServicesReturned);
125
126 /* Function 14 */
127 DWORD ScmrEnumServicesStatusW([in] handle_t BindingHandle,
128 [in] SC_HANDLE hSCManager,
129 [in] DWORD dwServiceType,
130 [in] DWORD dwServiceState,
131 [out, size_is(dwBufSize)] BYTE *lpServices,
132 [in] DWORD dwBufSize,
133 [out] LPDWORD pcbBytesNeeded,
134 [out] LPDWORD lpServicesReturned,
135 [in, out] LPDWORD lpResumeHandle); /* FIXME: unique */
136
137 /* Function 15 */
138 DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,
139 [in, string, unique] LPCWSTR lpMachineName,
140 [in, string, unique] LPCWSTR lpDatabaseName,
141 [in] DWORD dwDesiredAccess,
142 [out] SC_HANDLE *hScm);
143
144 /* Function 16 */
145 SC_HANDLE ScmrOpenServiceW([in] handle_t BindingHandle,
146 [in] SC_HANDLE hSCManager,
147 [in, string] LPCWSTR lpServiceName,
148 [in] DWORD dwDesiredAccess,
149 [out] SC_HANDLE *hScm);
150
151 /* Function 17 */
152 DWORD ScmrQueryServiceConfigW([in] handle_t BindingHandle,
153 [in] SC_HANDLE hService,
154 [out, unique, size_is(cbBufSize)] BYTE *lpServiceConfig,
155 [in] DWORD cbBufSize,
156 [out] DWORD *pcbBytesNeeded);
157
158
159 /* Function 20 */
160 DWORD ScmrGetServiceDisplayNameW([in] handle_t BindingHandle,
161 [in] SC_HANDLE hSCManager,
162 [in, string, ref] LPCWSTR lpServiceName,
163 [out, size_is(*lpcchBuffer), unique] LPWSTR lpDisplayName,
164 [in, out, ref] LPDWORD lpcchBuffer);
165
166 /* Function 21 */
167 DWORD ScmrGetServiceKeyNameW([in] handle_t BindingHandle,
168 [in] SC_HANDLE hSCManager,
169 [in, string, ref] LPCWSTR lpDisplayName,
170 [out, size_is(*lpcchBuffer), unique] LPWSTR lpServiceName,
171 [in, out, ref] LPDWORD lpcchBuffer);
172
173
174 /* Function 27 */
175 DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,
176 [in, string, unique] LPCSTR lpMachineName,
177 [in, string, unique] LPCSTR lpDatabaseName,
178 [in] DWORD dwDesiredAccess,
179 [out] SC_HANDLE *hScm);
180
181 /* Function 28 */
182 SC_HANDLE ScmrOpenServiceA([in] handle_t BindingHandle,
183 [in] SC_HANDLE hSCManager,
184 [in, string] LPCSTR lpServiceName,
185 [in] DWORD dwDesiredAccess,
186 [out] SC_HANDLE *hScm);
187 }