From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Bin Meng <bmeng.cn@gmail.com>
Cc: Yan Vugenfirer <yvugenfi@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Bin Meng <bin.meng@windriver.com>,
Xuzhou Cheng <xuzhou.cheng@windriver.com>,
Stefan Weil <sw@weilnetz.de>
Subject: Re: [PATCH 2/5] util/oslib-win32: Add a helper to get the Windows version
Date: Wed, 27 Jul 2022 10:59:56 +0100 [thread overview]
Message-ID: <YuEMnI/Sji1/r7bk@redhat.com> (raw)
In-Reply-To: <CAEUhbmWv1zdYFJ-ojWxH_KnJygS2ceQyPPBvDwQ4rEqzR534EQ@mail.gmail.com>
On Wed, Jul 27, 2022 at 05:38:27PM +0800, Bin Meng wrote:
> On Wed, Jul 27, 2022 at 4:50 PM Yan Vugenfirer <yvugenfi@redhat.com> wrote:
> >
> > On Wed, Jul 27, 2022 at 10:43 AM Bin Meng <bmeng.cn@gmail.com> wrote:
> > >
> > > 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>
> > > ---
> > >
> > > 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);
> > The original function, when it was present in qemu-ga, tested that
> > getting the function address succeeded.
> > I think this test should be kept.
> > See below:
> > - PVOID fun = GetProcAddress(module, "RtlGetVersion");
> > - if (fun == NULL) {
> > - error_setg(errp, QERR_QGA_COMMAND_FAILED,
> > - "Failed to get address of RtlGetVersion");
> > - return;
> > - }
> >
>
> Please see the comment:
>
> /* RtlGetVersion is available starting with Windows 2000 */
>
> I don't think we need that check.
In include/qemu/osdep.h we have
/* as defined in sdkddkver.h */
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601 /* Windows 7 API (should be in sync with glib) */
#endif
so do we even need to have the GetProcAddress calls at all ?
Surely we can just '#include <ddk/ntddk.h>' and call
RtlGetVersion directly at compile time ?
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2022-07-27 10:05 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-27 7:35 [PATCH 0/5] Enable unix socket support on Windows Bin Meng
2022-07-27 7:35 ` [PATCH 1/5] util/qemu-sockets: Replace the call to close a socket with closesocket() Bin Meng
2022-07-27 7:35 ` [PATCH 2/5] util/oslib-win32: Add a helper to get the Windows version Bin Meng
2022-07-27 8:50 ` Yan Vugenfirer
2022-07-27 9:38 ` Bin Meng
2022-07-27 9:59 ` Daniel P. Berrangé [this message]
2022-07-27 10:57 ` Yan Vugenfirer
2022-07-27 11:55 ` Bin Meng
2022-07-27 12:53 ` Daniel P. Berrangé
2022-07-27 13:15 ` Bin Meng
2022-07-27 13:18 ` Konstantin Kostiuk
2022-07-27 13:21 ` Bin Meng
2022-07-27 7:35 ` [PATCH 3/5] qga/commands-win32: Use os_get_win_version() Bin Meng
2022-07-27 8:59 ` Konstantin Kostiuk
2022-07-27 7:35 ` [PATCH 4/5] util/qemu-sockets: Enable unix socket support on Windows Bin Meng
2022-07-27 8:50 ` Yan Vugenfirer
2022-07-27 9:58 ` Bin Meng
2022-07-27 8:53 ` Konstantin Kostiuk
2022-07-27 10:01 ` Bin Meng
2022-07-28 13:11 ` Marc-André Lureau
2022-07-28 13:41 ` Bin Meng
2022-07-27 7:35 ` [PATCH 5/5] chardev/char-socket: Update AF_UNIX for Windows Bin Meng
2022-07-27 9:06 ` [PATCH 0/5] Enable unix socket support on Windows Daniel P. Berrangé
2022-07-27 10:15 ` Bin Meng
2022-07-27 10:24 ` Daniel P. Berrangé
2022-07-27 11:37 ` Bin Meng
2022-07-27 11:45 ` Stefan Weil via
2022-07-27 12:17 ` 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=YuEMnI/Sji1/r7bk@redhat.com \
--to=berrange@redhat.com \
--cc=bin.meng@windriver.com \
--cc=bmeng.cn@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
--cc=xuzhou.cheng@windriver.com \
--cc=yvugenfi@redhat.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.