验证 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。
我想检查 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。