функция обратного вызова 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.

[in] CodecAddress

Указывает адрес кодека. Этот параметр определяет последовательные данные в строке SDI, в которой кодек передает данные записи контроллеру аудиоконфериды HD Audio. Контроллер шины с n pins SDI может поддерживать до n кодеков с адресами от 0 до n-1.

[in] StreamFormat

Задает запрошенный формат потока. Этот параметр указывает на выделенную вызывающим объектом структуру типа HDAUDIO_STREAM_FORMAT, указывающую формат данных для потока.

[out] Handle

Извлекает дескриптор подсистемы DMA. Этот параметр указывает на выделенную вызывающим объектом переменную HANDLE, в которую подпрограмма записывает дескриптор, определяющий подсистему DMA.

[out] ConverterFormat

Извлекает формат преобразователя. Этот параметр указывает на выделенную вызывающим объектом структуру типа HDAUDIO_CONVERTER_FORMAT, в которую подпрограмма записывает кодированный формат.

Возвращаемое значение

AllocateCaptureDmaEngine возвращает STATUS_SUCCESS, если вызов успешно резервирует подсистему DMA. В противном случае возможные возвращаемые значения включают коды ошибок в следующей таблице.

Возвращаемый код Описание
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 Audio bus выделил буфер данных для передачи DMA и настроил обработчик DMA для использования буфера.
  • При использовании HDAUDIO_BUS_INTERFACE_BDL версии DDI драйвер функции вызывает AllocateContiguousDmaBuffer для выделения буфера DMA и вызывает подпрограмму setupDmaEngineWithBdl, чтобы настроить подсистему DMA для использования буфера.
Параметр streamFormat указывает формат данных для потока записи. После вызова AllocateCaptureDmaEngineформат потока можно изменить, вызвав ChangeBandwidthAllocation.

Через параметр дескриптор Подпрограмма выводит дескриптор, который вызывающий объект использует для идентификации выделенного ядра DMA в последующих вызовах SelectDmaBuffer, ChangeBandwidthAllocation, FreeDmaBuffer, SetupDmaEngineWithBdlи SetDmaEngineState. Драйвер функции освобождает дескриптор путем вызова FreeDmaEngine.

С помощью параметра converterFormat подпрограмма выводит значение дескриптора потока, которое вызывающий объект может использовать для программирования входных преобразователей. Подпрограмма кодирует сведения из параметра streamFormat в 16-разрядное целое число. Дополнительные сведения см. в HDAUDIO_CONVERTER_FORMAT.

Сразу после успешного вызова AllocateCaptureDmaEngineподсистема DMA находится в состоянии потока сброса. Перед вызовом SetDmaEngineState, чтобы изменить подсистему DMA на запущенное, приостановленное или остановленное состояние, клиент должен сначала выделить буфер DMA для подсистемы.

Звуковой драйвер Windows Driver Model (WDM) вызывает AllocateCaptureDmaEngine во время создания пин-кода во время выполнения метода NewStream (например, см. IMiniportWavePci::NewStream).

Требования

Требование Ценность
целевая платформа Настольный
заголовка hdaudio.h (include 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