|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] XENBUS_MONITOR refinements
Use a string table for the dialog message rather than coding it inline.
Also, trim the DisplayName pulled from the registry because Windows 10
seems to prefix it with useless tags.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
src/monitor/messages.mc | 30 ++++++++++++++++++++++++++++++
src/monitor/monitor.c | 37 +++++++++++++++++++++++++++----------
src/monitor/strings.h | 37 +++++++++++++++++++++++++++++++++++++
src/monitor/strings.rc | 37 +++++++++++++++++++++++++++++++++++++
src/monitor/xenbus_monitor.rc | 2 +-
5 files changed, 132 insertions(+), 11 deletions(-)
create mode 100644 src/monitor/strings.h
create mode 100644 src/monitor/strings.rc
diff --git a/src/monitor/messages.mc b/src/monitor/messages.mc
index ab49243..9fff135 100644
--- a/src/monitor/messages.mc
+++ b/src/monitor/messages.mc
@@ -1,3 +1,33 @@
+; // Copyright (c) Citrix Systems Inc.
+; // All rights reserved.
+; //
+; // Redistribution and use in source and binary forms,
+; // with or without modification, are permitted provided
+; // that the following conditions are met:
+; //
+; // * Redistributions of source code must retain the above
+; // copyright notice, this list of conditions and the
+; // following disclaimer.
+; // * Redistributions in binary form must reproduce the above
+; // copyright notice, this list of conditions and the
+; // following disclaimer in the documentation and/or other
+; // materials provided with the distribution.
+; //
+; // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+; // CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+; // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+; // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+; // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+; // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+; // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+; // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+; // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+; // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+; // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+; // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+; // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+; // SUCH DAMAGE.
+
MessageIdTypedef=DWORD
SeverityNames=(
diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index 9e4555f..9a4f4f9 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -40,6 +40,7 @@
#include <version.h>
#include "messages.h"
+#include "strings.h"
#define MONITOR_NAME __MODULE__
#define MONITOR_DISPLAYNAME MONITOR_NAME
@@ -316,9 +317,11 @@ PromptForReboot(
DWORD MaxValueLength;
DWORD DisplayNameLength;
PTCHAR DisplayName;
+ PTCHAR Description;
DWORD Type;
TCHAR Title[] = TEXT(VENDOR_NAME_STR);
TCHAR Message[MAXIMUM_BUFFER_SIZE];
+ DWORD Length;
PWTS_SESSION_INFO SessionInfo;
DWORD Count;
DWORD Index;
@@ -382,16 +385,27 @@ PromptForReboot(
goto fail5;
}
+ Description = _tcsrchr(DisplayName, ';');
+ if (Description == NULL)
+ Description = DisplayName;
+ else
+ Description++;
+
Result = StringCbPrintf(Message,
MAXIMUM_BUFFER_SIZE,
- TEXT("%s needs to restart the system to "
- "complete installation.\n"
- "Press 'Yes' to restart the system "
- "now or 'No' if you plan to restart "
- "the system later.\n"),
- DisplayName);
+ TEXT("%s "),
+ Description);
assert(SUCCEEDED(Result));
+ Length = (DWORD)_tcslen(Message);
+
+ Length = LoadString(GetModuleHandle(NULL),
+ IDS_DIALOG,
+ Message + Length,
+ ARRAYSIZE(Message) - Length);
+ if (Length == 0)
+ goto fail6;
+
Success = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,
0,
1,
@@ -399,7 +413,7 @@ PromptForReboot(
&Count);
if (!Success)
- goto fail6;
+ goto fail7;
for (Index = 0; Index < Count; Index++) {
DWORD SessionId = SessionInfo[Index].SessionId;
@@ -427,7 +441,7 @@ PromptForReboot(
TRUE);
if (!Success)
- goto fail7;
+ goto fail8;
Context->RebootPending = TRUE;
@@ -447,11 +461,14 @@ PromptForReboot(
return;
-fail7:
- Log("fail7");
+fail8:
+ Log("fail8");
WTSFreeMemory(SessionInfo);
+fail7:
+ Log("fail7");
+
fail6:
Log("fail6");
diff --git a/src/monitor/strings.h b/src/monitor/strings.h
new file mode 100644
index 0000000..76ef975
--- /dev/null
+++ b/src/monitor/strings.h
@@ -0,0 +1,37 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _MONITOR_STRINGS_H_
+#define _MONITOR_STRINGS_H_
+
+#define IDS_DIALOG 1
+
+#endif // _MONITOR_STRINGS_H_
diff --git a/src/monitor/strings.rc b/src/monitor/strings.rc
new file mode 100644
index 0000000..99d4fc1
--- /dev/null
+++ b/src/monitor/strings.rc
@@ -0,0 +1,37 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "strings.h"
+
+STRINGTABLE
+{
+ IDS_DIALOG, "needs to restart the system to complete
installation.\nPress 'Yes' to restart the system now or 'No' if you plan to
restart the system later."
+}
\ No newline at end of file
diff --git a/src/monitor/xenbus_monitor.rc b/src/monitor/xenbus_monitor.rc
index 1948657..96247e3 100644
--- a/src/monitor/xenbus_monitor.rc
+++ b/src/monitor/xenbus_monitor.rc
@@ -29,7 +29,6 @@
* SUCH DAMAGE.
*/
-
#include <windows.h>
#include <ntverp.h>
@@ -55,3 +54,4 @@
#include "common.ver"
#include "messages.rc"
+#include "strings.rc"
--
2.1.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |