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

# GetShapeDmaWritePointer

> GetShapeDmaWritePointer

# GetShapeDmaWritePointer

Obtiene el puntero de escritura de acceso directo a memoria (DMA).

## Sintaxis

```cpp theme={null}
UINT32 GetShapeDmaWritePointer(  
         const SHAPE_DMA_CONTEXT* context  
)  
```

### Parámetros

*context*   \_In\_\
Tipo: [SHAPE\_DMA\_CONTEXT\*](/reference/audio/shapedmacontext/structs/shape_dma_context)

Puntero a una estructura [SHAPE\_DMA\_CONTEXT](/reference/audio/shapedmacontext/structs/shape_dma_context).

### Valor devuelto

Tipo: UINT32

El puntero de escritura de DMA.

## Comentarios

Para calcular el tamaño de un búfer DMA, use la fórmula siguiente:

```cpp theme={null}
fullBufferSizeInBytes = 128 * 4 * numChannels * numFrames  
```

Los punteros de lectura y escritura se incrementan de la siguiente manera:

```cpp theme={null}
readPointer = (readPointer + 1) % numFrames 

writePointer = (writePointer + 1) % numFrames  
```

Las direcciones dentro del búfer de audio se calculan de la siguiente manera:

```cpp theme={null}
readAddress = audioBuffer + (128 * 4 * ((readPointer * numChannels) + channel))   

writeAddress = audioBuffer + (128 * 4 * ((writePointer * numChannels) + channel))  
```

Puede evitar los comandos DMA bloqueados asegurándose de que el búfer de audio sea lo suficientemente grande y de que los datos se transmitan a intervalos regulares (en relación con el tamaño del búfer). Por ejemplo, si transmite cuatro fotogramas de hardware a la vez, asegúrese de que en el búfer haya algún múltiplo de esos fotogramas (al menos con doble búfer, es decir, ocho fotogramas) para que el hardware pueda escribir por delante del puntero de lectura del título. Como alternativa, podría exigir el vaciado del búfer antes de enviar el siguiente grafo de flujo (consumir, actualizar el puntero de lectura de DMA y, a continuación, enviar el grafo de flujo). Para obtener más detalles, consulte [Comandos bloqueados](/build/console-features/audio/overviews/shape-overview#ID4EBGAC) en [Información general sobre SHAPE](/build/console-features/audio/overviews/shape-overview).

Puede enviar grafos de flujo para que se procesen como persistentes o no persistentes. Los grafos de flujo persistentes se procesan y, a continuación, permanecen residentes para repetir su procesamiento en el siguiente fotograma después de que los punteros de lectura y escritura hayan avanzado y de que se haya actualizado el resto de la información de contexto.

## Requisitos

**Encabezado:** shapedmacontext.h

**Plataformas compatibles:** consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [ShapeDmaContext](/es/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [SetShapeDmaWritePointer](/es/reference/audio/shapedmacontext/functions/setshapedmawritepointer.md)
- [IncrementShapeDmaWritePointer](/es/reference/audio/shapedmacontext/functions/incrementshapedmawritepointer.md)
- [GetShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [GetShapeDmaReadWriteFull](/es/reference/audio/shapedmacontext/functions/getshapedmareadwritefull.md)
