DSTORAGE_REQUEST
代表 DirectStorage 读取请求。Syntax
Members
Options类型:DSTORAGE_REQUEST_OPTIONS 此请求的各种选项。 Destination
类型:void * 用于接收此请求最终结果的缓冲区地址。 DestinationPageArray
类型:PULONG_PTR 在指定 DestinationIsPhysicalPages 时,用于接收此请求最终结果的页数组的地址。每个条目为一个 64-KB 页码。 DestinationPageOffset
类型:UINT16 在指定 DestinationIsPhysicalPages 时,目标起始位置在 64-KB 页内的偏移量。 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 时,提供要读取的源缓冲区的页数组地址。每个条目为一个 64-KB 页码。
SourcePageOffset类型:UINT16 在 SourceType 为
DSTORAGE_REQUEST_SOURCE_MEMORY 且指定了 SourceIsPhysicalPages 时,源起始位置在 64-KB 页内的偏移量。
SourceSize类型:UINT32 要从文件或内存源读取的大小(以字节为单位)。 IntermediateSize
类型:UINT32 在同时指定了 ZlibDecompress 和 BcpackMode 时,BCPack 压缩数据的字节数。 CancellationTag
类型:UINT64 用于取消匹配的任意 UINT64 数值。 *Name
类型:const CHAR 请求的可选名称。用于调试。如果指定,则在请求完成之前该字符串应可访问。
Remarks
此结构由 IDStorageQueueX::EnqueueRequest 方法使用。EnqueueRequest 返回后即可重用该结构。
单个请求必须满足以下大小要求之一:
- DestinationSize 小于或等于 32MiB (DSTORAGE_MAX_4K_PAGE_DESTINATION_SIZE)。 或
- SourceSize(仅适用于内存到内存的请求)与 DestinationSize 之和的总内存使用量小于或等于 1GiB (DSTORAGE_MAX_REQUEST_SIZE),并且大于 32MiB 的内存缓冲区必须使用 64KiB 页或 2MiB 页。
