-Add QueryServiceConfig2A stub.
[reactos.git] / reactos / subsys / system / services / services.h
1 /*
2 * services.h
3 */
4
5 #include <stdio.h>
6 #define WIN32_NO_STATUS
7 #include <windows.h>
8 #define NTOS_MODE_USER
9 #include <ndk/ntndk.h>
10 #include <services/services.h>
11
12 typedef struct _SERVICE
13 {
14 LIST_ENTRY ServiceListEntry;
15 LPWSTR lpServiceName;
16 LPWSTR lpDisplayName;
17 LPWSTR lpServiceGroup;
18 BOOL bDeleted;
19 DWORD dwResumeCount;
20
21 SERVICE_STATUS Status;
22 DWORD dwStartType;
23 DWORD dwErrorControl;
24 DWORD dwTag;
25
26 ULONG Flags;
27
28 PSECURITY_DESCRIPTOR lpSecurityDescriptor;
29
30 BOOLEAN ServiceVisited;
31
32 HANDLE ControlPipeHandle;
33 ULONG ProcessId;
34 ULONG ThreadId;
35
36 WCHAR szServiceName[1];
37 } SERVICE, *PSERVICE;
38
39
40 /* VARIABLES ***************************************************************/
41
42 extern BOOL ScmShutdown;
43
44
45 /* FUNCTIONS ***************************************************************/
46
47 /* config.c */
48
49 DWORD ScmOpenServiceKey(LPWSTR lpServiceName,
50 REGSAM samDesired,
51 PHKEY phKey);
52
53 DWORD ScmCreateServiceKey(LPWSTR lpServiceName,
54 REGSAM samDesired,
55 PHKEY phKey);
56
57 DWORD ScmWriteDependencies(HKEY hServiceKey,
58 LPWSTR lpDependencies,
59 DWORD dwDependenciesLength);
60
61 DWORD ScmMarkServiceForDelete(PSERVICE pService);
62 BOOL ScmIsDeleteFlagSet(HKEY hServiceKey);
63
64 DWORD ScmReadString(HKEY hServiceKey,
65 LPWSTR lpValueName,
66 LPWSTR *lpValue);
67
68
69 /* database.c */
70
71 DWORD ScmCreateServiceDatabase(VOID);
72 VOID ScmGetBootAndSystemDriverState(VOID);
73 VOID ScmAutoStartServices(VOID);
74
75 PSERVICE ScmGetServiceEntryByName(LPWSTR lpServiceName);
76 PSERVICE ScmGetServiceEntryByDisplayName(LPWSTR lpDisplayName);
77 PSERVICE ScmGetServiceEntryByResumeCount(DWORD dwResumeCount);
78 DWORD ScmCreateNewServiceRecord(LPWSTR lpServiceName,
79 PSERVICE *lpServiceRecord);
80 DWORD ScmMarkServiceForDelete(PSERVICE pService);
81
82
83 /* driver.c */
84
85 NTSTATUS ScmLoadDriver(PSERVICE lpService);
86 DWORD ScmUnloadDriver(PSERVICE lpService);
87 DWORD ScmControlDriver(PSERVICE lpService,
88 DWORD dwControl,
89 LPSERVICE_STATUS lpServiceStatus);
90
91
92 /* rpcserver.c */
93
94 VOID ScmStartRpcServer(VOID);
95
96
97 /* services.c */
98
99 VOID PrintString(LPCSTR fmt, ...);
100
101
102
103 /* EOF */
104