From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (NAM02-DM3-obe.outbound.protection.outlook.com [40.92.43.15]) by mx.groups.io with SMTP id smtpd.web12.2076.1597172280189970587 for ; Tue, 11 Aug 2020 11:58:00 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=gFnarNh/; spf=pass (domain: outlook.com, ip: 40.92.43.15, mailfrom: michael.kubacki@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PSmB0X15ETNhrrUBI+YYN7dv1Taf8nDRY/73xcX7qSVzVEnHgqrCMGGLMtbuuigVS1/ZexYr1mCL5Gd59J4kKh6ebMr/Nb2er/yyED5IAuJyEVRKL4D+ckKw1lMe2IcPjWfB+WCEXJmOeFuf0IV0TBc/UD26ULBYRglzaQSzddjboK76bspyAoPrzBoM5saznmQy+eAaZXgGIUBJ+VZE15LhPbfxwsfbcJoJ18bVddS7RF975XsWCgfz8jUo3srmW5wkzf4rTqCk7HYssTYweYOzhK342BIMNcDh9NMGkskZy01iJ/MsJ7ZnDDhqiL+vmWUdfUKxGK+eiNnR4Pvk7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WbTmxHTc49uVgdPEP1H3AQVIULlDkLRonDWiNFnhYWo=; b=UiOzFfAowePagnT6VEpnGFdOx3U3xX/b7mLt2xf0cIYNi9rXhcU5k9K/h9I58/2y4yDyFp+5RUGw7/VsA56FB2UriNteBTHim/6a33WHO0U/YlKfvLfCbsKF+Hc7I4HNC/R/MKnT3OeSqTidV1wQZxar3v2F5Ohw6EBxrJrx9JZ0nQwMUGVDDMTudnzy8KpTmhumkBCfOPT6DP+7s27mj3IEOtv4fNrCYGxwqtMAk3TFYUxJLTCo26V8IF2meQqXicIyLjIFptaa3sP0dmBZBY+j6hjbiVbCDWLK33azJ1O9sATLRDtc5DySi9/0fFUJ2PcPjf6/Dk3GoCO4kVc6Ug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WbTmxHTc49uVgdPEP1H3AQVIULlDkLRonDWiNFnhYWo=; b=gFnarNh/M/X1ZdeBZqY3lp6Ss2MK60EriVKM53ED2HCIkMDoaZIIGcHof60M+bJzckrviCzg4gfqGtZdTFHdKB1Yzjk2QiFPzcR18j2WEbhnseB5NzOZ+e5haZ9LE02fDd9WmwyjxzsuE4z8fhbJlqa4F6aRTrchyQx7+X929qNTeGKc3IAxROTJXZ68Ly0HMQmaH17u3nAGnrx1ekDfX74WC+ppbvEKRh4RiSki3Tfs2bqTCAbCWH8okrwJeDyFdqvhcFV1cNNF8Ju2/oGhO5+ox/wioYUS+65WGjDRdIOmUfdqHoTBBU34uL/XLZ6IjXuGILmjvsMAZp5ajmyYEQ== Received: from BL2NAM02FT006.eop-nam02.prod.protection.outlook.com (10.152.76.56) by BL2NAM02HT026.eop-nam02.prod.protection.outlook.com (10.152.76.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.19; Tue, 11 Aug 2020 18:57:58 +0000 Received: from MWHPR07MB3440.namprd07.prod.outlook.com (2a01:111:e400:7e46::45) by BL2NAM02FT006.mail.protection.outlook.com (2a01:111:e400:7e46::239) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.19 via Frontend Transport; Tue, 11 Aug 2020 18:57:58 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:585596079140F8DB9B4B7A70DD75776BFEB58494FD9B5C305E49D8EA0B55D122;UpperCasedChecksum:5BC37E4F8D46A2D813C276BFAF8AB346C80E6D4E45D5E395275E242F457C6075;SizeAsReceived:9370;Count:49 Received: from MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::9856:570e:1735:974e]) by MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::9856:570e:1735:974e%7]) with mapi id 15.20.3261.025; Tue, 11 Aug 2020 18:57:58 +0000 Subject: Re: [edk2-devel] [PATCH v2 2/6] FmpDevicePkg: Add LastAttemptStatus.h From: "Michael Kubacki" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Kinney, Michael D" , "Jiang, Guomin" , "Xu, Wei6" References: <20200810202753.1318-1-michael.kubacki@outlook.com> Message-ID: Date: Tue, 11 Aug 2020 11:57:59 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 In-Reply-To: X-ClientProxiedBy: MWHPR13CA0003.namprd13.prod.outlook.com (2603:10b6:300:16::13) To MWHPR07MB3440.namprd07.prod.outlook.com (2603:10b6:301:69::28) Return-Path: michael.kubacki@outlook.com X-Microsoft-Original-Message-ID: <89c222a8-dc06-fb43-4aa4-42ff384288ee@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2001:4898:d8:39:d0d9:4dc5:3f5b:4b78] (2001:4898:80e8:b:50f7:4dc5:3f5b:4b78) by MWHPR13CA0003.namprd13.prod.outlook.com (2603:10b6:300:16::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3283.10 via Frontend Transport; Tue, 11 Aug 2020 18:57:58 +0000 X-Microsoft-Original-Message-ID: <89c222a8-dc06-fb43-4aa4-42ff384288ee@outlook.com> X-TMN: [3BmAiRlIVAlWU1IKDf3+UJ8DqyV+pV6jqWsA/c56YAtjx3rYKB5/aPqx36pmnhW+] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 49 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: d2b94737-f64b-456a-1c73-08d83e2876b3 X-MS-TrafficTypeDiagnostic: BL2NAM02HT026: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5jYpr1aKLBsXTEQQ7RBjTpUxFcpBagg4qG83LgIqWIxTzQyNPSMp8GtfMyhBb4+J1+vBLrH7/1DmNR8hS+GO8bN+E9POs2HVYVPGjbVMnT4zfVdLtuALAenici4C4qQckeXTLfSKBlRCFalJpE7jeayyYoQXg864hZUypx06N4Bz1nu5d2beFtA0VUGF2gUni1RSDeBSfFnHxIuE44O1pxx46zP75fDntAJMXMUk9iYZBXPwVnMjhS7FNv3USUlM X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:0;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR07MB3440.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:;DIR:OUT;SFP:1901; X-MS-Exchange-AntiSpam-MessageData: m8+u8PcUYpe9VHOxbXYFR8QiKMd2DP43sYjRFN+0mbOMbT1umwqtzHMS/PJIENC6e/jnfO9KP1wqeK+bh8201YZXRprfoFSSMs0CdVvgCkGTp7KQWJVaZzfYlKvoySS0Pc9//EPW5Cj+cRUk75dEXuBInL3O/nqmpYQdW17FvL+kEfXTAyatsZuUFYkHRzy7af8RZ4zOXZ2otekn0WCFjg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2b94737-f64b-456a-1c73-08d83e2876b3 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2020 18:57:58.6617 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: BL2NAM02FT006.eop-nam02.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2NAM02HT026 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable I realized there is room for misinterpretation of the macros=20 LAST_ATTEMPT_STATUS_DRIVER_ERROR_COUNT and=20 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_COUNT based on name. If there's no further feedback on the topic, I'll change them to=20 LAST_ATTEMPT_STATUS_DRIVER_ERROR_RANGE_LENGTH and=20 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_RANGE_LENGTH. Thanks, Michael On 8/11/2020 10:46 AM, Michael Kubacki wrote: > #1: In v3, I'm going to split it such that the defines are in the public= = =20 > header and the enum specifying the internal driver and dependency ranges= = =20 > are in a private header to FmpDevicePkg. >=20 > Here's the current set of v3 changes to agree upon before sending a seri= es: > 1. Move the defines for the ranges to a public header > 2. Move the enum to a private instance file > 3. Rename LAST_ATTEMPT_STATUS_LIBRARY_ERROR_MIN_ERROR_CODE to=20 > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_ERROR_MIN_ERROR_CODE > 4. Include a comment to explicitly state new codes within a given range= =20 > must be added at the end of the range >=20 > Please let me know if there's any further feedback. >=20 > Thanks, > Michael >=20 > On 8/10/2020 5:31 PM, Desimone, Nathaniel L wrote: >> My feedback: >> >> #1: Why is LastAttemptStatus.h in PrivateInclude? Seems like something= =20 >> you would want to have as a public header. >> >> #2: If someone inserts a new enum value in the middle of=20 >> LAST_ATTEMPT_STATUS_EXPANDED_ERROR_LIST it will make it difficult to=20 >> decode error codes in the future. Either put a comment that new error= =20 >> code should go on the bottom. Or add some space between each entry=20 >> using something like this: >> >> enum LAST_ATTEMPT_STATUS_EXPANDED_ERROR_LIST >> { >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_GET_FMP_HEADER =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_PROGRESS_CALLBACK_ERROR = =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 10, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK_POWER_API =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 20, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK_SYS_THERMAL_API =3D= = =20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 30, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_THERMAL =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 40, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK_SYS_ENV_API =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 50, >> =C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_SYSTEM_ENV =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + 60, >> >> Then you can insert something in the middle by adding +5. >> >> Thanks, >> Nate >> >> =EF=BB=BFOn 8/10/20, 1:28 PM, "devel@edk2.groups.io on behalf of Michae= l=20 >> Kubacki" > michael.kubacki@outlook.com> wrote: >> >> =C2=A0=C2=A0=C2=A0=C2=A0 From: Michael Kubacki >> >> =C2=A0=C2=A0=C2=A0=C2=A0 Introduces a header file to contain Last Attem= pt Status codes that >> =C2=A0=C2=A0=C2=A0=C2=A0 define granular FmpDevicePkg usage of the UEFI= Specification >> =C2=A0=C2=A0=C2=A0=C2=A0 defined vendor range. The vendor range is desc= ribed in UEFI >> =C2=A0=C2=A0=C2=A0=C2=A0 Specification 2.8A section 23.4. >> >> =C2=A0=C2=A0=C2=A0=C2=A0 With this change, FmpDevicePkg currently defin= es three subranges of >> =C2=A0=C2=A0=C2=A0=C2=A0 the Last Attempt Status vendor range: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1. Driver - Codes returned from op= erations performed by the >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpDxe driver. >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2. Dependency - Codes returned fro= m FMP dependency related >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 functionality (e= .g. FmpDependencyLib). >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3. Library - Codes returned from F= mpDeviceLib instances. >> >> =C2=A0=C2=A0=C2=A0=C2=A0 Cc: Liming Gao >> =C2=A0=C2=A0=C2=A0=C2=A0 Cc: Michael D Kinney >> =C2=A0=C2=A0=C2=A0=C2=A0 Cc: Guomin Jiang >> =C2=A0=C2=A0=C2=A0=C2=A0 Cc: Wei6 Xu >> =C2=A0=C2=A0=C2=A0=C2=A0 Signed-off-by: Michael Kubacki >> =C2=A0=C2=A0=C2=A0=C2=A0 --- >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpDevicePkg/PrivateInclude/LastAttemptS= tatus.h | 81=20 >> ++++++++++++++++++++ >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1 file changed, 81 insertions(+) >> >> =C2=A0=C2=A0=C2=A0=C2=A0 diff --git a/FmpDevicePkg/PrivateInclude/LastA= ttemptStatus.h=20 >> b/FmpDevicePkg/PrivateInclude/LastAttemptStatus.h >> =C2=A0=C2=A0=C2=A0=C2=A0 new file mode 100644 >> =C2=A0=C2=A0=C2=A0=C2=A0 index 000000000000..01e96b23edad >> =C2=A0=C2=A0=C2=A0=C2=A0 --- /dev/null >> =C2=A0=C2=A0=C2=A0=C2=A0 +++ b/FmpDevicePkg/PrivateInclude/LastAttemptS= tatus.h >> =C2=A0=C2=A0=C2=A0=C2=A0 @@ -0,0 +1,81 @@ >> =C2=A0=C2=A0=C2=A0=C2=A0 +/** @file >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 Defines last attempt status codes used= in FmpDevicePkg. >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 Copyright (c) Microsoft Corporation. >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 SPDX-License-Identifier: BSD-2-Clause-= Patent >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +**/ >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +#ifndef __FMP_LAST_ATTEMPT_STATUS_H__ >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define __FMP_LAST_ATTEMPT_STATUS_H__ >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +// Size of the error code range for FMP drive= r-specific errors >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define LAST_ATTEMPT_STATUS_DRIVER_ERROR_COUN= T=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 0x80 >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +// Size of the error code range for FMP depen= dency related errors >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_= COUNT=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x20 >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define LAST_ATTEMPT_STATUS_DRIVER_MAX_ERROR_= CODE_VALUE =20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN + \ >> =C2=A0=C2=A0=C2=A0=C2=A0 + = >> LAST_ATTEMPT_STATUS_DRIVER_ERROR_COUNT - 1 >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define LAST_ATTEMPT_STATUS_DEPENDENCY_MAX_ER= ROR_CODE_VALUE=20 >> LAST_ATTEMPT_STATUS_DRIVER_MAX_ERROR_CODE_VALUE + \ >> =C2=A0=C2=A0=C2=A0=C2=A0 + = >> LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_COUNT >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +#define LAST_ATTEMPT_STATUS_LIBRARY_MAX_ERROR= _CODE_VALUE >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MAX - 1 >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +// Last attempt status codes defined for addi= tional granularity=20 >> in the FMP stack. >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +// These codes are defined within the higher-= level UEFI=20 >> specification defined UNSUCCESSFUL_VENDOR_RANGE. >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +// The following last attempt status code ran= ges are defined for=20 >> the following corresponding component: >> =C2=A0=C2=A0=C2=A0=C2=A0 +//=C2=A0=C2=A0 * LAST_ATTEMPT_STATUS_DRIVER -= FMP driver >> =C2=A0=C2=A0=C2=A0=C2=A0 +//=C2=A0=C2=A0 * LAST_ATTEMPT_STATUS_DEPENDEN= CY - FMP dependency=20 >> functionality >> =C2=A0=C2=A0=C2=A0=C2=A0 +//=C2=A0=C2=A0 * LAST_ATTEMPT_STATUS_LIBRARY = - FMP device library instances >> =C2=A0=C2=A0=C2=A0=C2=A0 +// >> =C2=A0=C2=A0=C2=A0=C2=A0 +enum LAST_ATTEMPT_STATUS_EXPANDED_ERROR_LIST >> =C2=A0=C2=A0=C2=A0=C2=A0 +{ >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> LAST_ATTEMPT_STATUS_DRIVER_ERROR_GET_FMP_HEADER=C2=A0=C2=A0=C2=A0=C2=A0= = =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = =3D=20 >> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN, >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_PROGR= ESS_CALLBACK_ERROR=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK= _POWER_API=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK= _SYS_THERMAL_API=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_THERM= AL=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_CHECK= _SYS_ENV_API=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= = =A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_SYSTE= M_ENV=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_GET_F= MP_HEADER_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_GET_A= LL_HEADER_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_GET_F= MP_HEADER_VERSION=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_IMAGE= _NOT_PROVIDED=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_IMAGE= _NOT_UPDATABLE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_INVAL= ID_CERTIFICATE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_INVAL= ID_IMAGE_INDEX=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_INVAL= ID_KEY_LENGTH=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_INVAL= ID_KEY_LENGTH_VALUE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_VERSI= ON_TOO_LOW=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_DEVIC= E_LOCKED=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_IMAGE= _AUTH_FAILURE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DRIVER_ERROR_PROTO= COL_ARG_MISSING=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= , >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> LAST_ATTEMPT_STATUS_DRIVER_ERROR_MAX_ERROR_CODE=C2=A0=C2=A0=C2=A0=C2=A0= = =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = =3D=20 >> LAST_ATTEMPT_STATUS_DRIVER_MAX_ERROR_CODE_VALUE, >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_G= ET_DEPEX_FAILURE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_N= O_END_OPCODE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= = =A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_U= NKNOWN_OPCODE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_M= EMORY_ALLOCATION_FAILED=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_G= UID_BEYOND_DEPEX=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_V= ERSION_BEYOND_DEPEX=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_V= ERSION_STR_BEYOND_DEPEX=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_F= MP_NOT_FOUND=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= = =A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_P= USH_FAILURE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_P= OP_FAILURE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> LAST_ATTEMPT_STATUS_DEPENDENCY_ERROR_MAX_ERROR_CODE=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D=20 >> LAST_ATTEMPT_STATUS_DEPENDENCY_MAX_ERROR_CODE_VALUE, >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +=C2=A0 LAST_ATTEMPT_STATUS_LIBRARY_ERROR_MIN_= ERROR_CODE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 , >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> LAST_ATTEMPT_STATUS_LIBRARY_ERROR_MAX_ERROR_CODE=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D= =20 >> LAST_ATTEMPT_STATUS_LIBRARY_MAX_ERROR_CODE_VALUE >> =C2=A0=C2=A0=C2=A0=C2=A0 +}; >> =C2=A0=C2=A0=C2=A0=C2=A0 + >> =C2=A0=C2=A0=C2=A0=C2=A0 +#endif >> =C2=A0=C2=A0=C2=A0=C2=A0 -- >> =C2=A0=C2=A0=C2=A0=C2=A0 2.28.0.windows.1 >> >> >> =C2=A0=C2=A0=C2=A0=C2=A0=20 >> >>