Alexandre Julliard : services: Add stub implementation for SERVICE_CONFIG_FAILURE_ACTIONS in ChangeServiceConfig2W .

Alexandre Julliard julliard at winehq.org
Tue Jan 27 09:07:52 CST 2009


Module: wine
Branch: master
Commit: 746948551a1e49c9d5eb00ef3e7a29c077e5e695
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=746948551a1e49c9d5eb00ef3e7a29c077e5e695

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Jan 27 11:27:45 2009 +0100

services: Add stub implementation for SERVICE_CONFIG_FAILURE_ACTIONS in ChangeServiceConfig2W.

---

 include/wine/svcctl.idl |   29 ++++++++++++++++++++++++++++-
 programs/services/rpc.c |    7 ++++++-
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/include/wine/svcctl.idl b/include/wine/svcctl.idl
index 36bf476..1e9aae2 100644
--- a/include/wine/svcctl.idl
+++ b/include/wine/svcctl.idl
@@ -94,13 +94,40 @@ typedef struct _SERVICE_DESCRIPTIONW {
    LPWSTR lpDescription;
 } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
 
-#define SERVICE_CONFIG_DESCRIPTION 1
+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_ACTIONSW {
+    DWORD dwResetPeriod;
+    [unique] LPWSTR lpRebootMsg;
+    [unique] LPWSTR lpCommand;
+    DWORD cActions;
+    [size_is(cActions)] SC_ACTION *lpsaActions;
+} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
+
+#define SERVICE_CONFIG_DESCRIPTION              1
+#define SERVICE_CONFIG_FAILURE_ACTIONS          2
+#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO  3
+#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG     4
+#define SERVICE_CONFIG_SERVICE_SID_INFO         5
+#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
+#define SERVICE_CONFIG_PRESHUTDOWN_INFO         7
 
 cpp_quote("#endif")
 
 typedef [switch_type(DWORD)] union
 {
   [case (SERVICE_CONFIG_DESCRIPTION)] SERVICE_DESCRIPTIONW descr;
+  [case (SERVICE_CONFIG_FAILURE_ACTIONS)] SERVICE_FAILURE_ACTIONSW actions;
 } SERVICE_CONFIG2W;
 
     /* Compatible with Windows function 0x00 */
diff --git a/programs/services/rpc.c b/programs/services/rpc.c
index cbb825e..9fd66a2 100644
--- a/programs/services/rpc.c
+++ b/programs/services/rpc.c
@@ -631,7 +631,12 @@ DWORD svcctl_ChangeServiceConfig2W( SC_RPC_HANDLE hService, DWORD level, SERVICE
             service_unlock( service->service_entry );
         }
         break;
-
+    case SERVICE_CONFIG_FAILURE_ACTIONS:
+        WINE_FIXME( "SERVICE_CONFIG_FAILURE_ACTIONS not implemented: period %u msg %s cmd %s\n",
+                    config->actions.dwResetPeriod,
+                    wine_dbgstr_w(config->actions.lpRebootMsg),
+                    wine_dbgstr_w(config->actions.lpCommand) );
+        break;
     default:
         WINE_FIXME("level %u not implemented\n", level);
         err = ERROR_INVALID_LEVEL;




More information about the wine-cvs mailing list