Protocols — Device I/O Protocol
Version 1.10 12/01/02 18-11
DEVICE_IO.AllocateBuffer()
Summary
Allocates pages that are suitable for an EFIBusMasterCommonBuffer mapping.
Prototype
typedef
EFI_STATUS
(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
IN EFI_DEVICE_IO_INTERFACE *This,
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN Pages,
IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
);
Parameters
This A pointer to the EFI_DEVICE_IO_INTERFACE instance. Type
EFI_DEVICE_IO_INTERFACE isdefinedinSection18.2.
Type The type allocation to perform. Type EFI_ALLOCATE_TYPE
is
defined in Chapter 5.
MemoryType The type of memory to allocate, EfiBootServicesData or
EfiRuntimeServicesData.TypeEFI_MEMORY_TYPE
is defined
in Chapter 5.
Pages The number of pages to allocate.
HostAddress A pointer to store the base address of the allocated range. Type
EFI_PHYSICAL_ADDRESS
is defined in Chapter 5.
Description
The AllocateBuffer() function allocates pages that are suitable for an
EFIBusMasterCommonBuffer mapping.
The AllocateBuffer() function internally calls AllocatePages()
to allocate a memory
range that can be mapped as an EFIBusMasterCommonBuffer. When the buffer is no longer
needed, the driver frees the memory with a call to FreeBuffer()
.
Allocation requests of Type AllocateAnyPages will allocate any available range of pages that
satisfies the request. On input the data pointed to by HostAddress is ignored.