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,