UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::BulkData::Private Namespace Reference

Classes

class  FChunkBulkDataRequest
 
class  FChunkFileSizeRequest
 
class  FChunkReadFileHandle
 
class  FChunkReadFileRequest
 
class  FChunkRequest
 

Enumerations

enum class  EChunkRequestStatus : uint32 {
  None = 0 , Pending = 1 << 0 , Canceled = 1 << 1 , DataReady = 1 << 2 ,
  CallbackTriggered = 1 << 3
}
 

Functions

bool OpenReadBulkData (const FBulkMetaData &BulkMeta, const FIoChunkId &BulkChunkId, int64 Offset, int64 Size, EAsyncIOPriorityAndFlags Priority, TFunction< void(FArchive &Ar)> &&Read)
 
TUniquePtr< IAsyncReadFileHandleOpenAsyncReadBulkData (const FBulkMetaData &BulkMeta, const FIoChunkId &BulkChunkId, uint64 ChunkSize, uint64 AvailableChunkSize)
 
TUniquePtr< IBulkDataIORequestCreateStreamingRequest (const FBulkMetaData &BulkMeta, const FIoChunkId &BulkChunkId, int64 Offset, int64 Size, EAsyncIOPriorityAndFlags Priority, FBulkDataIORequestCallBack *CompleteCallback, uint8 *UserSuppliedMemory)
 
bool TryMemoryMapBulkData (const FBulkMetaData &BulkMeta, const FIoChunkId &BulkChunkId, int64 Offset, int64 Size, FIoMappedRegion &OutRegion)
 
FArchiveoperator<< (FArchive &Ar, FBulkMetaResource &BulkMeta)
 
FString GetDebugNameFromArchive (FArchive &Ar)
 
voidSafeMalloc (int64 SizeInBytes, uint32 Alignment)
 
voidSafeRealloc (void *Original, int64 SizeInBytes, uint32 Alignment)
 
 ENUM_CLASS_FLAGS (EChunkRequestStatus)
 
TUniquePtr< IAsyncReadFileHandleOpenAsyncReadBulkData (const FBulkMetaData &BulkMeta, const FIoChunkId &BulkChunkId)
 

Enumeration Type Documentation

◆ EChunkRequestStatus

Enumerator
None 
Pending 
Canceled 
DataReady 
CallbackTriggered 

Function Documentation

◆ CreateStreamingRequest()

TUniquePtr< IBulkDataIORequest > UE::BulkData::Private::CreateStreamingRequest ( const FBulkMetaData &  BulkMeta,
const FIoChunkId BulkChunkId,
int64  Offset,
int64  Size,
EAsyncIOPriorityAndFlags  Priority,
FBulkDataIORequestCallBack CompleteCallback,
uint8 UserSuppliedMemory 
)

Create bulk data streaming request.

◆ ENUM_CLASS_FLAGS()

UE::BulkData::Private::ENUM_CLASS_FLAGS ( EChunkRequestStatus  )

◆ GetDebugNameFromArchive()

FString UE::BulkData::Private::GetDebugNameFromArchive ( FArchive Ar)

Attempt to return the best debug name we can from a given archive. First we check to see the archive has a FLinkerLoad from which we can find the name of the package being loaded from. If not we return an unknown string as the FArchive name is often not very useful for identification purposes.

◆ OpenAsyncReadBulkData() [1/2]

TUniquePtr< IAsyncReadFileHandle > UE::BulkData::Private::OpenAsyncReadBulkData ( const FBulkMetaData &  BulkMeta,
const FIoChunkId BulkChunkId 
)

◆ OpenAsyncReadBulkData() [2/2]

TUniquePtr< IAsyncReadFileHandle > UE::BulkData::Private::OpenAsyncReadBulkData ( const FBulkMetaData &  BulkMeta,
const FIoChunkId BulkChunkId,
uint64  ChunkSize,
uint64  AvailableChunkSize 
)

Open async read file handle for the specified bulk data chunk ID.

◆ OpenReadBulkData()

bool UE::BulkData::Private::OpenReadBulkData ( const FBulkMetaData &  BulkMeta,
const FIoChunkId BulkChunkId,
int64  Offset,
int64  Size,
EAsyncIOPriorityAndFlags  Priority,
TFunction< void(FArchive &Ar)> &&  Read 
)

Open the bulk data chunk fo reading.

◆ operator<<()

FArchive & UE::BulkData::Private::operator<< ( FArchive Ar,
FBulkMetaResource &  BulkMeta 
)

◆ SafeMalloc()

void * UE::BulkData::Private::SafeMalloc ( int64  SizeInBytes,
uint32  Alignment 
)
inline

Bulkdata payload lengths are stored as type int64 but FMemory::Malloc takes SIZE_T which could potentially be 32bit. This utility helps convert between the two and makes sure that if SizeInBytes exceeds the max size that FMemory::Malloc accepts that we return nullptr rather than a smaller buffer than was requested.

PLATFORM_32BITS

◆ SafeRealloc()

void * UE::BulkData::Private::SafeRealloc ( void Original,
int64  SizeInBytes,
uint32  Alignment 
)
inline

Bulkdata payload lengths are stored as type int64 but FMemory::Malloc takes SIZE_T which could potentially be 32bit. This utility helps convert between the two and makes sure that if SizeInBytes exceeds the max size that FMemory::Realloc accepts that we return nullptr rather than a smaller buffer than was requested.

PLATFORM_32BITS

◆ TryMemoryMapBulkData()

bool UE::BulkData::Private::TryMemoryMapBulkData ( const FBulkMetaData &  BulkMeta,
const FIoChunkId BulkChunkId,
int64  Offset,
int64  Size,
FIoMappedRegion OutRegion 
)

Try memory map the chunk specified by the bulk data ID.