summaryrefslogtreecommitdiff
path: root/include/net-snmp/library/winservice.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net-snmp/library/winservice.h')
-rw-r--r--include/net-snmp/library/winservice.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/include/net-snmp/library/winservice.h b/include/net-snmp/library/winservice.h
new file mode 100644
index 0000000..76080d6
--- /dev/null
+++ b/include/net-snmp/library/winservice.h
@@ -0,0 +1,159 @@
+#ifndef WINSERVICE_H
+#define WINSERVICE_H
+
+ /*
+ *
+ * Windows Service related functions declaration
+ * By Raju Krishanppa(raju_krishnappa@yahoo.com)
+ *
+ */
+
+#ifdef __cplusplus
+extern "C"
+{
+
+#endif /* */
+
+ /*
+ * Define Constants for Register, De-register , Run As service or Console mode
+ */
+#define REGISTER_SERVICE 0
+#define UN_REGISTER_SERVICE 1
+#define RUN_AS_SERVICE 2
+#define RUN_AS_CONSOLE 3
+
+
+ /*
+ * Error levels returned when registering or unregistering the service
+ */
+#define SERVICE_ERROR_NONE 0
+#define SERVICE_ERROR_SCM_OPEN 1 /* Can not open SCM */
+#define SERVICE_ERROR_CREATE_SERVICE 2 /* Can not create service */
+#define SERVICE_ERROR_CREATE_REGISTRY_ENTRIES 3 /* Can not create registry entries */
+#define SERVICE_ERROR_OPEN_SERVICE 4 /* Can not open service (service does not exist) */
+
+ /*
+ * Define Message catalog ID
+ * MessageId: DISPLAY_MSG
+ * MessageText: %1.
+ */
+#define DISPLAY_MSG 0x00000064L
+
+ /*
+ * Hint Value to SCM to wait before sending successive commands to service
+ */
+#define SCM_WAIT_INTERVAL 7000
+
+ /*
+ * Define Generic String Size, to hold Error or Information
+ */
+#define MAX_STR_SIZE 1024
+
+ /*
+ * Delcare Global variables, which are visible to other modules
+ */
+ extern BOOL g_fRunningAsService;
+
+ /*
+ * Input parameter structure to thread
+ */
+ typedef struct _InputParams
+ {
+ DWORD Argc;
+ LPTSTR *Argv;
+ } InputParams;
+
+ /*
+ * Define Service Related functions
+ */
+
+ /*
+ * To register application as windows service with SCM
+ */
+ int RegisterService (LPCTSTR lpszServiceName,
+ LPCTSTR lpszServiceDisplayName,
+ LPCTSTR lpszServiceDescription, InputParams * StartUpArg, int quiet);
+
+ /*
+ * To unregister service
+ */
+ int UnregisterService (LPCTSTR lpszServiceName, int quiet);
+
+ /*
+ * To parse command line for startup option
+ */
+ INT ParseCmdLineForServiceOption (INT argc, TCHAR * argv[], int *quiet);
+
+ /*
+ * To write to windows event log
+ */
+ VOID WriteToEventLog (WORD wType, LPCTSTR pszFormat, ...);
+
+ /*
+ * To display generic windows error
+ */
+ VOID DisplayError (LPCTSTR pszTitle, int quite);
+
+ /*
+ * Service Main function, Which will spawn a thread, and calls the
+ * Service run part
+ */
+ VOID WINAPI ServiceMain (DWORD argc, LPTSTR argv[]);
+
+ /*
+ * To start Service
+ */
+
+ BOOL RunAsService (INT (*ServiceFunction) (INT, LPTSTR *));
+
+ /*
+ * Call back function to process SCM Requests
+ */
+ VOID WINAPI ControlHandler (DWORD dwControl);
+
+ /*
+ * To Stop the service
+ */
+ VOID ProcessServiceStop (VOID);
+
+ /*
+ * To Pause service
+ */
+ VOID ProcessServicePause (VOID);
+
+ /*
+ * To Continue paused service
+ */
+ VOID ProcessServiceContinue (VOID);
+
+ /*
+ * To send Current Service status to SCM when INTERROGATE command is sent
+ */
+ VOID ProcessServiceInterrogate (VOID);
+
+ /*
+ * To allocate and Set security descriptor
+ */
+ BOOL SetSimpleSecurityAttributes (SECURITY_ATTRIBUTES * pSecurityAttr);
+
+ /*
+ * To free Security Descriptor
+ */
+ VOID FreeSecurityAttributes (SECURITY_ATTRIBUTES * pSecurityAttr);
+
+ /*
+ * TheadFunction - To spawan as thread - Invokes registered service function
+ */
+ unsigned WINAPI ThreadFunction (LPVOID lpParam);
+
+ /*
+ * Service STOP function registration with this framewrok
+ * * this function must be invoked before calling RunAsService
+ */
+ VOID RegisterStopFunction (VOID (*StopFunc) (VOID));
+
+#ifdef __cplusplus
+}
+#endif /* */
+#endif /* WINSERVICE_H */
+