DSTORAGE_REQUEST
Represents a DirectStorage read request.
Syntax
struct DSTORAGE_REQUEST {
DSTORAGE_REQUEST_OPTIONS Options;
union
{
void *Destination;
struct
{
PULONG_PTR DestinationPageArray;
UINT16 DestinationPageOffset;
};
};
UINT32 DestinationSize;
union
{
struct
{
IDStorageFileX *File;
UINT64 FileOffset;
};
void *Source;
struct
{
PULONG_PTR SourcePageArray;
UINT16 SourcePageOffset;
};
};
UINT32 SourceSize;
UINT32 IntermediateSize;
UINT64 CancellationTag;
const CHAR *Name;
};
Members
Options
Type: DSTORAGE_REQUEST_OPTIONS
Various options for this request.
Destination
Type: void *
Address of the buffer to receive the final result of this request.
DestinationPageArray
Type: PULONG_PTR
Address of the page array to receive the final result of this request if DestinationIsPhysicalPages is specified. Each entry is a 64-KB page number.
DestinationPageOffset
Type: UINT16
Offset into the 64-KB page where the destination starts, if DestinationIsPhysicalPages is specified.
DestinationSize
Type: UINT32
The expected size, in bytes, of the final result of this request. If the request does not include decompression this should be equal to SourceSize. For requests that include decompression, this value will be larger than SourceSize.
File
Type: IDStorageFileX *
The file to perform this read request from, if SourceType is DSTORAGE_REQUEST_SOURCE_FILE
.
FileOffset
Type: UINT64
The offset, in bytes, in the file to start the read request at, if SourceType is DSTORAGE_REQUEST_SOURCE_FILE
. If ZlibDecompress or BcpackMode is specified, the offset must be 16-byte aligned.
*Source
Type: void
Address of the source buffer to be read from, if SourceType is DSTORAGE_REQUEST_SOURCE_MEMORY
and SourceIsPhysicalPages is not specified.
SourcePageArray
Type: PULONG_PTR
Address of the page array to provide the source buffer to be read from if SourceType is DSTORAGE_REQUEST_SOURCE_MEMORY
and SourceIsPhysicalPages is specified. Each entry is a 64-KB page number.
SourcePageOffset
Type: UINT16
Offset into the 64-KB page where the source starts, if SourceType is DSTORAGE_REQUEST_SOURCE_MEMORY
and SourceIsPhysicalPages is specified.
SourceSize
Type: UINT32
Size, in bytes, to be read from the file or memory source.
IntermediateSize
Type: UINT32
The number of bytes of BCPack compressed data if ZlibDecompress and BcpackMode are both specified.
CancellationTag
Type: UINT64
An arbitrary UINT64 number used for cancellation matching.
*Name
Type: const CHAR
Optional name of the request. Used for debugging. If specified, the string should be accessible until the request completes.
Remarks
This structure is used by the
IDStorageQueueX::EnqueueRequest method. The
structure can be reused as soon as EnqueueRequest
returns.
A single request must satisfy one of the following size requirements:
The DestinationSize is equal or less than 32MiB (DSTORAGE_MAX_4K_PAGE_DESTINATION_SIZE).
OR
The combined memory usage of SourceSize (for memory-to-memory requests only) + DestinationSize is equal or less than 1GiB (DSTORAGE_MAX_REQUEST_SIZE), and the memory buffers that are larger than 32MiB must use either 64KiB pages or 2MiB pages.
For more information, see the "EnqueueRequest" section of DirectStorage Overview.
Requirements
Header: dstorage_xs.h
Supported platforms: Xbox Series consoles