PALLOCATE_CAPTURE_DMA_ENGINE 콜백 함수(hdaudio.h)

루틴은 AllocateCaptureDmaEngine 캡처 스트림에 대한 DMA 엔진을 할당합니다.

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

구문

PALLOCATE_CAPTURE_DMA_ENGINE PallocateCaptureDmaEngine;

NTSTATUS PallocateCaptureDmaEngine(
  [in]  PVOID _context,
  [in]  UCHAR CodecAddress,
  [in]  PHDAUDIO_STREAM_FORMAT StreamFormat,
  [out] PHANDLE Handle,
  [out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}

매개 변수

[in] _context

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

[in] CodecAddress

코덱 주소를 지정합니다. 이 매개 변수는 코덱이 캡처 데이터를 HD 오디오 버스 컨트롤러에 제공하는 SDI(직렬 데이터)를 식별합니다. N SDI 핀이 있는 버스 컨트롤러는 주소가 0에서 n-1까지인 최대 n개의 코덱을 지원할 수 있습니다.

[in] StreamFormat

요청된 스트림 형식을 지정합니다. 이 매개 변수는 스트림의 데이터 형식을 지정하는 HDAUDIO_STREAM_FORMAT 형식의 호출자가 할당한 구조를 가리킵니다.

[out] Handle

DMA 엔진에 대한 핸들을 검색합니다. 이 매개 변수는 루틴이 DMA 엔진을 식별하는 핸들을 작성하는 호출자 할당 HANDLE 변수를 가리킵니다.

[out] ConverterFormat

변환기 형식을 검색합니다. 이 매개 변수는 루틴이 인코딩된 형식을 작성하는 HDAUDIO_CONVERTER_FORMAT 형식의 호출자가 할당한 구조를 가리킵니다.

반환 값

AllocateCaptureDmaEngine 는 호출이 DMA 엔진을 예약하는 데 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 가능한 반환 값에는 다음 표의 오류 코드가 포함됩니다.

반환 코드 설명
STATUS_BUFFER_TOO_SMALL
DMA 엔진이 요청된 스트림 형식을 지원하기에 충분한 내부 FIFO 스토리지를 할당할 수 없음을 나타냅니다.
STATUS_INSUFFICIENT_RESOURCES
사용 가능한 DMA 엔진이 없거나 요청이 사용 가능한 대역폭 리소스를 초과했음을 나타냅니다.
STATUS_INVALID_PARAMETER
매개 변수 값 중 하나가 잘못되었음을 나타냅니다(잘못된 매개 변수 값 또는 잘못된 포인터).

설명

이 루틴은 캡처 DMA 엔진을 할당하고 스트림의 데이터 형식을 지정합니다. 성공하면 루틴은 호출자가 이후에 DMA 엔진을 식별하는 데 사용하는 핸들을 출력합니다.

루틴은 AllocateCaptureDmaEngine 하드웨어 리소스(DMA 엔진)를 예약하지만 DMA 하드웨어를 구성하지는 않습니다. DMA 엔진을 예약하기 위해 이 루틴을 호출한 후 함수 드라이버는 DMA 엔진에 DMA 버퍼를 할당하고 버퍼를 사용하도록 엔진을 구성해야 합니다.

  • HDAUDIO_BUS_INTERFACE 버전의 HD Audio DDI를 사용하는 경우 함수 드라이버는 AllocateDmaBuffer 루틴을 호출하여 HD 오디오 버스 드라이버가 DMA 전송을 위해 데이터 버퍼를 할당하고 버퍼를 사용하도록 DMA 엔진을 설정하도록 합니다.
  • HDAUDIO_BUS_INTERFACE_BDL 버전의 DDI를 사용하는 경우 함수 드라이버는 AllocateContiguousDmaBuffer 를 호출하여 DMA 버퍼를 할당하고 SetupDmaEngineWithBdl 루틴을 호출하여 버퍼를 사용하도록 DMA 엔진을 설정합니다.
streamFormat 매개 변수는 캡처 스트림의 데이터 형식을 지정합니다. 를 호출한 AllocateCaptureDmaEngineChangeBandwidthAllocation을 호출하여 스트림의 형식을 변경할 수 있습니다.

핸들 매개 변수를 통해 루틴은 호출자가 AllocateDmaBuffer, ChangeBandwidthAllocation, FreeDmaBuffer, SetupDmaEngineWithBdlSetDmaEngineState에 대한 후속 호출에서 할당된 DMA 엔진을 식별하는 데 사용하는 핸들을 출력합니다. 함수 드라이버는 FreeDmaEngine을 호출하여 핸들을 해제합니다.

converterFormat 매개 변수를 통해 루틴은 호출자가 입력 변환기를 프로그래밍하는 데 사용할 수 있는 스트림 설명자 값을 출력합니다. 루틴은 streamFormat 매개 변수의 정보를 16비트 정수로 인코딩합니다. 자세한 내용은 HDAUDIO_CONVERTER_FORMAT 참조하세요.

에 대한 호출이 성공한 AllocateCaptureDmaEngine직후 DMA 엔진은 다시 설정 스트림 상태입니다. SetDmaEngineState를 호출하여 DMA 엔진을 실행 중, 일시 중지 또는 중지됨 상태로 변경하기 전에 클라이언트는 먼저 엔진에 대한 DMA 버퍼를 할당해야 합니다.

WDM(Windows 드라이버 모델) 오디오 드라이버는 NewStream 메서드를 실행하는 동안 핀 생성 시 호출 AllocateCaptureDmaEngine 합니다(예: IMiniportWavePci::NewStream 참조).

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 hdaudio.h(Hdaudio.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

AllocateContiguousDmaBuffer

AllocateDmaBuffer

ChangeBandwidthAllocation

FreeDmaEngine

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CONVERTER_FORMAT

HDAUDIO_STREAM_FORMAT

SetDmaEngineState

SetupDmaEngineWithBdl