[SERVICES]
[reactos.git] / reactos / base / system / services / services.h
index 2ef9b34..811aa00 100644 (file)
@@ -40,6 +40,7 @@ typedef struct _SERVICE
     PSERVICE_IMAGE lpImage;
     BOOL bDeleted;
     DWORD dwResumeCount;
+    DWORD dwRefCount;
 
     SERVICE_STATUS Status;
     DWORD dwStartType;
@@ -75,7 +76,7 @@ DWORD ScmOpenServiceKey(LPWSTR lpServiceName,
                         REGSAM samDesired,
                         PHKEY phKey);
 
-DWORD ScmCreateServiceKey(LPWSTR lpServiceName,
+DWORD ScmCreateServiceKey(LPCWSTR lpServiceName,
                           REGSAM samDesired,
                           PHKEY phKey);
 
@@ -90,26 +91,40 @@ DWORD ScmReadString(HKEY hServiceKey,
                     LPWSTR lpValueName,
                     LPWSTR *lpValue);
 
+DWORD
+ScmReadDependencies(HKEY hServiceKey,
+                    LPWSTR *lpDependencies,
+                    DWORD *lpdwDependenciesLength);
+
 
 /* database.c */
 
 DWORD ScmCreateServiceDatabase(VOID);
+VOID ScmShutdownServiceDatabase(VOID);
 VOID ScmGetBootAndSystemDriverState(VOID);
 VOID ScmAutoStartServices(VOID);
+VOID ScmAutoShutdownServices(VOID);
 DWORD ScmStartService(PSERVICE Service,
-                      LPWSTR lpArgs);
+                      DWORD argc,
+                      LPWSTR *argv);
 
-PSERVICE ScmGetServiceEntryByName(LPWSTR lpServiceName);
-PSERVICE ScmGetServiceEntryByDisplayName(LPWSTR lpDisplayName);
+PSERVICE ScmGetServiceEntryByName(LPCWSTR lpServiceName);
+PSERVICE ScmGetServiceEntryByDisplayName(LPCWSTR lpDisplayName);
 PSERVICE ScmGetServiceEntryByResumeCount(DWORD dwResumeCount);
-DWORD ScmCreateNewServiceRecord(LPWSTR lpServiceName,
+DWORD ScmCreateNewServiceRecord(LPCWSTR lpServiceName,
                                 PSERVICE *lpServiceRecord);
+VOID ScmDeleteServiceRecord(PSERVICE lpService);
 DWORD ScmMarkServiceForDelete(PSERVICE pService);
 
 DWORD ScmControlService(PSERVICE Service,
                         DWORD dwControl,
                         LPSERVICE_STATUS lpServiceStatus);
 
+BOOL ScmLockDatabaseExclusive(VOID);
+BOOL ScmLockDatabaseShared(VOID);
+VOID ScmUnlockDatabase(VOID);
+
+
 /* driver.c */
 
 DWORD ScmLoadDriver(PSERVICE lpService);
@@ -123,7 +138,7 @@ DWORD ScmControlDriver(PSERVICE lpService,
 
 DWORD ScmCreateGroupList(VOID);
 DWORD ScmSetServiceGroup(PSERVICE lpService,
-                         LPWSTR lpGroupName);
+                         LPCWSTR lpGroupName);
 
 
 /* rpcserver.c */