функция обратного вызова PCHANGE_BANDWIDTH_ALLOCATION (hdaudio.h)
Эта подпрограмма 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 (после вызова одной из подпрограмм AllocateXxxDmaEngine в HD Audio DDI). Дополнительные сведения см. в разделе IMiniportWavePciStream::SetFormat.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | hdaudio.h (включая Hdaudio.h) |
IRQL | PASSIVE_LEVEL |