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
이 요청에 대한 다양한 옵션입니다.
Destination
형식: void *
이 요청의 최종 결과를 수신할 버퍼의 주소입니다.
DestinationPageArray
형식: PULONG_PTR
DestinationIsPhysicalPages가 지정된 경우 이 요청의 최종 결과를 받을 페이지 배열의 주소입니다. 각 항목은 64KB 페이지 번호입니다.
DestinationPageOffset
형식: UINT16
DestinationIsPhysicalPages가 지정된 경우 64KB 페이지에서 대상이 시작되는 오프셋입니다.
DestinationSize
형식: UINT32
이 요청의 최종 결과에서 예상되는 크기(바이트)입니다. 요청에 압축 해제가 포함되어 있지 않은 경우 SourceSize와(과) 같아야 합니다. 요청에 압축 해제가 포함된 경우 이 값은 SourceSize보다 큽니다.
파일
형식: 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
SourceType이 DSTORAGE_REQUEST_SOURCE_MEMORY
이고 SourceIsPhysicalPages가 지정된 경우 64KB 페이지에서 원본이 시작하는 오프셋입니다.
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 페이지를 사용해야 합니다.
자세한 내용은 DirectStorage 개요의 “EnqueueRequest” 섹션을 참조하세요.
요구 사항
헤더: dstorage_xs.h
지원되는 플랫폼: Xbox Series 콘솔