【问题标题】:Verifying that EFI device path is valid验证 EFI 设备路径是否有效
【发布时间】:2020-06-08 23:42:46
【问题描述】:

我要检查efi图片路径是否有效,代码如下:

 gBS->LocateHandleBuffer (
         ByProtocol,
         &gEfiSimpleFileSystemProtocolGuid,
         NULL,
         &NumberSimpleFileSystemHandles,
         &SimpleFileSystemHandles
         );
  for (Index = 0; Index < NumberSimpleFileSystemHandles; Index++) {
   TempImagePath = FileDevicePath (SimpleFileSystemHandles[Index], L"\\EFI\\BOOT\\boo.efi");
   if(IsDevicePathValid(TempImagePath,sizeof(EFI_DEVICE_PATH_PROTOCOL)) == TRUE){
          //OK
  }

这段代码总是返回路径无效,我认为IsDevicePathValid的第二个参数有问题。

有什么问题?

谢谢。

【问题讨论】:

  • 您是否尝试使用它来确定文件是否存在?我认为 IsDevicePathValid 不会检查。
  • 似乎还有一个错字:“boo.efi”应该是“boot.efi”。

标签: uefi


【解决方案1】:

如果设备路径的总长度超过第二个参数 MaxPath 的值,IsDevicePathValid 返回 false。显然它超过了 sizeof (EFI_DEVICE_PATH_PROTOCOL),即 4。你应该为这个参数传递 0。

【讨论】:

  • 你是对的,我在尝试检查文件是否存在,函数IsDevicePathValid 没有帮助。
猜你喜欢
  • 2020-07-04
  • 2015-12-26
  • 2011-09-06
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2019-07-17
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多