summaryrefslogtreecommitdiffstats
path: root/sql/nt_servc.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/nt_servc.h')
-rw-r--r--sql/nt_servc.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/sql/nt_servc.h b/sql/nt_servc.h
new file mode 100644
index 00000000..8ba29519
--- /dev/null
+++ b/sql/nt_servc.h
@@ -0,0 +1,113 @@
+#ifndef NT_SERVC_INCLUDED
+#define NT_SERVC_INCLUDED
+
+/**
+ @file
+
+ @brief
+ Windows NT Service class library
+
+ Copyright Abandoned 1998 Irena Pancirov - Irnet Snc
+ This file is public domain and comes with NO WARRANTY of any kind
+*/
+
+// main application thread
+typedef void (*THREAD_FC)(void *);
+
+class NTService
+{
+ public:
+ NTService();
+ ~NTService();
+
+ BOOL bOsNT; ///< true if OS is NT, false for Win95
+ //install optinos
+ DWORD dwDesiredAccess;
+ DWORD dwServiceType;
+ DWORD dwStartType;
+ DWORD dwErrorControl;
+
+ LPSTR szLoadOrderGroup;
+ LPDWORD lpdwTagID;
+ LPSTR szDependencies;
+ OSVERSIONINFO osVer;
+
+ // time-out (in milisec)
+ int nStartTimeOut;
+ int nStopTimeOut;
+ int nPauseTimeOut;
+ int nResumeTimeOut;
+
+ //
+ DWORD my_argc;
+ LPTSTR *my_argv;
+ HANDLE hShutdownEvent;
+ int nError;
+ DWORD dwState;
+
+ //init service entry point
+ long Init(LPCSTR szInternName,THREAD_FC ServiceThread);
+
+ //application shutdown event
+ void SetShutdownEvent(HANDLE hEvent){ hShutdownEvent=hEvent; }
+
+
+ //service install / un-install
+ BOOL Install(int startType,LPCSTR szInternName,LPCSTR szDisplayName,
+ LPCSTR szFullPath, LPCSTR szAccountName=NULL,
+ LPCSTR szPassword=NULL);
+ BOOL SeekStatus(LPCSTR szInternName, int OperationType);
+ BOOL Remove(LPCSTR szInternName);
+ BOOL IsService(LPCSTR ServiceName);
+ BOOL got_service_option(char **argv, const char *service_option);
+ BOOL is_super_user();
+
+ /*
+ SetRunning() is to be called by the application
+ when initialization completes and it can accept
+ stop request
+ */
+ void SetRunning(void);
+
+ /**
+ Sets a timeout after which SCM will abort service startup if SetRunning()
+ was not called or the timeout was not extended with another call to
+ SetSlowStarting(). Should be called when static initialization completes,
+ and the variable initialization part begins
+
+ @arg timeout the timeout to pass to the SCM (in milliseconds)
+ */
+ void SetSlowStarting(unsigned long timeout);
+
+ /*
+ Stop() is to be called by the application to stop
+ the service
+ */
+ void Stop(void);
+
+ protected:
+ LPSTR ServiceName;
+ HANDLE hExitEvent;
+ SERVICE_STATUS_HANDLE hServiceStatusHandle;
+ BOOL bPause;
+ BOOL bRunning;
+ HANDLE hThreadHandle;
+ THREAD_FC fpServiceThread;
+
+ void PauseService();
+ void ResumeService();
+ void StopService();
+ BOOL StartService();
+
+ static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
+ static void WINAPI ServiceCtrlHandler (DWORD ctrlCode);
+
+ void Exit(DWORD error);
+ BOOL SetStatus (DWORD dwCurrentState,DWORD dwWin32ExitCode,
+ DWORD dwServiceSpecificExitCode,
+ DWORD dwCheckPoint,DWORD dwWaitHint);
+
+};
+/* ------------------------- the end -------------------------------------- */
+
+#endif /* NT_SERVC_INCLUDED */