DSTORAGE_REQUEST
表示 DirectStorage 读取请求。
语法
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;
};
成员
选项
类型:DSTORAGE_REQUEST_OPTIONS
用于此请求的各种选项。
目标
类型:void *
要接收该请求的最终结果的缓冲区的地址。
DestinationPageArray
类型:PULONG_PTR
要接收此请求的最终结果的页面数组的地址(如果指定了 DestinationIsPhysicalPages)。 每一条目都是 64KB 页码。
DestinationPageOffset
类型:UINT16
64KB 页中目标开始位置的偏移量(如果指定了 DestinationIsPhysicalPages)。
DestinationSize
类型:UINT32
要接收该请求的最终结果的大小(以字节为单位)。 若要求不包含解压缩应等同于SourceSize。 若要求包含解压缩,则此值将大于SourceSize。
File
类型:IDStorageFileX *
要从中执行此读取请求的文件(如果 SourceType 为 DSTORAGE_REQUEST_SOURCE_FILE
)。
FileOffset
类型:UINT64
文件中读取请求开始位置的偏移量(以字节为单位)(如果 SourceType 为 DSTORAGE_REQUEST_SOURCE_FILE
)。 如果指定了 ZlibDecompress 或 BcpackMode,偏移量必须是 16 字节对齐的。
*
Source
类型:void
要从中读取的源缓冲区的地址(如果 SourceType 为 DSTORAGE_REQUEST_SOURCE_MEMORY
,并且未指定 SourceIsPhysicalPages)。
SourcePageArray
类型:PULONG_PTR
要提供从中读取的源缓冲区的页面数组的地址(如果 SourceType 为 DSTORAGE_REQUEST_SOURCE_MEMORY
,并且指定了 SourceIsPhysicalPages)。 每一条目都是 64KB 页码。
SourcePageOffset
类型:UINT16
64KB 页中源开始位置的的偏移量(如果 SourceType 为 DSTORAGE_REQUEST_SOURCE_MEMORY
,并且指定了 SourceIsPhysicalPages)。
SourceSize
类型:UINT32
要从文件或内存源中读取的大小(以字节为单位)。
IntermediateSize
类型:UINT32
BCPack 压缩数据的字节数(如果同时指定了 ZlibDecompress 和 BcpackMode)。
CancellationTag
类型:UINT64
用于取消匹配的任意 UINT64 数字。
*
名称
类型:const CHAR
请求的可选名称。 用于调试。 如果指定了,应可以访问此字符串,直到请求完成为止。
备注
此结构由 IDStorageQueueX::EnqueueRequest 方法使用。
EnqueueRequest
返回后即可重用此结构。
单个请求必须满足以下大小要求之一:
DestinationSize 小于或等于 32MiB (DSTORAGE_MAX_4K_PAGE_DESTINATION_SIZE)。
或者
SourceSize(仅适用于内存到内存请求)+ DestinationSize 的合并内存使用量小于或等于 1GiB (DSTORAGE_MAX_REQUEST_SIZE),大于 32MiB 的内存缓冲区必须使用 64KiB 页或 2MiB 页。
有关详细信息,请参阅 DirectStorage 概述的“EnqueueRequest”部分。
要求
头文件:dstorage_xs.h
支持的平台:Xbox Series 主机