All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bmeng.cn@gmail.com>
To: qemu-devel@nongnu.org
Cc: Bin Meng <bin.meng@windriver.com>,
	Xuzhou Cheng <xuzhou.cheng@windriver.com>,
	Stefan Weil <sw@weilnetz.de>
Subject: [PATCH v2 2/6] util/oslib-win32: Add a helper to get the Windows version
Date: Wed, 27 Jul 2022 21:27:58 +0800	[thread overview]
Message-ID: <20220727132802.812580-3-bmeng.cn@gmail.com> (raw)
In-Reply-To: <20220727132802.812580-1-bmeng.cn@gmail.com>

From: Bin Meng <bin.meng@windriver.com>

This adds a helper to get the Windows version via the RtlGetVersion
call, for QEMU codes to determine the Windows version at run-time.

Signed-off-by: Xuzhou Cheng <xuzhou.cheng@windriver.com>
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---

(no changes since v1)

 include/sysemu/os-win32.h |  2 ++
 util/oslib-win32.c        | 15 +++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index edc3b38a57..1e324026a4 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -204,6 +204,8 @@ ssize_t qemu_recv_wrap(int sockfd, void *buf, size_t len, int flags);
 ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags,
                            struct sockaddr *addr, socklen_t *addrlen);
 
+void os_get_win_version(RTL_OSVERSIONINFOEXW *info);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 5723d3eb4c..6d2387b9ff 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -547,3 +547,18 @@ int qemu_msync(void *addr, size_t length, int fd)
      */
     return qemu_fdatasync(fd);
 }
+
+void os_get_win_version(RTL_OSVERSIONINFOEXW *info)
+{
+    typedef LONG (WINAPI *rtl_get_version_t)(PRTL_OSVERSIONINFOEXW);
+
+    /* RtlGetVersion is available starting with Windows 2000 */
+    HMODULE module = GetModuleHandle("ntdll");
+    PVOID fun = GetProcAddress(module, "RtlGetVersion");
+    rtl_get_version_t rtl_get_version = (rtl_get_version_t)fun;
+
+    info->dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW);
+    rtl_get_version(info);
+
+    return;
+}
-- 
2.34.1



  parent reply	other threads:[~2022-07-27 13:36 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 13:27 [PATCH v2 0/6] Enable unix socket support on Windows Bin Meng
2022-07-27 13:27 ` [PATCH v2 1/6] util/qemu-sockets: Replace the call to close a socket with closesocket() Bin Meng
2022-07-28 12:51   ` Marc-André Lureau
2022-07-27 13:27 ` Bin Meng [this message]
2022-07-28 12:54   ` [PATCH v2 2/6] util/oslib-win32: Add a helper to get the Windows version Marc-André Lureau
2022-07-27 13:27 ` [PATCH v2 3/6] qga/commands-win32: Use os_get_win_version() Bin Meng
2022-07-28 12:55   ` Marc-André Lureau
2022-07-27 13:28 ` [PATCH v2 4/6] util/qemu-sockets: Enable unix socket support on Windows Bin Meng
2022-07-27 13:28 ` [PATCH v2 5/6] chardev/char-socket: Update AF_UNIX for Windows Bin Meng
2022-07-28 13:03   ` Marc-André Lureau
2022-07-27 13:28 ` [PATCH v2 6/6] tests/unit: Update test-io-channel-socket.c " Bin Meng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220727132802.812580-3-bmeng.cn@gmail.com \
    --to=bmeng.cn@gmail.com \
    --cc=bin.meng@windriver.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    --cc=xuzhou.cheng@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.