PSET_DMA_ENGINE_STATE 콜백 함수(hdaudio.h)

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

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

구문

PSET_DMA_ENGINE_STATE PsetDmaEngineState;

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

매개 변수

[in] _context

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

[in] StreamState

새 스트림 상태를 지정합니다. 이 매개 변수를 다음 HDAUDIO_STREAM_STATE 열거형 값 중 하나로 설정합니다.

  • PauseState (일시 중지됨)
  • ResetState (초기화)
  • RunState (실행 중)
  • StopState (중지됨)
현재 구현에서 PauseStateStopState 는 동일한 하드웨어 상태를 나타냅니다.

[in] NumberOfHandles

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

[in] Handles

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

반환 값

SetDmaEngineState 는 호출이 DMA 엔진의 상태를 변경하는 데 성공하면 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 버퍼가 할당되지 않은 경우 스트림을 Reset 이외의 상태로 변경하면 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