PSET_DMA_ENGINE_STATE 콜백 함수(hdaudio.h)

SetDmaEngineState 루틴은 하나 이상의 DMA 엔진의 상태를 실행, 중지, 일시 중지 또는 다시 설정 상태로 설정합니다.

SetDmaEngineState 루틴에 대한 함수 포인터 형식은 다음과 같이 정의됩니다.

구문

PSET_DMA_ENGINE_STATE PsetDmaEngineState;

NTSTATUS PsetDmaEngineState(
  [in] PVOID _context,
       HDAUDIO_STREAM_STATE StreamState,
  [in] ULONG NumberOfHandles,
  [in] PHANDLE Handles
)
{...}

매개 변수

[in] _context

HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2 또는 HDAUDIO_BUS_INTERFACE_BDL 구조체의 컨텍스트 멤버에서 컨텍스트 값을 지정합니다.

StreamState

[in] NumberOfHandles

핸들 배열의 핸들 수를 지정 합니다 . 이 매개 변수를 0이 아닌 값으로 설정합니다.

[in] Handles

DMA 엔진에 대한 핸들 배열에 대한 포인터입니다. 이 매개 변수에 NULL 이 아닌 값을 지정합니다.

반환 값

호출이 DMA 엔진의 상태를 변경하는 데 성공하면 SetDmaEngineState는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 루틴이 적절한 오류 코드를 반환합니다. 다음 표에서는 가능한 반환 상태 코드 중 일부를 보여 줍니다.

반환 코드 설명
STATUS_INVALID_HANDLE
핸들 중 하나가 잘못되었음을 나타냅니다.
STATUS_INVALID_PARAMETER
매개 변수 값 중 하나가 잘못되었음을 나타냅니다(잘못된 매개 변수 값 또는 잘못된 포인터).
STATUS_INVALID_DEVICE_REQUEST
현재 DMA 엔진 중 하나에 대해 할당된 버퍼가 없음을 나타냅니다.

설명

이 루틴은 하나 이상의 DMA 엔진 상태를 streamState 매개 변수가 지정하는 상태로 변경합니다. 루틴은 핸들 배열의 핸들이 식별하는 모든 DMA 엔진의 상태 전환을 동기화 합니다 . 자세한 내용은 두 개 이상의 스트림 동기화를 참조하세요.

이 루틴을 호출하기 전에 핸들 배열에서 각 DMA 엔진을 설정합니다.

  • HD Audio DDI의 HDAUDIO_BUS_INTERFACE 버전을 사용하는 경우 AllocateDmaBuffer 를 호출하여 DMA 엔진을 설정합니다.
  • HDAUDIO_BUS_INTERFACE_BDL 버전의 DDI를 사용하는 경우 SetupDmaEngineWithBdl 을 호출하여 DMA 엔진을 설정합니다.
핸들 배열의 DMA 엔진에 현재 DMA 버퍼가 할당되지 않은 경우 스트림을 다시 설정 이외의 상태로 변경하면 SetDmaEngineState 호출이 실패하고 오류 코드 STATUS_INVALID_DEVICE_REQUEST 반환됩니다.

스트림 상태는 실행 중과 다시 설정 간에 직접 전환할 수 없습니다. 대신 스트림은 먼저 일시 중지 또는 중지됨의 중간 상태를 통과해야 합니다.

  • 실행 중 또는 다시 설정 상태에서 스트림 상태가 일시 중지 또는 중지됨으로 직접 변경될 수 있습니다.
  • 일시 중지되거나 중지된 상태에서 스트림 상태가 실행 중 또는 다시 설정으로 직접 변경될 수 있습니다.
WDM 오디오 드라이버는 SetState 메서드를 호출하는 동안 이 루틴을 호출합니다. 예를 들어 IMiniportWaveCyclicStream::SetState를 참조하세요.

요구 사항

   
대상 플랫폼 데스크톱
헤더 hdaudio.h(Hdaudio.h 포함)
IRQL <=DISPATCH_LEVEL

참고 항목

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

IMiniportWaveCyclicStream::SetState

SetupDmaEngineWithBdl