DSTORAGE_REQUEST
代表 DirectStorage 讀取要求。語法
成員
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 要求的選擇性名稱。用於偵錯。如果有指定,此字串在要求完成之前都應可供存取。
備註
此結構由 IDStorageQueueX::EnqueueRequest 方法使用。一旦EnqueueRequest 傳回,
就可以重複使用此結構。
單一要求必須符合下列其中一項大小需求:
- DestinationSize 等於或小於 32MiB (DSTORAGE_MAX_4K_PAGE_DESTINATION_SIZE)。 或
- SourceSize (僅適用於記憶體對記憶體要求) + DestinationSize 的合計記憶體使用量等於或小於 1GiB (DSTORAGE_MAX_REQUEST_SIZE), 且大於 32MiB 的記憶體緩衝區必須使用 64KiB 頁面 或 2MiB 頁面。
