ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

services.h
Go to the documentation of this file.
00001 /*
00002  * services.h
00003  */
00004 
00005 #include <stdio.h>
00006 #define WIN32_NO_STATUS
00007 #include <windows.h>
00008 #include <netevent.h>
00009 #define NTOS_MODE_USER
00010 #include <ndk/iofuncs.h>
00011 #include <ndk/obfuncs.h>
00012 #include <ndk/rtlfuncs.h>
00013 #include <services/services.h>
00014 #include "svcctl_s.h"
00015 
00016 
00017 typedef struct _SERVICE_GROUP
00018 {
00019     LIST_ENTRY GroupListEntry;
00020     LPWSTR lpGroupName;
00021 
00022     DWORD dwRefCount;
00023     BOOLEAN ServicesRunning;
00024     ULONG TagCount;
00025     PULONG TagArray;
00026 
00027     WCHAR szGroupName[1];
00028 } SERVICE_GROUP, *PSERVICE_GROUP;
00029 
00030 
00031 typedef struct _SERVICE_IMAGE
00032 {
00033     LIST_ENTRY ImageListEntry;
00034     DWORD dwImageRunCount;
00035 
00036     HANDLE hControlPipe;
00037     HANDLE hProcess;
00038     DWORD dwProcessId;
00039 
00040     WCHAR szImagePath[1];
00041 } SERVICE_IMAGE, *PSERVICE_IMAGE;
00042 
00043 
00044 typedef struct _SERVICE
00045 {
00046     LIST_ENTRY ServiceListEntry;
00047     LPWSTR lpServiceName;
00048     LPWSTR lpDisplayName;
00049     PSERVICE_GROUP lpGroup;
00050     PSERVICE_IMAGE lpImage;
00051     BOOL bDeleted;
00052     DWORD dwResumeCount;
00053     DWORD dwRefCount;
00054 
00055     SERVICE_STATUS Status;
00056     DWORD dwStartType;
00057     DWORD dwErrorControl;
00058     DWORD dwTag;
00059 
00060     ULONG Flags;
00061 
00062     PSECURITY_DESCRIPTOR lpSecurityDescriptor;
00063 
00064     BOOLEAN ServiceVisited;
00065 
00066     WCHAR szServiceName[1];
00067 } SERVICE, *PSERVICE;
00068 
00069 
00070 /* VARIABLES ***************************************************************/
00071 
00072 extern LIST_ENTRY ServiceListHead;
00073 extern LIST_ENTRY GroupListHead;
00074 extern LIST_ENTRY ImageListHead;
00075 extern BOOL ScmShutdown;
00076 
00077 
00078 /* FUNCTIONS ***************************************************************/
00079 
00080 /* config.c */
00081 
00082 DWORD ScmOpenServiceKey(LPWSTR lpServiceName,
00083                         REGSAM samDesired,
00084                         PHKEY phKey);
00085 
00086 DWORD ScmCreateServiceKey(LPCWSTR lpServiceName,
00087                           REGSAM samDesired,
00088                           PHKEY phKey);
00089 
00090 DWORD ScmWriteDependencies(HKEY hServiceKey,
00091                            LPCWSTR lpDependencies,
00092                            DWORD dwDependenciesLength);
00093 
00094 DWORD ScmMarkServiceForDelete(PSERVICE pService);
00095 BOOL ScmIsDeleteFlagSet(HKEY hServiceKey);
00096 
00097 DWORD ScmReadString(HKEY hServiceKey,
00098                     LPWSTR lpValueName,
00099                     LPWSTR *lpValue);
00100 
00101 DWORD
00102 ScmReadDependencies(HKEY hServiceKey,
00103                     LPWSTR *lpDependencies,
00104                     DWORD *lpdwDependenciesLength);
00105 
00106 
00107 /* database.c */
00108 
00109 DWORD ScmCreateServiceDatabase(VOID);
00110 VOID ScmShutdownServiceDatabase(VOID);
00111 VOID ScmGetBootAndSystemDriverState(VOID);
00112 VOID ScmAutoStartServices(VOID);
00113 VOID ScmAutoShutdownServices(VOID);
00114 DWORD ScmStartService(PSERVICE Service,
00115                       DWORD argc,
00116                       LPWSTR *argv);
00117 
00118 PSERVICE ScmGetServiceEntryByName(LPCWSTR lpServiceName);
00119 PSERVICE ScmGetServiceEntryByDisplayName(LPCWSTR lpDisplayName);
00120 PSERVICE ScmGetServiceEntryByResumeCount(DWORD dwResumeCount);
00121 DWORD ScmCreateNewServiceRecord(LPCWSTR lpServiceName,
00122                                 PSERVICE *lpServiceRecord);
00123 VOID ScmDeleteServiceRecord(PSERVICE lpService);
00124 DWORD ScmMarkServiceForDelete(PSERVICE pService);
00125 
00126 DWORD ScmControlService(PSERVICE Service,
00127                         DWORD dwControl);
00128 
00129 BOOL ScmLockDatabaseExclusive(VOID);
00130 BOOL ScmLockDatabaseShared(VOID);
00131 VOID ScmUnlockDatabase(VOID);
00132 
00133 VOID ScmInitNamedPipeCriticalSection(VOID);
00134 VOID ScmDeleteNamedPipeCriticalSection(VOID);
00135 
00136 
00137 /* driver.c */
00138 
00139 DWORD ScmLoadDriver(PSERVICE lpService);
00140 DWORD ScmUnloadDriver(PSERVICE lpService);
00141 DWORD ScmControlDriver(PSERVICE lpService,
00142                        DWORD dwControl,
00143                        LPSERVICE_STATUS lpServiceStatus);
00144 
00145 
00146 /* groupdb.c */
00147 
00148 DWORD ScmCreateGroupList(VOID);
00149 DWORD ScmSetServiceGroup(PSERVICE lpService,
00150                          LPCWSTR lpGroupName);
00151 
00152 
00153 /* rpcserver.c */
00154 
00155 VOID ScmStartRpcServer(VOID);
00156 
00157 
00158 /* services.c */
00159 
00160 VOID PrintString(LPCSTR fmt, ...);
00161 VOID ScmLogError(DWORD dwEventId,
00162                  WORD wStrings,
00163                  LPCWSTR *lpStrings);
00164 
00165 /* EOF */
00166 

Generated on Sun May 27 2012 04:18:52 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.