Forward EnumDependentServicesA/W to services.exe.
[reactos.git] / reactos / include / idl / svcctl.idl
index 239fe64..1f22ff9 100644 (file)
@@ -12,6 +12,7 @@
 #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
@@ -138,7 +139,7 @@ cpp_quote("#endif")
   DWORD ScmrEnumDependentServicesW([in] handle_t BindingHandle,\r
                                    [in] SC_HANDLE hService,\r
                                    [in] DWORD dwServiceState,\r
-                                   [out, size_is(cbBufSize)] LPBYTE lpServices,\r
+                                   [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
                                    [in] DWORD cbBufSize,\r
                                    [out] LPDWORD pcbBytesNeeded,\r
                                    [out] LPDWORD lpServicesReturned);\r
@@ -148,7 +149,7 @@ cpp_quote("#endif")
                                 [in] SC_HANDLE hSCManager,\r
                                 [in] DWORD dwServiceType,\r
                                 [in] DWORD dwServiceState,\r
-                                [out, size_is(dwBufSize)] LPBYTE lpServices,\r
+                                [out, unique, size_is(dwBufSize)] LPBYTE lpServices,\r
                                 [in] DWORD dwBufSize,\r
                                 [out] LPDWORD pcbBytesNeeded,\r
                                 [out] LPDWORD lpServicesReturned,\r
@@ -178,11 +179,18 @@ cpp_quote("#endif")
   /* Function 18 */\r
   DWORD ScmrQueryServiceLockStatusW([in] handle_t BindingHandle,\r
                                     [in] SC_HANDLE hSCManager,\r
-                                    [out, size_is(cbBufSize), unique] LPBYTE lpLockStatus,\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
@@ -249,7 +257,7 @@ cpp_quote("#endif")
   DWORD ScmrEnumDependentServicesA([in] handle_t BindingHandle,\r
                                    [in] SC_HANDLE hService,\r
                                    [in] DWORD dwServiceState,\r
-                                   [out, size_is(cbBufSize)] LPBYTE lpServices,\r
+                                   [out, unique, size_is(cbBufSize)] LPBYTE lpServices,\r
                                    [in] DWORD cbBufSize,\r
                                    [out] LPDWORD pcbBytesNeeded,\r
                                    [out] LPDWORD lpServicesReturned);\r
@@ -259,7 +267,7 @@ cpp_quote("#endif")
                                 [in] SC_HANDLE hSCManager,\r
                                 [in] DWORD dwServiceType,\r
                                 [in] DWORD dwServiceState,\r
-                                [out, size_is(dwBufSize)] LPBYTE lpServices,\r
+                                [out, unique, size_is(dwBufSize)] LPBYTE lpServices,\r
                                 [in] DWORD dwBufSize,\r
                                 [out] LPDWORD pcbBytesNeeded,\r
                                 [out] LPDWORD lpServicesReturned,\r
@@ -287,63 +295,108 @@ cpp_quote("#endif")
                                 [out] LPDWORD pcbBytesNeeded);\r
 \r
   /* Function 30 */\r
-//  DWORD ScmrQueryServiceLockStatusA([in] handle_t BindingHandle,\r
-//                                    [in] SC_HANDLE hSCManager,\r
-//                                    [out, size_is(cbBufSize), unique] LPBYTE lpLockStatus,\r
-//                                    [in] DWORD cbBufSize,\r
-//                                    [out] LPDWORD pcbBytesNeeded);\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, string, size_is(dwNumServiceArgs, ), unique] LPSTR *lpServiceArgVectors);\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, size_is(*lpcchBuffer), unique] LPSTR lpDisplayName,\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, size_is(*lpcchBuffer), unique] LPSTR lpServiceName,\r
+                               [out, unique, size_is(*lpcchBuffer)] LPSTR lpServiceName,\r
                                [in, out, ref] LPDWORD lpcchBuffer);\r
 \r
-  /* Function 35 */\r
-  /* ScmrGetCurrentGroupStateW */\r
+  /* Function 34 */\r
+  DWORD ScmrGetCurrentGroupStateW([in] handle_t BindingHandle); /* FIXME */\r
 \r
   /* Function 35 */\r
-  /* ScmrEnumServiceGroupW */\r
+  DWORD ScmrEnumServiceGroupW([in] handle_t BindingHandle); /* FIXME */\r
 \r
   /* Function 36 */\r
-  /* ScmrChangeServiceConfig2A */\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
-  /* ScmrChangeServiceConfig2W */\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
+  DWORD ScmrQueryServiceConfig2A([in] handle_t BindingHandle,\r
+                                 [in] SC_HANDLE hService,\r
+                                 [in] DWORD dwInfoLevel,\r
+                                 [out, unique, size_is(cbBufSize)] LPBYTE lpBuffer,\r
+                                 [in] DWORD cbBufSize,\r
+                                 [out] LPDWORD pcbBytesNeeded);\r
 \r
   /* Function 39 */\r
-  /* ScmrQueryServiceConfig2W */\r
+  DWORD ScmrQueryServiceConfig2W([in] handle_t BindingHandle,\r
+                                 [in] SC_HANDLE hService,\r
+                                 [in] DWORD dwInfoLevel,\r
+                                 [out, unique, size_is(cbBufSize)] LPBYTE lpBuffer,\r
+                                 [in] DWORD cbBufSize,\r
+                                 [out] LPDWORD pcbBytesNeeded);\r
 \r
   /* Function 40 */\r
   DWORD ScmrQueryServiceStatusEx([in] handle_t BindingHandle,\r
                                  [in] SC_HANDLE hService,\r
                                  [in] SC_STATUS_TYPE InfoLevel,\r
-                                 [out, size_is(cbBufSize)] LPBYTE lpBuffer,\r
+                                 [out, unique, size_is(cbBufSize)] LPBYTE lpBuffer,\r
                                  [in] DWORD cbBufSize,\r
                                  [out] LPDWORD pcbBytesNeeded);\r
 \r
   /* Function 41 */\r
-  /* ScmrEnumServicesStatusExA */\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
-  /* ScmrEnumServicesStatusExW */\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