Allow service editing on the command line.
[nssm.git] / settings.h
diff --git a/settings.h b/settings.h
new file mode 100644 (file)
index 0000000..71e31d1
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#define NSSM_NATIVE_DESCRIPTION _T("Description")
+#define NSSM_NATIVE_DISPLAYNAME _T("DisplayName")
+#define NSSM_NATIVE_IMAGEPATH _T("ImagePath")
+#define NSSM_NATIVE_OBJECTNAME _T("ObjectName")
+#define NSSM_NATIVE_STARTUP _T("Start")
+#define NSSM_NATIVE_TYPE _T("Type")
+
+/* Are additional arguments needed? */
+#define ADDITIONAL_GETTING (1 << 0)
+#define ADDITIONAL_SETTING (1 << 1)
+#define ADDITIONAL_RESETTING (1 << 2)
+#define ADDITIONAL_CRLF (1 << 3)
+#define ADDITIONAL_MANDATORY ADDITIONAL_GETTING|ADDITIONAL_SETTING|ADDITIONAL_RESETTING
+
+typedef union {
+  unsigned long numeric;
+  TCHAR *string;
+} value_t;
+
+typedef int (*setting_function_t)(const TCHAR *, void *, const TCHAR *, void *, value_t *, const TCHAR *);
+
+typedef struct {
+  const TCHAR *name;
+  unsigned long type;
+  void *default_value;
+  bool native;
+  int additional;
+  setting_function_t set;
+  setting_function_t get;
+} settings_t;
+
+int set_setting(const TCHAR *, HKEY, settings_t *, value_t *, const TCHAR *);
+int set_setting(const TCHAR *, SC_HANDLE, settings_t *, value_t *, const TCHAR *);
+int get_setting(const TCHAR *, HKEY, settings_t *, value_t *, const TCHAR *);
+int get_setting(const TCHAR *, SC_HANDLE, settings_t *, value_t *, const TCHAR *);
+
+#endif