From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.5307.1685565604953629969 for ; Wed, 31 May 2023 13:40:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=PdAWskpr; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685565604; x=1717101604; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=U64Jqxn7zX/Nz31lih9YnQifVguYJuESlI2kFb3ebzk=; b=PdAWskprElWHHpurhcK2RwDptw/93WYbgYu1RBt7YGBPw3LYbpitt7ly jV7YBQGcGT/ge2pW0A1yG9etNypAEAjjhkp6drfggJGWI0ebGxNSHr3yx O1fb+V3QbLt/ZDkIxwkDwGq6AbKIa+TSV6jszwoU5++3NtjkiO0U6SrBH 0y+XvuGJHAavzRDk/N8tE+dmI2T64HQNbYMs8Wl/lD89+xeo354vxv9hY bKwreEM73JUzJpCXy0ozuRB0lxV8/n4AVWqxHiF7wUVZvVCcSc4m11AQs refaHskJ1Rdjja9+zn4bl5Vh7OQZ9U/P0vSgo0NHCUmkqMCuukan+JCz9 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="352860959" X-IronPort-AV: E=Sophos;i="6.00,207,1681196400"; d="scan'208";a="352860959" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2023 13:40:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="881340391" X-IronPort-AV: E=Sophos;i="6.00,207,1681196400"; d="scan'208";a="881340391" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 31 May 2023 13:40:03 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 31 May 2023 13:40:02 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 31 May 2023 13:40:02 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.177) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 31 May 2023 13:40:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aZh6FyrAyP/bQyMO9YP28gPvS+7dVNzz3Oj/2V7rCuCxRSuB664jJ4CRS+TiqCebVueFx27/UDiMqYj9byIoYCMceF/eiW3X5M5AnvNsjYSWxjyVfnkYPnWP6xN9+2hwG2Wkye9GBUk5pgQCfLxyTLopDspd0QjFvlN6TBFOFYnuQ7o3ptbh6qkAQsoLovuZgWOv9gP0Zzcd3z6ZXtgj70PpodHMsJmKRMD7vy1Y5bYPlQtmfxMARFFUWvNrgUINV2Bfpzost3KblDdj3Qk408Hh0JII3oDLcqwGcCKwADuIfvcDo6RK7o3zaPmYcAjqRV20fuk9tqMPxe0u4DYCTQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DFUNk7vnGVK8c80x4lksMt9u7So3/Xn/CtvbmsOnG/E=; b=ghCqD2OhuB7LV4P1W7IuN4Qqmwb3FSycuYysvyNHlZcFeJnUFaYGsAW7UkV6Gy+q97mD83fzI5x+lNmcNhPZWxCzZ2+9DDrPM8HP8Rgzy+D1ZKT5qaWnHcW1Sg7iPRiYT8mOQJFepIJ4zD+LU8Rvy+GnsdGWlOefXf0R63XLM0EC5vueZoRaxY3YPXt7hvilCHsI63+ek1P++2WmctbYvfYDMSF3HCQD/VN3sS4VCNzKCmIMahV0eMWBwrHRTpOetDVIR34rTKaITe0Xnr5IdTCZr6YfmAdeyVGqxhnXSEbCfGlfcdWWshEbODyk2+cpeBaGUHpLBrtKln1nZdTBwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by DS0PR11MB6447.namprd11.prod.outlook.com (2603:10b6:8:c4::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.24; Wed, 31 May 2023 20:39:58 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::4752:67f2:9956:b277]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::4752:67f2:9956:b277%4]) with mapi id 15.20.6433.024; Wed, 31 May 2023 20:39:57 +0000 From: "Michael D Kinney" To: Kun Qin , "devel@edk2.groups.io" CC: Sean Brogan , Michael Kubacki , "Kinney, Michael D" Subject: Re: [PATCH v1 1/1] UnitTestFrameworkPkg: UnitTestPersistenceLib: Save Unit Test Cache to Drive Thread-Topic: [PATCH v1 1/1] UnitTestFrameworkPkg: UnitTestPersistenceLib: Save Unit Test Cache to Drive Thread-Index: AQHZk/QXr4VeKjJ7qkqDn0vyH+9qq6901+ZQ Date: Wed, 31 May 2023 20:39:57 +0000 Message-ID: References: <20230531191358.587-1-kuqin12@gmail.com> <20230531191358.587-2-kuqin12@gmail.com> In-Reply-To: <20230531191358.587-2-kuqin12@gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|DS0PR11MB6447:EE_ x-ms-office365-filtering-correlation-id: e2b3c223-480d-454c-1ce0-08db621732c2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qQg0twkwQmR7SZZezt8873WiOBfmncY7FqPn2I67sdDpfvLnHPlC8JPeJEgZJErnYa1QzJuk4mhNEBFgFKUBq8CfZTFIhlULvrIN/WNg6Bm7CR+0KGyM7/XljI/cTvusaxsfj6m+hde967E2THlEzOu6GC1LD7DvUdJYN0KrvsxTa7x/PMAvPDJe7xDrWj59Myfo9jcTZ880mZNIETnllC2Eo2f39EUxLGNlmH9oI8/vRmdiYzebvYLqmYCG/go5Bv3elq379chDp5Vk7oUwtRKykNgqxNc8xsDvFhVuIwUIDa6Aqql2WBgY51T4Ojz+YSBKlkdMjBuLOT3sPFsHl424aJLwnz6Dbgop+ghRvqiql14Ugwl3CIQceWNAR3Uq3l+vRhfXMxJD4f7buDu0oyLnRvLUn6d3aaOTUpYi1FoOEp8lXj2DWMdYj4ABINSH9VhGrpAcaTRs1/CIuP5OvhvewcZTdHBwvxxKAo93EHi5sm86TfRpWxgEO1s00w5zamOh0lMrbmoZ+MSRxA7zb0kVe6WbOZRFx1QYTfee95kmO848iM4jXlNZInmJz1FcSDw99SWoATSsP+VT4cwyANdkmYywZqh2PFMTs840WoQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(366004)(39860400002)(376002)(346002)(396003)(451199021)(2906002)(52536014)(55016003)(8936002)(41300700001)(8676002)(5660300002)(64756008)(66446008)(66946007)(66476007)(76116006)(66556008)(4326008)(54906003)(110136005)(33656002)(478600001)(71200400001)(6506007)(9686003)(86362001)(966005)(316002)(186003)(122000001)(82960400001)(38100700002)(7696005)(83380400001)(26005)(53546011)(107886003)(38070700005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?3FUwsTU5PSRPX3HmmsKdIXKBr7bdjGnT+ctp3Bf10DVGJt07rx7JmUQxEcAT?= =?us-ascii?Q?Fok+iPs1gkYD1ooo4iDXN3dyhS1hCy9kOsIew2ypCNLlTw1T20MhH75xBXc3?= =?us-ascii?Q?lA4zTbPF2LT4RdmZb/rHtUXGfiZOn2AbOrpBAcN7qDHLen4PQSGCIaToMzuG?= =?us-ascii?Q?1jS8CIFBtRi+k/80JSbCqUlLfZAlrJFnupOUADcivA7S3YRlfwGRNnoGNs2b?= =?us-ascii?Q?wrUSk5H4bexLwrOCmr0HUifApxHSBKEo+8H/LlTVmpXsLcgK0fQfaz7+U0Zl?= =?us-ascii?Q?eEQSiIWlf+m/bavz2fkHu18z9bfnQkI7dt07iwjrRY07RzJXn981iOmPtjEd?= =?us-ascii?Q?PcakDVkxxhsdKY/LgO+1iTssSL+X9McrpQ7vVsMnIoY/ukIhXdCI2LAUt3AU?= =?us-ascii?Q?WtGgU7gzZnIK0D2x3UftXe64I+Qaaxi9XP71tAteREIBd7fcygrohhI4hpSv?= =?us-ascii?Q?tsnp+XJKUU5J2/a1L31nUKSQOu2kld5Mr1udtfMhhIahJPqM5JHQbDSNNC2a?= =?us-ascii?Q?qh75h3N9n0MNK+nZLNo2CRNxKdq5iIn+NB//w/XUiwaNKsK3eB8FzdYjyWg3?= =?us-ascii?Q?FRvCF52cKF03tQmycT5zbEYuDeYxso554BVU2k5G7PS6Ti/4rcxDaaC2oifV?= =?us-ascii?Q?yZvCs4WnaYP36vUNYhzd1FJMLPIE9xTVhHl6/UYK0iXerIE/2Dy77gkQv/8I?= =?us-ascii?Q?+HyrVtlMWYGEzYzgen4d5Cuyk4f0pzJNQUDFmc1zOEsYnChU76+JITP6ZAkE?= =?us-ascii?Q?dzdgNU+C5vFIH5TS3yyr4lfi2kJXYvqjhHuuEsRpOsMF1bBsgQCTAL9u+/2q?= =?us-ascii?Q?4xKOIDZebIfE2fi6CQr7Z+6IV4A+vl2+EDYZjYzvEJLHveS939++K5WBLlUO?= =?us-ascii?Q?JCV1aBZRuJBc3+rfh0FdXJxKurgeYY4mHzZVvBSfmBklmc7hPztmoryuEkxB?= =?us-ascii?Q?tB3pvlCYhuyx8K1sSmdxDIto2lUBIqwYgXSB/0ms9QDY1axnt6fSVa4LzPm1?= =?us-ascii?Q?q9NOvTrJN71cpLJu0fdX8eVAL5N/o8tyzO40svv0Ok9ev8GKHlpUT2y/bbkr?= =?us-ascii?Q?gFFimzjkKzIqnMaecWdBXnv0YBG2y6oTHmAAsVc6x9z27aJcpEcHKEGlKgX5?= =?us-ascii?Q?EnGe6WAEr7c1Rp6Ye8Fcl0jMkYJWvGKRX5osZdxRPBRF84z0phE7tLrdafIV?= =?us-ascii?Q?9ULr46wbTRXCHqTx/seyzZDm3J3v0XBtQY9nTncAG+uBiCEKgumOBrVwYeO/?= =?us-ascii?Q?UXEhLBk7SsF3G1NKjID+lkWnEK3JRsQ5ijbwL57hjmCFEHFWg6VP24JRzdXW?= =?us-ascii?Q?8hslwHHu6VOusSbGafWd3J8w0714T+baR7CbOIhlLUD1BcwyhbdrBea9Gg2d?= =?us-ascii?Q?owUQ4IMXZKWD1b4dfc9jp5SfCVTMNNnvpUcEKFBcQ061PrquLISg4qVVf4+s?= =?us-ascii?Q?sRgCcoa6u93MtNkaxicIei9xvDscUIO6+NUhhp+Qo1l9QUNJsiycgiOyakv1?= =?us-ascii?Q?r74s4tlKk5+DbsvQXZFW3iy9aMNhjIJLfKbH1H/PQxgDKvC1TuOVg2mFyuAr?= =?us-ascii?Q?1VMz+vATOjF5G6U5b5o2KXC8i8M8pDPAUUwSB0k5q/In3SEOL0m492unGFdL?= =?us-ascii?Q?vw=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2b3c223-480d-454c-1ce0-08db621732c2 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2023 20:39:57.7820 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zU2+Z7BqZvIwL9dojCnK7twpKhudxUagzH02/fYLXUzwVuU/D0/+T8kk+IlCJ8MeHU5o9TU9+FyD1KNIDPB5HqFeGTgO7PqmRhPJ4UCTYYc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB6447 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Would it be more flexible for unit tests apps to support an optional comman= d line arg=20 to specify the volume to write results?=20 Mike > -----Original Message----- > From: Kun Qin > Sent: Wednesday, May 31, 2023 12:14 PM > To: devel@edk2.groups.io > Cc: Sean Brogan ; Michael Kubacki > ; Kinney, Michael D > > Subject: [PATCH v1 1/1] UnitTestFrameworkPkg: UnitTestPersistenceLib: Sav= e > Unit Test Cache to Drive >=20 > From: kuqin12 <42554914+kuqin12@users.noreply.github.com> >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4467 >=20 > Current implementation of UnitTestFrameworkPkg for shell-based unit test > will save the unit test cache to the same volume as the test application > itself. This works as long as the test application is on a writable > volume, such as USB or EFI partition. >=20 > Instead of saving the files to the same file system of unit test > application, this change will save the cache file to the path where the > user ran this test application. >=20 > This change was tested on proprietary physical hardware platforms and > QEMU based virtual platform. >=20 > Cc: Sean Brogan > Cc: Michael Kubacki > Cc: Michael D Kinney > Signed-off-by: Kun Qin > --- >=20 > UnitTestFrameworkPkg/Library/UnitTestPersistenceLibSimpleFileSystem/UnitT= es > tPersistenceLibSimpleFileSystem.c | 81 +++++++++++--------- > 1 file changed, 43 insertions(+), 38 deletions(-) >=20 > diff --git > a/UnitTestFrameworkPkg/Library/UnitTestPersistenceLibSimpleFileSystem/Uni= tT > estPersistenceLibSimpleFileSystem.c > b/UnitTestFrameworkPkg/Library/UnitTestPersistenceLibSimpleFileSystem/Uni= tT > estPersistenceLibSimpleFileSystem.c > index b59991683f48..d4181808b2be 100644 > --- > a/UnitTestFrameworkPkg/Library/UnitTestPersistenceLibSimpleFileSystem/Uni= tT > estPersistenceLibSimpleFileSystem.c > +++ > b/UnitTestFrameworkPkg/Library/UnitTestPersistenceLibSimpleFileSystem/Uni= tT > estPersistenceLibSimpleFileSystem.c > @@ -22,7 +22,7 @@ > #define CACHE_FILE_SUFFIX L"_Cache.dat" >=20 >=20 >=20 > /** >=20 > - Generate the device path to the cache file. >=20 > + Generate the file name and path to the cache file. >=20 >=20 >=20 > @param[in] FrameworkHandle A pointer to the framework that is being > persisted. >=20 >=20 >=20 > @@ -31,8 +31,8 @@ >=20 >=20 > **/ >=20 > STATIC >=20 > -EFI_DEVICE_PATH_PROTOCOL * >=20 > -GetCacheFileDevicePath ( >=20 > +CHAR16 * >=20 > +GetCacheFileName ( >=20 > IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle >=20 > ) >=20 > { >=20 > @@ -85,7 +85,12 @@ GetCacheFileDevicePath ( > // PathCleanUpDirectories (FileNameCopy); >=20 > // if (PathRemoveLastItem (FileNameCopy)) { >=20 > // >=20 > - AppPath =3D ConvertDevicePathToText (LoadedImage->FilePat= h, > TRUE, TRUE); // NOTE: This must be freed. >=20 > + AppPath =3D ConvertDevicePathToText (LoadedImage->FilePath, TRUE, TRUE= ); > // NOTE: This must be freed. >=20 > + if (AppPath =3D=3D NULL) { >=20 > + DEBUG ((DEBUG_ERROR, "%a - Failed to convert device path to text.\n"= , > __func__)); >=20 > + goto Exit; >=20 > + } >=20 > + >=20 > DirectorySlashOffset =3D StrLen (AppPath); >=20 > // >=20 > // Make sure we didn't get any weird data. >=20 > @@ -148,15 +153,15 @@ Exit: > FreePool (AppPath); >=20 > } >=20 >=20 >=20 > - if (CacheFilePath !=3D NULL) { >=20 > - FreePool (CacheFilePath); >=20 > + if (CacheFileDevicePath !=3D NULL) { >=20 > + FreePool (CacheFileDevicePath); >=20 > } >=20 >=20 >=20 > if (TestName !=3D NULL) { >=20 > FreePool (TestName); >=20 > } >=20 >=20 >=20 > - return CacheFileDevicePath; >=20 > + return CacheFilePath; >=20 > } >=20 >=20 >=20 > /** >=20 > @@ -175,21 +180,21 @@ DoesCacheExist ( > IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle >=20 > ) >=20 > { >=20 > - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; >=20 > - EFI_STATUS Status; >=20 > - SHELL_FILE_HANDLE FileHandle; >=20 > + CHAR16 *FileName; >=20 > + EFI_STATUS Status; >=20 > + SHELL_FILE_HANDLE FileHandle; >=20 >=20 >=20 > // >=20 > // NOTE: This devpath is allocated and must be freed. >=20 > // >=20 > - FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); >=20 > + FileName =3D GetCacheFileName (FrameworkHandle); >=20 >=20 >=20 > // >=20 > // Check to see whether the file exists. If the file can be opened fo= r >=20 > // reading, it exists. Otherwise, probably not. >=20 > // >=20 > - Status =3D ShellOpenFileByDevicePath ( >=20 > - &FileDevicePath, >=20 > + Status =3D ShellOpenFileByName ( >=20 > + FileName, >=20 > &FileHandle, >=20 > EFI_FILE_MODE_READ, >=20 > 0 >=20 > @@ -198,8 +203,8 @@ DoesCacheExist ( > ShellCloseFile (&FileHandle); >=20 > } >=20 >=20 >=20 > - if (FileDevicePath !=3D NULL) { >=20 > - FreePool (FileDevicePath); >=20 > + if (FileName !=3D NULL) { >=20 > + FreePool (FileName); >=20 > } >=20 >=20 >=20 > DEBUG ((DEBUG_VERBOSE, "%a - Returning %d\n", __func__, !EFI_ERROR > (Status))); >=20 > @@ -229,10 +234,10 @@ SaveUnitTestCache ( > IN UINTN SaveStateSize >=20 > ) >=20 > { >=20 > - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; >=20 > - EFI_STATUS Status; >=20 > - SHELL_FILE_HANDLE FileHandle; >=20 > - UINTN WriteCount; >=20 > + CHAR16 *FileName; >=20 > + EFI_STATUS Status; >=20 > + SHELL_FILE_HANDLE FileHandle; >=20 > + UINTN WriteCount; >=20 >=20 >=20 > // >=20 > // Check the inputs for sanity. >=20 > @@ -245,13 +250,13 @@ SaveUnitTestCache ( > // Determine the path for the cache file. >=20 > // NOTE: This devpath is allocated and must be freed. >=20 > // >=20 > - FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); >=20 > + FileName =3D GetCacheFileName (FrameworkHandle); >=20 >=20 >=20 > // >=20 > // First lets open the file if it exists so we can delete it...This is > the work around for truncation >=20 > // >=20 > - Status =3D ShellOpenFileByDevicePath ( >=20 > - &FileDevicePath, >=20 > + Status =3D ShellOpenFileByName ( >=20 > + FileName, >=20 > &FileHandle, >=20 > (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE), >=20 > 0 >=20 > @@ -270,8 +275,8 @@ SaveUnitTestCache ( > // >=20 > // Now that we know the path to the file... let's open it for writing. >=20 > // >=20 > - Status =3D ShellOpenFileByDevicePath ( >=20 > - &FileDevicePath, >=20 > + Status =3D ShellOpenFileByName ( >=20 > + FileName, >=20 > &FileHandle, >=20 > (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | > EFI_FILE_MODE_CREATE), >=20 > 0 >=20 > @@ -304,8 +309,8 @@ SaveUnitTestCache ( > ShellCloseFile (&FileHandle); >=20 >=20 >=20 > Exit: >=20 > - if (FileDevicePath !=3D NULL) { >=20 > - FreePool (FileDevicePath); >=20 > + if (FileName !=3D NULL) { >=20 > + FreePool (FileName); >=20 > } >=20 >=20 >=20 > return Status; >=20 > @@ -334,13 +339,13 @@ LoadUnitTestCache ( > OUT UINTN *SaveStateSize >=20 > ) >=20 > { >=20 > - EFI_STATUS Status; >=20 > - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; >=20 > - SHELL_FILE_HANDLE FileHandle; >=20 > - BOOLEAN IsFileOpened; >=20 > - UINT64 LargeFileSize; >=20 > - UINTN FileSize; >=20 > - VOID *Buffer; >=20 > + EFI_STATUS Status; >=20 > + CHAR16 *FileName; >=20 > + SHELL_FILE_HANDLE FileHandle; >=20 > + BOOLEAN IsFileOpened; >=20 > + UINT64 LargeFileSize; >=20 > + UINTN FileSize; >=20 > + VOID *Buffer; >=20 >=20 >=20 > IsFileOpened =3D FALSE; >=20 > Buffer =3D NULL; >=20 > @@ -356,13 +361,13 @@ LoadUnitTestCache ( > // Determine the path for the cache file. >=20 > // NOTE: This devpath is allocated and must be freed. >=20 > // >=20 > - FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); >=20 > + FileName =3D GetCacheFileName (FrameworkHandle); >=20 >=20 >=20 > // >=20 > // Now that we know the path to the file... let's open it for writing. >=20 > // >=20 > - Status =3D ShellOpenFileByDevicePath ( >=20 > - &FileDevicePath, >=20 > + Status =3D ShellOpenFileByName ( >=20 > + FileName, >=20 > &FileHandle, >=20 > EFI_FILE_MODE_READ, >=20 > 0 >=20 > @@ -407,8 +412,8 @@ Exit: > // >=20 > // Free allocated buffers >=20 > // >=20 > - if (FileDevicePath !=3D NULL) { >=20 > - FreePool (FileDevicePath); >=20 > + if (FileName !=3D NULL) { >=20 > + FreePool (FileName); >=20 > } >=20 >=20 >=20 > if (IsFileOpened) { >=20 > -- > 2.40.1.windows.1