Forward StartServiceA/W to services.exe
[reactos.git] / reactos / include / idl / svcctl.idl
index dee3a4c..5003d61 100644 (file)
@@ -5,12 +5,19 @@
 //#include <windef.h>\r
 //#include <winsvc.h>\r
 \r
+#define BYTE unsigned char\r
 #define DWORD unsigned long\r
 #define BOOL unsigned long\r
 #define SC_HANDLE unsigned int\r
 #define SC_LOCK unsigned int\r
+#define SERVICE_STATUS_HANDLE unsigned long\r
+#define SC_STATUS_TYPE unsigned long\r
+#define SC_ENUM_TYPE unsigned long\r
+#define LPSTR char*\r
 #define LPCSTR char*\r
+#define LPWSTR wchar_t*\r
 #define LPCWSTR wchar_t*\r
+#define LPBYTE unsigned char*\r
 #define LPDWORD unsigned long*\r
 \r
 [\r
@@ -54,16 +61,28 @@ cpp_quote("#endif")
                                 [out] SC_LOCK *hLock);\r
 \r
   /* Function 4 */\r
-//  DWORD ScmrQueryServiceObjectSecurity();\r
+  DWORD ScmrQueryServiceObjectSecurity([in] handle_t BindingHandle,\r
+                                       [in] SC_HANDLE hService,\r
+                                       [in] DWORD dwSecurityInformation,\r
+                                       [out, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,\r
+                                       [in] DWORD dwSecuityDescriptorSize,\r
+                                       [out] LPDWORD pcbBytesNeeded);\r
 \r
   /* Function 5 */\r
-//  DWORD ScmrSetServiceObjectSecurity();\r
+  DWORD ScmrSetServiceObjectSecurity([in] handle_t BindingHandle,\r
+                                     [in] SC_HANDLE hService,\r
+                                     [in] DWORD dwSecurityInformation,\r
+                                     [in, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,\r
+                                     [in] DWORD dwSecuityDescriptorSize);\r
 \r
   /* Function 6 */\r
-//  DWORD ScmrQueryServiceStatus();\r
+  DWORD ScmrQueryServiceStatus([in] handle_t BindingHandle,\r
+                               [in] SC_HANDLE hSCManager,\r
+                               [out] LPSERVICE_STATUS lpServiceStatus);\r
 \r
   /* Function 7 */\r
-//  DWORD ScmrSetServiceStatus();\r
+  DWORD ScmrSetServiceStatus([in] handle_t BindingHandle,\r
+                             [in] SERVICE_STATUS_HANDLE hServiceStatus); /* FIXME */\r
 \r
   /* Function 8 */\r
   DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,\r
@@ -73,23 +92,68 @@ cpp_quote("#endif")
   DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,\r
                                    [in] BOOL BootAcceptable);\r
 \r
+  /* Function 10 */\r
+  DWORD ScmrSetServiceBitsW([in] handle_t BindingHandle,\r
+                            [in] SERVICE_STATUS_HANDLE hServiceStatus,\r
+                            [in] DWORD dwServiceBits,\r
+                            [in] BOOL bSetBitsOn,\r
+                            [in] BOOL bUpdateImmediately,\r
+                            [in, string, unique] LPWSTR lpString);\r
+\r
+  /* Function 11 */\r
+  DWORD ScmrChangeServiceConfigW([in] handle_t BindingHandle,\r
+                                 [in] SC_HANDLE hSCManager,\r
+                                 [in] DWORD dwServiceType,\r
+                                 [in] DWORD dwStartType,\r
+                                 [in] DWORD dwErrorControl,\r
+                                 [in, string, unique] LPCWSTR lpBinaryPathName,\r
+                                 [in, string, unique] LPCWSTR lpLoadOrderGroup,\r
+                                 [in, out, unique] LPDWORD lpdwTagId,\r
+                                 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,\r
+                                 [in] DWORD dwDependenciesLength,\r
+                                 [in, string, unique] LPCWSTR lpServiceStartName,\r
+                                 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,\r
+                                 [in] DWORD dwPasswordLength,\r
+                                 [in, string, unique] LPCWSTR lpDisplayName);\r
 \r
   /* Function 12 */\r
   DWORD ScmrCreateServiceW([in] handle_t BindingHandle,\r
                            [in] SC_HANDLE hSCManager,\r
                            [in, string, ref] LPCWSTR lpServiceName,\r
-                           [in, string, ref] LPCWSTR lpDisplayName,\r
+                           [in, string, unique] LPCWSTR lpDisplayName,\r
                            [in] DWORD dwDesiredAccess,\r
                            [in] DWORD dwServiceType,\r
                            [in] DWORD dwStartType,\r
                            [in] DWORD dwErrorControl,\r
                            [in, string, ref] LPCWSTR lpBinaryPathName,\r
                            [in, string, unique] LPCWSTR lpLoadOrderGroup,\r
-                           [out] LPDWORD lpdwTagId,\r
-                           [in, string, unique] LPCWSTR lpDependencies,\r
+                           [in, out, unique] LPDWORD lpdwTagId,\r
+                           [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,\r
+                           [in] DWORD dwDependenciesLength,\r
                            [in, string, unique] LPCWSTR lpServiceStartName,\r
-                           [in, string, unique] LPCWSTR lpPassword);\r
+                           [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,\r
+                           [in] DWORD dwPasswordLength,\r
+                           [out] SC_HANDLE *hService);\r
+\r
+  /* Function 13 */\r
+  DWORD ScmrEnumDependentServicesW([in] handle_t BindingHandle,\r
+                                   [in] SC_HANDLE hService,\r
+                                   [in] DWORD dwServiceState,\r
+                                   [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
+                                   [in] DWORD cbBufSize,\r
+                                   [out] LPDWORD pcbBytesNeeded,\r
+                                   [out] LPDWORD lpServicesReturned);\r
 \r
+  /* Function 14 */\r
+  DWORD ScmrEnumServicesStatusW([in] handle_t BindingHandle,\r
+                                [in] SC_HANDLE hSCManager,\r
+                                [in] DWORD dwServiceType,\r
+                                [in] DWORD dwServiceState,\r
+                                [out, unique, size_is(dwBufSize)] LPBYTE lpServices,\r
+                                [in] DWORD dwBufSize,\r
+                                [out] LPDWORD pcbBytesNeeded,\r
+                                [out] LPDWORD lpServicesReturned,\r
+                                [in, out, unique] LPDWORD lpResumeHandle);\r
 \r
   /* Function 15 */\r
   DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,\r
@@ -105,6 +169,109 @@ cpp_quote("#endif")
                              [in] DWORD dwDesiredAccess,\r
                              [out] SC_HANDLE *hScm);\r
 \r
+  /* Function 17 */\r
+  DWORD ScmrQueryServiceConfigW([in] handle_t BindingHandle,\r
+                                [in] SC_HANDLE hService,\r
+                                [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,\r
+                                [in] DWORD cbBufSize,\r
+                                [out] LPDWORD pcbBytesNeeded);\r
+\r
+  /* Function 18 */\r
+  DWORD ScmrQueryServiceLockStatusW([in] handle_t BindingHandle,\r
+                                    [in] SC_HANDLE hSCManager,\r
+                                    [out, unique, size_is(cbBufSize)] LPBYTE lpLockStatus,\r
+                                    [in] DWORD cbBufSize,\r
+                                    [out] LPDWORD pcbBytesNeeded);\r
+\r
+  /* Function 19 */\r
+  DWORD ScmrStartServiceW([in] handle_t BindingHandle,\r
+                          [in] SC_HANDLE hService,\r
+                          [in] DWORD dwNumServiceArgs,\r
+                          [in, size_is(cbBufSize)] LPBYTE lpServiceArgBuffer,\r
+                          [in] DWORD cbBufSize);\r
+\r
+  /* FIXME: This is the correct interface but WIDL doesn't support it yet! */\r
+//  DWORD ScmrStartServiceW([in] handle_t BindingHandle,\r
+//                          [in] SC_HANDLE hService,\r
+//                          [in] DWORD dwNumServiceArgs,\r
+//                          [in, string, size_is(dwNumServiceArgs, ), unique] LPWSTR *lpServiceArgVectors);\r
+\r
+  /* Function 20 */\r
+  DWORD ScmrGetServiceDisplayNameW([in] handle_t BindingHandle,\r
+                                   [in] SC_HANDLE hSCManager,\r
+                                   [in, string, ref] LPCWSTR lpServiceName,\r
+                                   [out, size_is(*lpcchBuffer), unique] LPWSTR lpDisplayName,\r
+                                   [in, out, ref] LPDWORD lpcchBuffer);\r
+\r
+  /* Function 21 */\r
+  DWORD ScmrGetServiceKeyNameW([in] handle_t BindingHandle,\r
+                               [in] SC_HANDLE hSCManager,\r
+                               [in, string, ref] LPCWSTR lpDisplayName,\r
+                               [out, size_is(*lpcchBuffer), unique] LPWSTR lpServiceName,\r
+                               [in, out, ref] LPDWORD lpcchBuffer);\r
+\r
+  /* Function 22 */\r
+  DWORD ScmrSetServiceBitsA([in] handle_t BindingHandle,\r
+                            [in] SERVICE_STATUS_HANDLE hServiceStatus,\r
+                            [in] DWORD dwServiceBits,\r
+                            [in] BOOL bSetBitsOn,\r
+                            [in] BOOL bUpdateImmediately,\r
+                            [in, string, unique] LPSTR lpString);\r
+\r
+  /* Function 23 */\r
+  DWORD ScmrChangeServiceConfigA([in] handle_t BindingHandle,\r
+                                 [in] SC_HANDLE hSCManager,\r
+                                 [in] DWORD dwServiceType,\r
+                                 [in] DWORD dwStartType,\r
+                                 [in] DWORD dwErrorControl,\r
+                                 [in, string, unique] LPCSTR lpBinaryPathName,\r
+                                 [in, string, unique] LPCSTR lpLoadOrderGroup,\r
+                                 [in, out, unique] LPDWORD lpdwTagId,\r
+                                 [in, size_is(dwDependenciesLength), unique] LPCSTR lpDependencies,\r
+                                 [in] DWORD dwDependenciesLength,\r
+                                 [in, string, unique] LPCSTR lpServiceStartName,\r
+                                 [in, size_is(dwPasswordLength), unique] LPCSTR lpPassword,\r
+                                 [in] DWORD dwPasswordLength,\r
+                                 [in, string, unique] LPCSTR lpDisplayName);\r
+\r
+  /* Function 24 */\r
+  DWORD ScmrCreateServiceA([in] handle_t BindingHandle,\r
+                           [in] SC_HANDLE hSCManager,\r
+                           [in, string, ref] LPCSTR lpServiceName,\r
+                           [in, string, unique] LPCSTR lpDisplayName,\r
+                           [in] DWORD dwDesiredAccess,\r
+                           [in] DWORD dwServiceType,\r
+                           [in] DWORD dwStartType,\r
+                           [in] DWORD dwErrorControl,\r
+                           [in, string, ref] LPCSTR lpBinaryPathName,\r
+                           [in, string, unique] LPCSTR lpLoadOrderGroup,\r
+                           [in, out, unique] LPDWORD lpdwTagId,\r
+                           [in, size_is(dwDependenciesLength), unique] LPCSTR lpDependencies,\r
+                           [in] DWORD dwDependenciesLength,\r
+                           [in, string, unique] LPCSTR lpServiceStartName,\r
+                           [in, size_is(dwPasswordLength), unique] LPCSTR lpPassword,\r
+                           [in] DWORD dwPasswordLength,\r
+                           [out] SC_HANDLE *hService);\r
+\r
+  /* Function 25 */\r
+  DWORD ScmrEnumDependentServicesA([in] handle_t BindingHandle,\r
+                                   [in] SC_HANDLE hService,\r
+                                   [in] DWORD dwServiceState,\r
+                                   [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
+                                   [in] DWORD cbBufSize,\r
+                                   [out] LPDWORD pcbBytesNeeded,\r
+                                   [out] LPDWORD lpServicesReturned);\r
+\r
+  /* Function 26 */\r
+  DWORD ScmrEnumServicesStatusA([in] handle_t BindingHandle,\r
+                                [in] SC_HANDLE hSCManager,\r
+                                [in] DWORD dwServiceType,\r
+                                [in] DWORD dwServiceState,\r
+                                [out, unique, size_is(dwBufSize)] LPBYTE lpServices,\r
+                                [in] DWORD dwBufSize,\r
+                                [out] LPDWORD pcbBytesNeeded,\r
+                                [out] LPDWORD lpServicesReturned,\r
+                                [in, out, unique] LPDWORD lpResumeHandle);\r
 \r
   /* Function 27 */\r
   DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,\r
@@ -119,4 +286,108 @@ cpp_quote("#endif")
                              [in, string] LPCSTR lpServiceName,\r
                              [in] DWORD dwDesiredAccess,\r
                              [out] SC_HANDLE *hScm);\r
+\r
+  /* Function 29 */\r
+  DWORD ScmrQueryServiceConfigA([in] handle_t BindingHandle,\r
+                                [in] SC_HANDLE hService,\r
+                                [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,\r
+                                [in] DWORD cbBufSize,\r
+                                [out] LPDWORD pcbBytesNeeded);\r
+\r
+  /* Function 30 */\r
+  DWORD ScmrQueryServiceLockStatusA([in] handle_t BindingHandle,\r
+                                    [in] SC_HANDLE hSCManager,\r
+                                    [out, unique, size_is(cbBufSize)] LPBYTE lpLockStatus,\r
+                                    [in] DWORD cbBufSize,\r
+                                    [out] LPDWORD pcbBytesNeeded);\r
+\r
+  /* Function 31 */\r
+  DWORD ScmrStartServiceA([in] handle_t BindingHandle,\r
+                          [in] SC_HANDLE hService,\r
+                          [in] DWORD dwNumServiceArgs,\r
+                          [in, size_is(cbBufSize)] LPBYTE lpServiceArgBuffer,\r
+                          [in] DWORD cbBufSize);\r
+\r
+  /* FIXME: This is the correct interface but WIDL doesn't support it yet! */\r
+//  DWORD ScmrStartServiceA([in] handle_t BindingHandle,\r
+//                          [in] SC_HANDLE hService,\r
+//                          [in] DWORD dwNumServiceArgs,\r
+//                          [in, unique, string, size_is(dwNumServiceArgs, )] LPSTR *lpServiceArgVectors);\r
+\r
+  /* Function 32 */\r
+  DWORD ScmrGetServiceDisplayNameA([in] handle_t BindingHandle,\r
+                                   [in] SC_HANDLE hSCManager,\r
+                                   [in, string, ref] LPCSTR lpServiceName,\r
+                                   [out, unique, size_is(*lpcchBuffer)] LPSTR lpDisplayName,\r
+                                   [in, out, ref] LPDWORD lpcchBuffer);\r
+\r
+  /* Function 33 */\r
+  DWORD ScmrGetServiceKeyNameA([in] handle_t BindingHandle,\r
+                               [in] SC_HANDLE hSCManager,\r
+                               [in, string, ref] LPCSTR lpDisplayName,\r
+                               [out, unique, size_is(*lpcchBuffer)] LPSTR lpServiceName,\r
+                               [in, out, ref] LPDWORD lpcchBuffer);\r
+\r
+  /* Function 34 */\r
+  /* ScmrGetCurrentGroupStateW */\r
+\r
+  /* Function 35 */\r
+  /* ScmrEnumServiceGroupW */\r
+\r
+  /* Function 36 */\r
+//  DWORD ScmrChangeServiceConfig2A([in] handle_t BindingHandle,\r
+//                                  [in] SC_HANDLE hService,\r
+//                                  [in] DWORD dwInfoLevel,\r
+//                                  [in, size_is(dwInfoSize)] LPBYTE lpInfo,\r
+//                                  [in] DWORD dwInfoSize);\r
+\r
+  /* Function 37 */\r
+  DWORD ScmrChangeServiceConfig2W([in] handle_t BindingHandle,\r
+                                  [in] SC_HANDLE hService,\r
+                                  [in] DWORD dwInfoLevel,\r
+                                  [in, size_is(dwInfoSize)] LPBYTE lpInfo,\r
+                                  [in] DWORD dwInfoSize);\r
+\r
+  /* Function 38 */\r
+  /* ScmrQueryServiceConfig2A */\r
+\r
+  /* Function 39 */\r
+  /* ScmrQueryServiceConfig2W */\r
+\r
+  /* Function 40 */\r
+  DWORD ScmrQueryServiceStatusEx([in] handle_t BindingHandle,\r
+                                 [in] SC_HANDLE hService,\r
+                                 [in] SC_STATUS_TYPE InfoLevel,\r
+                                 [out, unique, size_is(cbBufSize)] LPBYTE lpBuffer,\r
+                                 [in] DWORD cbBufSize,\r
+                                 [out] LPDWORD pcbBytesNeeded);\r
+\r
+  /* Function 41 */\r
+//  DWORD ScmrEnumServicesStatusExA([in] handle_t BindingHandle,\r
+//                                  [in] SC_HANDLE hService,\r
+//                                  [in] SC_ENUM_TYPE InfoLevel,\r
+//                                  [in] DWORD dwServiceType,\r
+//                                  [in] DWORD dwServiceState,\r
+//                                  [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
+//                                  [in] DWORD cbBufSize,\r
+//                                  [out] LPDWORD pcbBytesNeeded,\r
+//                                  [out] LPDWORD lpServicesReturned,\r
+//                                  [in, out, unique] LPDWORD lpResumeHandle,\r
+//                                  [in, string] LPCSTR pszGroupName);\r
+\r
+  /* Function 42 */\r
+  DWORD ScmrEnumServicesStatusExW([in] handle_t BindingHandle,\r
+                                  [in] SC_HANDLE hService,\r
+                                  [in] SC_ENUM_TYPE InfoLevel,\r
+                                  [in] DWORD dwServiceType,\r
+                                  [in] DWORD dwServiceState,\r
+                                  [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
+                                  [in] DWORD cbBufSize,\r
+                                  [out] LPDWORD pcbBytesNeeded,\r
+                                  [out] LPDWORD lpServicesReturned,\r
+                                  [in, out, unique] LPDWORD lpResumeHandle,\r
+                                  [in, string] LPCWSTR pszGroupName);\r
+\r
+  /* Function 43 */\r
+  /* ScmrSendTSMessage */\r
 }\r