> ## 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

Representa uma solicitação de leitura do DirectStorage.

## Sintaxe

```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;
};
```

### Membros

*Options*\
Tipo: [DSTORAGE\_REQUEST\_OPTIONS](/pt-BR/reference/system/dstorage/structs/dstorage_request_options)

Várias opções para esta solicitação.

*Destination*\
Tipo: void \*

Endereço do buffer que receberá o resultado final desta solicitação.

*DestinationPageArray*\
Tipo: PULONG\_PTR

Endereço da matriz de páginas que receberá o resultado final desta solicitação se *DestinationIsPhysicalPages* for especificado. Cada entrada é um número de página de 64 KB.

*DestinationPageOffset*\
Tipo: UINT16

Deslocamento na página de 64 KB em que o destino começa, se *DestinationIsPhysicalPages* for especificado.

*DestinationSize*\
Tipo: UINT32

O tamanho esperado, em bytes, do resultado final desta solicitação.  Se a solicitação não incluir descompactação, esse valor deverá ser igual a *SourceSize*.  Para solicitações que incluem descompactação, esse valor será maior que *SourceSize*.

*File*\
Tipo: IDStorageFileX \*

O arquivo a partir do qual esta solicitação de leitura será executada, se *SourceType* for `DSTORAGE_REQUEST_SOURCE_FILE`.

*FileOffset*\
Tipo: UINT64

O deslocamento, em bytes, no arquivo em que a solicitação de leitura começará, se *SourceType* for `DSTORAGE_REQUEST_SOURCE_FILE`. Se *ZlibDecompress* ou *BcpackMode* for especificado, o deslocamento deverá estar alinhado em 16 bytes.

\**Source*\
Tipo: void

Endereço do buffer de origem a ser lido, se *SourceType* for `DSTORAGE_REQUEST_SOURCE_MEMORY` e *SourceIsPhysicalPages* não for especificado.

*SourcePageArray*\
Tipo: PULONG\_PTR

Endereço da matriz de páginas que fornece o buffer de origem a ser lido, se *SourceType* for `DSTORAGE_REQUEST_SOURCE_MEMORY` e *SourceIsPhysicalPages* for especificado. Cada entrada é um número de página de 64 KB.

*SourcePageOffset*\
Tipo: UINT16

Deslocamento na página de 64 KB em que a origem começa, se *SourceType* for `DSTORAGE_REQUEST_SOURCE_MEMORY` e *SourceIsPhysicalPages* for especificado.

*SourceSize*\
Tipo: UINT32

Tamanho, em bytes, a ser lido da origem de arquivo ou memória.

*IntermediateSize*\
Tipo: UINT32

O número de bytes de dados compactados com BCPack se *ZlibDecompress* e *BcpackMode* forem especificados.

*CancellationTag*\
Tipo: UINT64

Um número UINT64 arbitrário usado para correspondência de cancelamento.

\**Name*\
Tipo: const CHAR

Nome opcional da solicitação. Usado para depuração. Se especificada, a cadeia de caracteres deverá permanecer acessível até que a solicitação seja concluída.

## Comentários

Esta estrutura é usada pelo método
[IDStorageQueueX::EnqueueRequest](/pt-BR/reference/system/dstorage/interfaces/IDStorageQueueX/methods/idstoragequeuex_enqueuerequest). A
estrutura pode ser reutilizada assim que `EnqueueRequest` retornar.

Uma única solicitação deve atender a um dos seguintes requisitos de tamanho:

* O DestinationSize é igual ou inferior a 32 MiB (**DSTORAGE\_MAX\_4K\_PAGE\_DESTINATION\_SIZE**).

  **OU**

* O uso de memória combinado de SourceSize (somente para solicitações de memória para memória) +
  DestinationSize é igual ou inferior a 1 GiB (**DSTORAGE\_MAX\_REQUEST\_SIZE**),
  e os buffers de memória maiores que 32 MiB devem usar páginas de 64 KiB
  ou páginas de 2 MiB.

Para obter mais informações, consulte a seção "EnqueueRequest" de [Visão geral do DirectStorage](/pt-BR/build/console-features/storage/directstorage/directstorage-overview).

## Requisitos

**Cabeçalho:** dstorage\_xs.h

**Plataformas compatíveis:** consoles XBOX Series

## Confira também

[DStorage](/pt-BR/reference/system/dstorage/dstorage_members)


## Related topics

- [DSTORAGE_REQUEST](/reference/system/dstorage/structs/dstorage_request.md)
- [DSTORAGE_REQUEST_OPTIONS](/reference/system/dstorage/structs/dstorage_request_options.md)
