Device I/O Protocol
Version 1.02 12/12/00 147
6.2.5 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. Type
EFI_DEVICE_IO_INTERFACE is defined in Section 6.2.
Type The type allocation to perform. Type EFI_ALLOCATE_TYPE is
defined in Chapter 3.
MemoryType The type of memory to allocate, EfiBootServicesData or
EfiRuntimeServicesData. Type EFI_MEMORY_TYPE is defined
in Chapter 3.
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 3.
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.