#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
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
[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
/* 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
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
[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
[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