2 * Service Control Manager (SCM) interface definition
8 #define DWORD unsigned long
9 #define BOOL unsigned long
10 #define SC_HANDLE unsigned int
11 #define SC_LOCK unsigned int
13 #define LPCWSTR wchar_t*
14 #define LPDWORD unsigned long*
17 uuid(367abb81-9844-35f1-ad32-98f038001003),
19 pointer_default(unique),
25 typedef struct _SERVICE_STATUS
29 DWORD dwControlsAccepted;
30 DWORD dwWin32ExitCode;
31 DWORD dwServiceSpecificExitCode;
34 } SERVICE_STATUS, *LPSERVICE_STATUS;
38 DWORD ScmrCloseServiceHandle([in] handle_t BindingHandle,
39 [in] SC_HANDLE hSCObject);
42 BOOL ScmrControlService([in] handle_t BindingHandle,
43 [in] SC_HANDLE hService,
45 [out] LPSERVICE_STATUS lpServiceStatus);
48 DWORD ScmrDeleteService([in] handle_t BindingHandle,
49 [in] SC_HANDLE hService);
52 DWORD ScmrLockServiceDatabase([in] handle_t BindingHandle,
53 [in] SC_HANDLE hSCManager,
54 [out] SC_LOCK *hLock);
57 DWORD ScmrQueryServiceObjectSecurity([in] handle_t BindingHandle); /* FIXME */
60 DWORD ScmrSetServiceObjectSecurity([in] handle_t BindingHandle); /* FIXME */
63 DWORD ScmrQueryServiceStatus([in] handle_t BindingHandle,
64 [in] SC_HANDLE hSCManager,
65 [out] LPSERVICE_STATUS lpServiceStatus);
68 DWORD ScmrSetServiceStatus([in] handle_t BindingHandle); /* FIXME */
71 DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,
75 DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,
76 [in] BOOL BootAcceptable);
80 // DWORD ScmrCreateServiceW([in] handle_t BindingHandle,
81 // [in] SC_HANDLE hSCManager,
82 // [in, string, ref] LPCWSTR lpServiceName,
83 // [in, string, ref] LPCWSTR lpDisplayName,
84 // [in] DWORD dwDesiredAccess,
85 // [in] DWORD dwServiceType,
86 // [in] DWORD dwStartType,
87 // [in] DWORD dwErrorControl,
88 // [in, string, ref] LPCWSTR lpBinaryPathName,
89 // [in, string, unique] LPCWSTR lpLoadOrderGroup,
90 // [out] LPDWORD lpdwTagId,
91 // [in, size_is(dwDepwndenciesLength), 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 // [out] SC_HANDLE *hService);
100 DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,
101 [in, string, unique] LPCWSTR lpMachineName,
102 [in, string, unique] LPCWSTR lpDatabaseName,
103 [in] DWORD dwDesiredAccess,
104 [out] SC_HANDLE *hScm);
107 SC_HANDLE ScmrOpenServiceW([in] handle_t BindingHandle,
108 [in] SC_HANDLE hSCManager,
109 [in, string] LPCWSTR lpServiceName,
110 [in] DWORD dwDesiredAccess,
111 [out] SC_HANDLE *hScm);
115 DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,
116 [in, string, unique] LPCSTR lpMachineName,
117 [in, string, unique] LPCSTR lpDatabaseName,
118 [in] DWORD dwDesiredAccess,
119 [out] SC_HANDLE *hScm);
122 SC_HANDLE ScmrOpenServiceA([in] handle_t BindingHandle,
123 [in] SC_HANDLE hSCManager,
124 [in, string] LPCSTR lpServiceName,
125 [in] DWORD dwDesiredAccess,
126 [out] SC_HANDLE *hScm);