Очень простая программа 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);
}