6 #define WIN32_NO_STATUS
10 #include <services/services.h>
12 typedef struct _SERVICE
14 LIST_ENTRY ServiceListEntry
;
17 LPWSTR lpServiceGroup
;
21 SERVICE_STATUS Status
;
28 PSECURITY_DESCRIPTOR lpSecurityDescriptor
;
30 BOOLEAN ServiceVisited
;
32 HANDLE ControlPipeHandle
;
36 WCHAR szServiceName
[1];
40 /* VARIABLES ***************************************************************/
42 extern BOOL ScmShutdown
;
45 /* FUNCTIONS ***************************************************************/
49 DWORD
ScmOpenServiceKey(LPWSTR lpServiceName
,
53 DWORD
ScmCreateServiceKey(LPWSTR lpServiceName
,
57 DWORD
ScmWriteDependencies(HKEY hServiceKey
,
58 LPWSTR lpDependencies
,
59 DWORD dwDependenciesLength
);
61 DWORD
ScmMarkServiceForDelete(PSERVICE pService
);
62 BOOL
ScmIsDeleteFlagSet(HKEY hServiceKey
);
64 DWORD
ScmReadString(HKEY hServiceKey
,
71 DWORD
ScmCreateServiceDatabase(VOID
);
72 VOID
ScmGetBootAndSystemDriverState(VOID
);
73 VOID
ScmAutoStartServices(VOID
);
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
);
85 NTSTATUS
ScmLoadDriver(PSERVICE lpService
);
86 DWORD
ScmUnloadDriver(PSERVICE lpService
);
87 DWORD
ScmControlDriver(PSERVICE lpService
,
89 LPSERVICE_STATUS lpServiceStatus
);
94 VOID
ScmStartRpcServer(VOID
);
99 VOID
PrintString(LPCSTR fmt
, ...);