다음을 통해 공유


PCHANGE_BANDWIDTH_ALLOCATION 콜백 함수(hdaudio.h)

루틴은 ChangeBandwidthAllocation HD 오디오 링크에서 DMA 엔진의 대역폭 할당을 변경합니다.

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

구문

PCHANGE_BANDWIDTH_ALLOCATION PchangeBandwidthAllocation;

NTSTATUS PchangeBandwidthAllocation(
  [in]  PVOID _context,
  [in]  HANDLE Handle,
  [in]  PHDAUDIO_STREAM_FORMAT StreamFormat,
  [out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}

매개 변수

[in] _context

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

[in] Handle

DMA 엔진 식별을 처리합니다. 이 핸들 값은 AllocateCaptureDmaEngine 또는 AllocateRenderDmaEngine에 대한 이전 호출에서 가져옵니다.

[in] StreamFormat

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

[out] ConverterFormat

변환기 형식을 검색합니다. 이 매개 변수는 루틴이 인코딩된 형식을 작성하는 HDAUDIO_CONVERTER_FORMAT 형식의 호출자가 할당한 구조를 가리킵니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

ChangeBandwidthAllocation 는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 루틴은 적절한 오류 코드를 반환합니다. 다음 표에서는 가능한 반환 오류 코드 중 일부를 보여 줍니다.

반환 코드 설명
STATUS_UNSUCCESSFUL
호출자가 너무 높은 IRQL에서 실행 중임을 나타냅니다.
STATUS_INVALID_HANDLE
핸들 매개 변수 값이 잘못되었음을 나타냅니다.
STATUS_INVALID_PARAMETER
매개 변수 값 중 하나가 올바르지 않음을 나타냅니다(잘못된 포인터 또는 잘못된 스트림 형식).
STATUS_BUFFER_TOO_SMALL
DMA 엔진이 요청된 스트림 형식을 지원하기에 충분한 내부 FIFO 스토리지를 할당할 수 없음을 나타냅니다.
STATUS_INSUFFICIENT_RESOURCES
요청을 충족하는 데 사용할 수 있는 대역폭이 충분하지 않음을 나타냅니다.
STATUS_INVALID_DEVICE_REQUEST
스트림이 다시 설정 상태가 아니거나 버퍼가 여전히 DMA 엔진에 할당되어 있음을 나타냅니다.

설명

호출자는 AllocateCaptureDmaEngine 또는 AllocateRenderDmaEngine을 호출하여 DMA 엔진에 대한 초기 대역폭 할당을 가져옵니다. 그 후 호출자는 를 호출 ChangeBandwidthAllocation하여 대역폭 할당을 변경할 수 있습니다.

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

이 루틴은 실패하고 다음 상황 중 하나에서 STATUS_INVALID_DEVICE_REQUEST 오류 코드를 반환합니다.

호출이 ChangeBandwidthAllocation 실패하면 기존 대역폭 예약이 계속 적용됩니다. 대역폭 할당은 호출이 성공한 경우에만 변경됩니다.

Windows Vista 이상에서는 웨이브 미니포트 드라이버가 SetFormat 메서드를 실행하는 동안 이 루틴을 호출합니다(HD 오디오 DDI에서XxxDmaEngine 루틴 할당 중 하나를 호출한 후). 자세한 내용은 IMiniportWavePciStream::SetFormat을 참조하세요.

요구 사항

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

추가 정보

AllocateCaptureDmaEngine

AllocateRenderDmaEngine

FreeContiguousDmaBuffer

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CONVERTER_FORMAT

HDAUDIO_STREAM_FORMAT

IMiniportWavePciStream::SetFormat