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 *

要从中执行此读取请求的文件(如果 SourceTypeDSTORAGE_REQUEST_SOURCE_FILE)。

FileOffset
类型:UINT64

文件中读取请求开始位置的偏移量(以字节为单位)(如果 SourceTypeDSTORAGE_REQUEST_SOURCE_FILE)。 如果指定了 ZlibDecompressBcpackMode,偏移量必须是 16 字节对齐的。

*Source
类型:void

要从中读取的源缓冲区的地址(如果 SourceTypeDSTORAGE_REQUEST_SOURCE_MEMORY,并且未指定 SourceIsPhysicalPages)。

SourcePageArray
类型:PULONG_PTR

要提供从中读取的源缓冲区的页面数组的地址(如果 SourceTypeDSTORAGE_REQUEST_SOURCE_MEMORY,并且指定了 SourceIsPhysicalPages)。 每一条目都是 64KB 页码。

SourcePageOffset
类型:UINT16

64KB 页中源开始位置的的偏移量(如果 SourceTypeDSTORAGE_REQUEST_SOURCE_MEMORY,并且指定了 SourceIsPhysicalPages)。

SourceSize
类型:UINT32

要从文件或内存源中读取的大小(以字节为单位)。

IntermediateSize
类型:UINT32

BCPack 压缩数据的字节数(如果同时指定了 ZlibDecompressBcpackMode)。

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 主机

另请参阅

DStorage