本文整理汇总了C++中EFI_BOOT_SERVICES::AllocatePool方法的典型用法代码示例。如果您正苦于以下问题:C++ EFI_BOOT_SERVICES::AllocatePool方法的具体用法?C++ EFI_BOOT_SERVICES::AllocatePool怎么用?C++ EFI_BOOT_SERVICES::AllocatePool使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EFI_BOOT_SERVICES
的用法示例。
在下文中一共展示了EFI_BOOT_SERVICES::AllocatePool方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
EFI_STATUS EFIAPI
OvrAllocatePool(
IN EFI_MEMORY_TYPE PoolType,
IN UINTN Size,
OUT VOID **Buffer
)
{
EFI_STATUS Status;
Status = gOrgBS.AllocatePool(PoolType, Size, Buffer);
// printing to console requires AllocatePool - recursion, but this is solved by safety check in LogPrint
// do not print to serial - too many calls from UEFI
//DebugPrint(1, "->AllocatePool(%s, 0x%x, %p) = %r\n", EfiMemoryTypeDesc[PoolType], Size, *Buffer, Status);
#if PRINT_ALLOCATE_POOL == 1
PRINT("->AllocatePool(%s, 0x%x, %p) = %r\n", EfiMemoryTypeDesc[PoolType], Size, *Buffer, Status);
#endif
return Status;
}
示例2: LoadFile
EFI_STATUS LoadFile(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* systab,
CHAR16* filename, VOID** dataPtr, UINTN* size,
EFI_DEVICE_PATH_PROTOCOL** dev_path)
{
EFI_GUID LoadedImageProtocolGuid = EFI_LOADED_IMAGE_PROTOCOL_GUID;
EFI_GUID FileInfoGuid = EFI_FILE_INFO_ID;
EFI_GUID FileSystemGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID;
EFI_STATUS res;
EFI_BOOT_SERVICES* BS = systab->BootServices;
//get image info
EFI_LOADED_IMAGE_PROTOCOL* img_proto;
res = BS->HandleProtocol(ImageHandle, &LoadedImageProtocolGuid,
(void**) &img_proto);
if (res)
{
ErrorPrint(L"Failed to get image protocol. (Error %d)\r\n", res);
return EFI_LOAD_ERROR ;
}
EFI_HANDLE img_device_handle = img_proto->DeviceHandle;
//Get filesystem protocol from device
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL* fs_proto;
res = BS->HandleProtocol(img_device_handle, &FileSystemGuid,
(VOID**) &fs_proto);
if (res)
{
ErrorPrint(L"Failed to get file system protocol. (Error %d)\r\n", res);
return EFI_LOAD_ERROR ;
}
//open volume
EFI_FILE_PROTOCOL* volume;
res = fs_proto->OpenVolume(fs_proto, &volume);
if (res)
{
ErrorPrint(L"Failed to open file volume. (Error %d)\r\n", res);
return EFI_LOAD_ERROR ;
}
//open file
EFI_FILE_PROTOCOL* file;
res = volume->Open(volume, &file, filename, EFI_FILE_MODE_READ, 0);
if (res)
{
//don't print error here
//ErrorPrint(L"Failed to open file '%s'. (Error %d)\r\n", filename, res);
return EFI_NOT_FOUND ;
}
//get file info, two try process
EFI_FILE_INFO* file_info = NULL;
UINTN file_info_size = 0;
res = file->GetInfo(file, &FileInfoGuid, &file_info_size, NULL );
if (res != EFI_BUFFER_TOO_SMALL )
{
ErrorPrint(L"Failed to stat file '%s'. (Error %d)\r\n", filename, res);
return EFI_NOT_FOUND ;
}
res = BS->AllocatePool(EfiLoaderData, file_info_size, (void**) &file_info);
if (res)
{
ErrorPrint(L"Failed to allocate file info memory. (Error %d)\r\n", res);
return EFI_OUT_OF_RESOURCES ;
}
res = file->GetInfo(file, &FileInfoGuid, &file_info_size,
(void*) file_info);
if (res)
{
BS->FreePool(file_info);
ErrorPrint(L"Failed to stat file '%s'. (Error %d)\r\n", filename, res);
return EFI_NOT_FOUND ;
}
if (dev_path != NULL )
{
*dev_path = FileDevicePath(img_device_handle, filename);
}
UINT64 file_size = file_info->FileSize;
BS->FreePool(file_info);
file_info = NULL;
void* data = NULL;
res = BS->AllocatePool(EfiLoaderData, file_size, (void**) &data);
if (res)
{
//.........这里部分代码省略.........