Better handling of some service functions.
diff --git a/include/winsvc.h b/include/winsvc.h
index fe37ead..572a958 100644
--- a/include/winsvc.h
+++ b/include/winsvc.h
@@ -178,12 +178,64 @@
LPWSTR lpDisplayName;
} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
+/* defines and structures for ChangeServiceConfig2 */
+#define SERVICE_CONFIG_DESCRIPTION 1
+#define SERVICE_CONFIG_FAILURE_ACTIONS 2
+
+typedef struct _SERVICE_DESCRIPTIONA {
+ LPSTR lpDescription;
+} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
+
+typedef struct _SERVICE_DESCRIPTIONW {
+ LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_DESCRIPTION)
+DECL_WINELIB_TYPE_AW(LPSERVICE_DESCRIPTION)
+
+typedef enum _SC_ACTION_TYPE {
+ SC_ACTION_NONE = 0,
+ SC_ACTION_RESTART = 1,
+ SC_ACTION_REBOOT = 2,
+ SC_ACTION_RUN_COMMAND = 3
+} SC_ACTION_TYPE;
+
+typedef struct _SC_ACTION {
+ SC_ACTION_TYPE Type;
+ DWORD Delay;
+} SC_ACTION,*LPSC_ACTION;
+
+typedef struct _SERVICE_FAILURE_ACTIONSA {
+ DWORD dwResetPeriod;
+ LPSTR lpRebootMsg;
+ LPSTR lpCommand;
+ DWORD cActions;
+ SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
+
+typedef struct _SERVICE_FAILURE_ACTIONSW {
+ DWORD dwResetPeriod;
+ LPWSTR lpRebootMsg;
+ LPWSTR lpCommand;
+ DWORD cActions;
+ SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
+
+DECL_WINELIB_TYPE_AW(SERVICE_FAILURE_ACTIONS)
+DECL_WINELIB_TYPE_AW(LPSERVICE_FAILURE_ACTIONS)
+
/* Service control handler function prototype */
typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD);
/* API function prototypes */
+BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+#define ChangeServiceConfig WINELIB_NAME_AW(ChangeServiceConfig)
+BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
+BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
+#define ChangeServiceConfig2 WINELIB_NAME_AW(ChangeServiceConfig2)
BOOL WINAPI CloseServiceHandle(SC_HANDLE);
BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,