]> xenbits.xensource.com Git - pvdrivers/win/xeniface.git/commitdiff
[CA-119964] Add (excessive) event logging to id potential WMI failures
authorBen Chalmers <Ben.Chalmers@citrix.com>
Mon, 30 Dec 2013 09:33:06 +0000 (09:33 +0000)
committerBen Chalmers <Ben.Chalmers@citrix.com>
Mon, 30 Dec 2013 09:37:42 +0000 (09:37 +0000)
Signed-off-by: Ben Chalmers <Ben.Chalmers@citrix.com>
src/win32stubagent/XService.cpp
src/win32stubagent/messages.mc

index f15889e7a08a26550a26d6f84d96a5ba14dbd4f4..44931a916c5552ae23fbed23d91d4a82bfeae55e 100644 (file)
@@ -62,6 +62,7 @@ static ULONG WindowsVersion;
 static BOOL LegacyHal = FALSE;
 static HINSTANCE local_hinstance;
 
+HANDLE eventLog;
 #define SIZECHARS(x) (sizeof((x))/sizeof(TCHAR))
 
 // Internal routines
@@ -371,7 +372,6 @@ static BOOL maybeReboot(void *ctx)
     BOOL res;
     enum XShutdownType type;
     int cntr = 0;
-    HANDLE eventLog;
 
     XsLog("Check if we need to shutdown");
 
@@ -399,7 +399,6 @@ static BOOL maybeReboot(void *ctx)
        and it can't do any harm. */
     AcquireSystemShutdownPrivilege();
 
-    eventLog = RegisterEventSource(NULL, "xensvc");
     if (eventLog) {
         DWORD eventId;
 
@@ -419,7 +418,6 @@ static BOOL maybeReboot(void *ctx)
         }
         ReportEvent(eventLog, EVENTLOG_SUCCESS, 0, eventId, NULL, 0, 0,
                     NULL, NULL);
-        DeregisterEventSource(eventLog);
     }
 
     XsLog("Do the shutdown");
@@ -585,6 +583,9 @@ BOOL Run()
     }
     XsLog("Guest agent lite main loop starting");
 
+    if (eventLog == NULL)
+        XsLog("Event log was not initialised");
+
     memset(&features, 0, sizeof(features));
 
     HANDLE wmierrorEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
@@ -658,6 +659,10 @@ BOOL Run()
             }
             else if (event == suspendEvent)
             {
+                if (!ReportEvent(eventLog, EVENTLOG_SUCCESS, 0, EVENT_XENUSER_UNSUSPENDED, NULL, 0, 0,
+                            NULL, NULL)) {
+                    XsLog("Cannot send to event log %x",GetLastError());    
+                }
                 XsLog("Suspend event");
                 finishSuspend();
                 AdvertiseFeatures(&features);
@@ -666,6 +671,8 @@ BOOL Run()
             }
             else if (event == wmierrorEvent)
             {
+                ReportEvent(eventLog, EVENTLOG_SUCCESS, 0, EVENT_XENUSER_WMI, NULL, 0, 0,
+                            NULL, NULL);
                 break;
             }
             else
@@ -688,6 +695,8 @@ BOOL Run()
                 }
                 if (fail) {
                     XsLog("Resetting");
+                ReportEvent(eventLog, EVENTLOG_SUCCESS, 0, EVENT_XENUSER_UNEXPECTED, NULL, 0, 0,
+                            NULL, NULL);
                     break;
                 }
             }
@@ -746,6 +755,7 @@ bool ServiceInit()
 void WINAPI ServiceMain(int argc, char** argv)
 {
     // Perform common initialization
+    eventLog = RegisterEventSource(NULL, "xensvc");
     hServiceExitEvent = CreateEvent(NULL, false, false, NULL);
     if (hServiceExitEvent == NULL)
     {
@@ -774,6 +784,7 @@ void WINAPI ServiceMain(int argc, char** argv)
     
     XsLog("Guest agent service stopped");
     ShutdownXSAccessor();
+    DeregisterEventSource(eventLog);
     ServiceControlManagerUpdate(0, SERVICE_STOPPED);
     return;
 }
index 8034ca8ee53bb2adeb59eeed0dce8993bbcc90e2..0289c448932775dde3d7fc1300851e00c7cc2c2c 100644 (file)
@@ -32,3 +32,35 @@ SymbolicName=EVENT_XENUSER_S3
 Language=English
 The tools requested that the local VM enter power state S3.
 .
+
+MessageId=0x0005
+Facility=XenUser
+Severity=Informational
+SymbolicName=EVENT_XENUSER_WMI
+Language=English
+The tools noticed that WMI became non-functional.
+.
+
+MessageId=0x0006
+Facility=XenUser
+Severity=Informational
+SymbolicName=EVENT_XENUSER_STARTED
+Language=English
+The tools initiated.
+.
+
+MessageId=0x0007
+Facility=XenUser
+Severity=Informational
+SymbolicName=EVENT_XENUSER_UNSUSPENDED
+Language=English
+The tools returned from suspend.
+.
+
+MessageId=0x0008
+Facility=XenUser
+Severity=Informational
+SymbolicName=EVENT_XENUSER_UNEXPECTED
+Language=English
+The tools experienced an unexpected error.
+.