> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DSTORAGE_REQUEST

> DSTORAGE_REQUEST

# DSTORAGE\_REQUEST

DirectStorage 읽기 요청을 나타냅니다.

## 구문

```cpp theme={null}
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;
};
```

### 멤버

*Options*\
형식: [DSTORAGE\_REQUEST\_OPTIONS](/reference/system/dstorage/structs/dstorage_request_options)

이 요청에 대한 다양한 옵션입니다.

*Destination*\
형식: void \*

이 요청의 최종 결과를 받을 버퍼의 주소입니다.

*DestinationPageArray*\
형식: PULONG\_PTR

*DestinationIsPhysicalPages*가 지정된 경우, 이 요청의 최종 결과를 받을 페이지 배열의 주소입니다. 각 항목은 64KB 페이지 번호입니다.

*DestinationPageOffset*\
형식: UINT16

*DestinationIsPhysicalPages*가 지정된 경우, 대상이 시작되는 64KB 페이지 내의 오프셋입니다.

*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*가 지정된 경우, 읽어들일 소스 버퍼를 제공하는 페이지 배열의 주소입니다. 각 항목은 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](/reference/system/dstorage/interfaces/IDStorageQueueX/methods/idstoragequeuex_enqueuerequest) 메서드에서 사용됩니다.
`EnqueueRequest`가 반환되는 즉시 구조체를 다시 사용할 수 있습니다.

단일 요청은 다음 크기 요건 중 하나를 충족해야 합니다.

* DestinationSize가 32MiB(**DSTORAGE\_MAX\_4K\_PAGE\_DESTINATION\_SIZE**) 이하인 경우.

  **또는**

* SourceSize(메모리 대 메모리 요청에만 해당) +
  DestinationSize의 결합된 메모리 사용량이 1GiB(**DSTORAGE\_MAX\_REQUEST\_SIZE**) 이하이고,
  32MiB보다 큰 메모리 버퍼는 64KiB 페이지 또는 2MiB 페이지를 사용해야 하는 경우.

자세한 내용은 [DirectStorage 개요](/build/console-features/storage/directstorage/directstorage-overview)의 "EnqueueRequest" 섹션을 참조하세요.

## 요구 사항

**헤더:** dstorage\_xs.h

**지원되는 플랫폼:** XBOX Series 콘솔

## 함께 보기

[DStorage](/reference/system/dstorage/dstorage_members)


## Related topics

- [DSTORAGE_REQUEST_OPTIONS](/ko/reference/system/dstorage/structs/dstorage_request_options.md)
- [DStorage](/ko/reference/system/dstorage/dstorage_members.md)
- [IDStorageQueueX::EnqueueRequest](/ko/reference/system/dstorage/interfaces/IDStorageQueueX/methods/idstoragequeuex_enqueuerequest.md)
- [DirectStorage 개요](/ko/build/console-features/storage/directstorage/directstorage-overview.md)
- [DSTORAGE_REQUEST_SOURCE_TYPE](/ko/reference/system/dstorage/enums/dstorage_request_source_type.md)
