验证 EFI 设备路径是否有效

Verifying that EFI device path is valid

我想检查 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
  }

这段代码总是returns路径无效,我觉得IsDevicePathValid的第二个参数有问题。

有什么问题?

谢谢。

IsDevicePathValid returns 如果设备路径的总长度超过第二个参数 MaxPath 的值,则为 false。显然超过了sizeof(EFI_DEVICE_PATH_PROTOCOL),也就是4。这个参数应该传0。