非常简单的 UEFI 程序,例如:
LocateHandleBuffer()
总是返回8000000000000002
“无效参数。EFI 文档说唯一的原因应该是如果我传递的两个指针之一是 NULL,它们显然不是。
没有比这更简单的了。我最初尝试使用ByProtocol
特定的 GUID - 但它总是失败并出现相同的错误。
知道问题可能是什么吗?
#include <efi.h>
#include <efilib.h>
EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
EFI_STATUS Status;
UINTN HandleCount;
EFI_HANDLE *HandleBuffer;
EFI_BOOT_SERVICES *gBS = SystemTable-> BootServices;
InitializeLib(ImageHandle, SystemTable);
Print(L"test2 built on " __DATE__ " at " __TIME__ "\n");
Status = gBS->LocateHandleBuffer (
AllHandles, NULL, NULL,
&HandleCount, &HandleBuffer);
Print(L"Test AllHandles returned status %llx count %d\n",Status,HandleCount);
return (Status);
}