Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В ChangeBandwidthAllocation подпрограмма изменяет распределение пропускной способности модуля DMA в канале hd Audio Link.
Тип указателя функции для подпрограммы 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
Задает значение контекста из элемента контекста context структуры HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2или HDAUDIO_BUS_INTERFACE_BDL.
[in] Handle
Обработка идентификации подсистемы DMA. Это значение дескриптора было получено из предыдущего вызова AllocateCaptureDmaEngine или AllocateRenderDmaEngine.
[in] StreamFormat
Задает запрошенный формат потока. Этот параметр указывает на выделенную вызывающим объектом структуру типа HDAUDIO_STREAM_FORMAT, указывающую формат данных для потока.
[out] ConverterFormat
Извлекает формат преобразователя. Этот параметр указывает на выделенную вызывающим объектом структуру типа HDAUDIO_CONVERTER_FORMAT, в которую подпрограмма записывает кодированный формат. Дополнительные сведения см. в следующем разделе "Примечания".
Возвращаемое значение
ChangeBandwidthAllocation возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае подпрограмма возвращает соответствующий код ошибки. В следующей таблице показаны некоторые возможные коды ошибок возврата.
| Возвращаемый код | Описание |
|---|---|
|
Указывает, что вызывающий объект выполняется в IRQL, который слишком высок. |
|
Указывает, что значение параметра дескриптором недопустимо. |
|
Указывает, что одно из значений параметров неправильно (недопустимый или недопустимый формат потока). |
|
Указывает, что подсистема DMA не может выделить достаточное внутреннее хранилище FIFO для поддержки запрошенного формата потока. |
|
Указывает, что для удовлетворения запроса доступно недостаточно пропускной способности. |
|
Указывает, что поток не находится в состоянии сброса или что буфер по-прежнему выделяется для подсистемы DMA. |
Замечания
Вызывающий объект получает начальное распределение пропускной способности для подсистемы DMA путем вызова AllocateCaptureDmaEngine или AllocateRenderDmaEngine. После этого вызывающий объект может изменить распределение пропускной способности, вызвав ChangeBandwidthAllocation.
С помощью параметра converterFormat подпрограмма выводит значение дескриптора потока, которое вызывающий объект может использовать для программирования входных или выходных преобразователей. Подпрограмма кодирует сведения из параметра streamFormat в 16-разрядное целое число. Дополнительные сведения см. в HDAUDIO_CONVERTER_FORMAT.
Эта подпрограмма завершается ошибкой и возвращает код ошибки STATUS_INVALID_DEVICE_REQUEST в любом из следующих случаев:
- Любой ранее выделенный буфер DMA не был освобожден (вызывая FreeDmaBuffer или FreeContiguousDmaBuffer).
- Поток находится в состоянии, отличном от сброса.
ChangeBandwidthAllocation завершается сбоем, существующее резервирование пропускной способности остается в силе. Распределение пропускной способности изменяется только в том случае, если вызов выполнен успешно.
В Windows Vista и более поздних версиях драйвер минипорта волн вызывает эту подпрограмму во время выполнения метода SetFormat (после вызова одной из подпрограмм "ВыделитьXxx"DmaEngine в DDI hd Audio DDI). Дополнительные сведения см. в IMiniportWavePciStream::SetFormat.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Настольный |
| заголовка | hdaudio.h (include Hdaudio.h) |
| IRQL | PASSIVE_LEVEL |