From nobody Mon Feb 9 16:19:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1641823552; cv=none; d=zohomail.com; s=zohoarc; b=NS553G2W+xJSEa2y//ut0Rzu/2nDubZKXRJ+zSXBKMlxNrxjuUgyC3P2IhuC3XT5CkNj/S43zFVrS5oJ5ehT2zAdwQAqaccFC/S055zEFLzemTstGxlg7670Vhm2vjUxUa9srftC2T453dhkT788uC7VQQp6Liz3Q6IL4Bk+Xt8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641823552; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IcTXArrUysVq5WZf7Ot3TfG9SgPurVupPsFDLKdzNZ8=; b=PXZfp2wjG7rYabCcfA0R3/4tJuyEUOiYvuT7lwUuTMC8AzeTXu/tfzkWi/Zw+4UrgC6dDTy/x4JO3eacuISLo7cxR6oU7477pPlGUigLVZRXCc45unrjYlTUzNwqPFGTUBBoCSK3lZ7NqyrD9BxL5x5vxnrroukxs2sfshbd7Nw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164182355288862.49154160712965; Mon, 10 Jan 2022 06:05:52 -0800 (PST) Received: from localhost ([::1]:47836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n6vJ0-0006gC-DP for importer@patchew.org; Mon, 10 Jan 2022 09:05:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39128) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6v0q-0002VO-33 for qemu-devel@nongnu.org; Mon, 10 Jan 2022 08:47:04 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:31990) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6v0o-000751-9I for qemu-devel@nongnu.org; Mon, 10 Jan 2022 08:47:03 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-512-OGRqbuqsMi2HEtfiEmMBWA-1; Mon, 10 Jan 2022 08:47:00 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9417583DD21; Mon, 10 Jan 2022 13:46:59 +0000 (UTC) Received: from kostyanf14nb.Dlink (unknown [10.40.193.252]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AE3D57BB41; Mon, 10 Jan 2022 13:46:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641822421; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IcTXArrUysVq5WZf7Ot3TfG9SgPurVupPsFDLKdzNZ8=; b=SgPJ3QdonmDfKgYua/Lp8Xkps70bvVkI1PEc+Wxt/4JFhpylHkEeCPCIqHSURjw1PPEjKo RUB4uKrL5CzNy89udvzryQSn7rR74fnKl6W1XbcnDS2SbJPzKlbJdupqqUKED01OTE5qKu cXs4ft83KuJ+N2LCkKdgo5yqOIA8zN8= X-MC-Unique: OGRqbuqsMi2HEtfiEmMBWA-1 From: Konstantin Kostiuk To: qemu-devel@nongnu.org, Peter Maydell Subject: [PULL 9/9] qga-win: Detect Windows 11 by build number Date: Mon, 10 Jan 2022 15:46:44 +0200 Message-Id: <20220110134644.107375-10-kkostiuk@redhat.com> In-Reply-To: <20220110134644.107375-1-kkostiuk@redhat.com> References: <20220110134644.107375-1-kkostiuk@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kkostiuk@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=kkostiuk@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.597, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1641823554073100001 From: Kostiantyn Kostiuk Windows 10 and 11 have the same major and minor versions. So, the only way to determine the correct version is to use the build number. After this commit, the guest agent will return the proper "version" and "version-id" for Windows 11. The "pretty-name" is read from the registry and will be incorrect until the MS updates the registry. We only can create some workaround and replace 10 to 11. Signed-off-by: Kostiantyn Kostiuk Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Kostiantyn Kostiuk --- qga/commands-win32.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 3f60419419..484cb1c6bd 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -2170,7 +2170,7 @@ typedef struct _ga_matrix_lookup_t { char const *version_id; } ga_matrix_lookup_t; =20 -static ga_matrix_lookup_t const WIN_VERSION_MATRIX[2][8] =3D { +static ga_matrix_lookup_t const WIN_VERSION_MATRIX[2][7] =3D { { /* Desktop editions */ { 5, 0, "Microsoft Windows 2000", "2000"}, @@ -2179,7 +2179,6 @@ static ga_matrix_lookup_t const WIN_VERSION_MATRIX[2]= [8] =3D { { 6, 1, "Microsoft Windows 7" "7"}, { 6, 2, "Microsoft Windows 8", "8"}, { 6, 3, "Microsoft Windows 8.1", "8.1"}, - {10, 0, "Microsoft Windows 10", "10"}, { 0, 0, 0} },{ /* Server editions */ @@ -2189,24 +2188,29 @@ static ga_matrix_lookup_t const WIN_VERSION_MATRIX[= 2][8] =3D { { 6, 2, "Microsoft Windows Server 2012", "2012"}, { 6, 3, "Microsoft Windows Server 2012 R2", "2012r2"}, { 0, 0, 0}, - { 0, 0, 0}, { 0, 0, 0} } }; =20 -typedef struct _ga_win_10_0_server_t { +typedef struct _ga_win_10_0_t { int first_build; char const *version; char const *version_id; -} ga_win_10_0_server_t; +} ga_win_10_0_t; =20 -static ga_win_10_0_server_t const WIN_10_0_SERVER_VERSION_MATRIX[4] =3D { +static ga_win_10_0_t const WIN_10_0_SERVER_VERSION_MATRIX[4] =3D { {14393, "Microsoft Windows Server 2016", "2016"}, {17763, "Microsoft Windows Server 2019", "2019"}, {20344, "Microsoft Windows Server 2022", "2022"}, {0, 0} }; =20 +static ga_win_10_0_t const WIN_10_0_CLIENT_VERSION_MATRIX[3] =3D { + {10240, "Microsoft Windows 10", "10"}, + {22000, "Microsoft Windows 11", "11"}, + {0, 0} +}; + static void ga_get_win_version(RTL_OSVERSIONINFOEXW *info, Error **errp) { typedef NTSTATUS(WINAPI *rtl_get_version_t)( @@ -2234,10 +2238,11 @@ static char *ga_get_win_name(OSVERSIONINFOEXW const= *os_version, bool id) DWORD build =3D os_version->dwBuildNumber; int tbl_idx =3D (os_version->wProductType !=3D VER_NT_WORKSTATION); ga_matrix_lookup_t const *table =3D WIN_VERSION_MATRIX[tbl_idx]; - ga_win_10_0_server_t const *win_10_0_table =3D WIN_10_0_SERVER_VERSION= _MATRIX; - ga_win_10_0_server_t const *win_10_0_version =3D NULL; + ga_win_10_0_t const *win_10_0_table =3D tbl_idx ? + WIN_10_0_SERVER_VERSION_MATRIX : WIN_10_0_CLIENT_VERSION_MATRIX; + ga_win_10_0_t const *win_10_0_version =3D NULL; while (table->version !=3D NULL) { - if (major =3D=3D 10 && minor =3D=3D 0 && tbl_idx) { + if (major =3D=3D 10 && minor =3D=3D 0) { while (win_10_0_table->version !=3D NULL) { if (build >=3D win_10_0_table->first_build) { win_10_0_version =3D win_10_0_table; --=20 2.25.1