PALLOCATE_RENDER_DMA_ENGINE回调函数 (hdaudio.h)
AllocateRenderDmaEngine
例程为呈现流分配 DMA 引擎。
AllocateRenderDmaEngine
例程的函数指针类型定义如下。
语法
PALLOCATE_RENDER_DMA_ENGINE PallocateRenderDmaEngine;
NTSTATUS PallocateRenderDmaEngine(
[in] PVOID _context,
[in] PHDAUDIO_STREAM_FORMAT StreamFormat,
[in] BOOLEAN Stripe,
[out] PHANDLE Handle,
[out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}
参数
[in] _context
指定 上下文HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2或 HDAUDIO_BUS_INTERFACE_BDL 结构的成员中的上下文值。
[in] StreamFormat
指定请求的流格式。 此参数指向类型为 HDAUDIO_STREAM_FORMAT 的调用方分配的结构,该结构指定流的数据格式。
[in] Stripe
指定是否启用条带化。 如果 TRUE,则例程在 DMA 传输中启用条带化。 如果 FALSE,则禁用条带化。
[out] Handle
检索 DMA 引擎的句柄。 此参数指向调用方分配的 HANDLE 变量,该变量将例程写入标识 DMA 引擎的句柄。
[out] ConverterFormat
检索转换器格式。 此参数指向调用方分配的 HDAUDIO_CONVERTER_FORMAT 结构,例程将编码格式写入其中。
返回值
如果调用成功保留 DMA 引擎,则 AllocateRenderDmaEngine
返回STATUS_SUCCESS。 否则,例程将返回适当的错误代码。 下表显示了一些可能的返回错误代码。
返回代码 | 描述 |
---|---|
|
指示 DMA 引擎无法分配足够的内部 FIFO 存储以支持请求的流格式。 |
|
指示没有 DMA 引擎可用,或者请求超过可用的带宽资源。 |
|
指示其中一个参数值不正确(参数值无效或指针错误)。 |
言论
此例程分配呈现 DMA 引擎,并指定流的数据格式。 如果成功,则例程输出调用方随后用于标识 DMA 引擎的句柄。
AllocateRenderDmaEngine
例程保留硬件资源(DMA 引擎),但不配置 DMA 硬件。 调用此例程以保留 DMA 引擎后,函数驱动程序必须将 DMA 缓冲区分配给 DMA 引擎,并将引擎配置为使用缓冲区:
- 如果使用 HD Audio DDI 的 HDAUDIO_BUS_INTERFACE 版本,函数驱动程序将调用 AllocateDmaBuffer 例程,让 HD 音频总线驱动程序为 DMA 传输分配数据缓冲区,并将 DMA 引擎设置为使用缓冲区。
- 如果使用 DDI 的 HDAUDIO_BUS_INTERFACE_BDL 版本,函数驱动程序调用 AllocateContiguousDmaBuffer 来分配 DMA 缓冲区,并调用 SetupDmaEngineWithBdl 例程来设置 DMA 引擎以使用缓冲区。
AllocateRenderDmaEngine
后,可以通过调用 changeBandwidthAllocation 来更改流的格式。
条带 参数指定 DMA 引擎是否使用条带化来加快数据传输速度。 有关详细信息,请参阅 条带化。
通过句柄参数,例程输出调用方在后续调用中标识分配的 DMA 引擎的句柄,AllocateDmaBuffer、ChangeBandwidthAllocation、FreeDmaBuffer、SetupDmaEngineWithBdl,以及 SetDmaEngineState。 函数驱动程序通过调用 FreeDmaEngine释放句柄。
通过 converterFormat 参数,例程输出调用方可用于对输出转换器进行编程的流描述符值。 例程将 streamFormat 参数中的信息编码为 16 位整数。 有关详细信息,请参阅 HDAUDIO_CONVERTER_FORMAT。
在成功调用 AllocateRenderDmaEngine
后,DMA 引擎处于重置流状态。 在调用 SetDmaEngineState 将 DMA 引擎更改为正在运行、暂停或停止的状态之前,客户端必须先为引擎分配 DMA 缓冲区。
WDM 音频驱动程序在 NewStream 方法的执行期间在引脚创建时调用 AllocateRenderDmaEngine
(例如,请参阅 IMiniportWavePci::NewStream)。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | hdaudio.h (包括 Hdaudio.h) |
IRQL | PASSIVE_LEVEL |