DSTORAGE_REQUEST
Represents a DirectStorage read request.Syntax
Members
OptionsType: 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.
FileOffsetType: 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.
*SourceType: void Address of the source buffer to be read from, if SourceType is
DSTORAGE_REQUEST_SOURCE_MEMORY and SourceIsPhysicalPages is not specified.
SourcePageArrayType: 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.
SourcePageOffsetType: UINT16 Offset into the 64-KB page where the source starts, if SourceType is
DSTORAGE_REQUEST_SOURCE_MEMORY and SourceIsPhysicalPages is specified.
SourceSizeType: 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 asEnqueueRequest 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.
