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

# SetShapeDmaReadPointer

> SetShapeDmaReadPointer

# SetShapeDmaReadPointer

DMA(Direct Memory Access) 읽기 포인터를 설정합니다.

## Syntax

```cpp theme={null}
HRESULT SetShapeDmaReadPointer(  
         SHAPE_DMA_CONTEXT* context,  
         UINT32 readPointer  
)  
```

### Parameters

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

[SHAPE\_DMA\_CONTEXT](/reference/audio/shapedmacontext/structs/shape_dma_context) 구조체에 대한 포인터입니다.

*readPointer*   \
Type: UINT32

읽기 포인터에 대한 값으로, 프레임(128개 샘플 블록) 단위입니다.

### Return value

Type: HRESULT

HRESULT 성공 또는 오류 코드입니다.

## Remarks

DMA 버퍼의 크기를 계산하려면 다음 공식을 사용하십시오:

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

읽기 및 쓰기 포인터는 다음과 같이 증가합니다:

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

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

오디오 버퍼 내의 주소는 다음과 같이 계산됩니다:

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

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

오디오 버퍼가 충분히 크고 (버퍼 크기와 관련된) 일정한 간격으로 데이터를 스트리밍하도록 함으로써 차단된 DMA 명령을 방지할 수 있습니다. 예를 들어, 한 번에 4개의 하드웨어 프레임을 스트리밍하는 경우, 하드웨어가 타이틀의 읽기 포인터보다 앞서 쓸 수 있도록 이러한 프레임의 배수(적어도 이중 버퍼링된 8프레임)가 버퍼에 있는지 확인하십시오. 또는, 다음 플로우그래프를 제출하기 전에 버퍼 비우기를 강제할 수도 있습니다(소비, DMA 읽기 포인터 갱신, 그런 다음 플로우그래프 제출). 자세한 내용은 [Overview of SHAPE](/build/console-features/audio/overviews/shape-overview)의 [Blocked commands](/build/console-features/audio/overviews/shape-overview#ID4EBGAC)를 참조하십시오.

플로우그래프는 지속형(persistent) 또는 비지속형(non-persistent)으로 처리하도록 제출할 수 있습니다. 지속형 플로우그래프는 처리를 수행한 후 상주 상태로 남아, 읽기 및 쓰기 포인터가 진행되고 다른 컨텍스트 정보가 갱신된 다음 프레임에서 처리를 반복합니다.

## Requirements

**Header:** shapedmacontext.h

**Supported platforms:** XBOX One 계열 콘솔 및 XBOX Series 콘솔

## See also

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


## Related topics

- [ShapeDmaContext](/ko/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [GetShapeDmaReadPointer](/ko/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [IncrementShapeDmaReadPointer](/ko/reference/audio/shapedmacontext/functions/incrementshapedmareadpointer.md)
- [SetShapePcmReadPointer](/ko/reference/audio/shapepcmcontext/functions/setshapepcmreadpointer.md)
- [SetShapeDmaWritePointer](/ko/reference/audio/shapedmacontext/functions/setshapedmawritepointer.md)
