PFREE_DMA_BUFFER回调函数 (hdaudio.h)
该 FreeDmaBuffer
例程释放以前由 对 AllocateDmaBuffer 的调用分配的 DMA 缓冲区。
例程的 FreeDmaBuffer
函数指针类型定义如下。
语法
PFREE_DMA_BUFFER PfreeDmaBuffer;
NTSTATUS PfreeDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
参数
[in] _context
指定来自HDAUDIO_BUS_INTERFACE或HDAUDIO_BUS_INTERFACE_V2结构的上下文成员的上下文值。
[in] Handle
标识 DMA 引擎的句柄。 此句柄值是从上一次调用 AllocateCaptureDmaEngine 或 AllocateRenderDmaEngine 中获取的。
返回值
FreeDmaBuffer
如果调用成功,则返回STATUS_SUCCESS。 否则,例程将返回适当的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 说明 |
---|---|
|
指示调用方在 IRQL 上运行太高。 |
|
指示句柄参数值无效。 |
|
指示流未处于重置状态,或者当前未为 DMA 引擎分配任何缓冲区。 |
备注
该 FreeDmaBuffer
例程与 AllocateDmaBuffer 例程结合使用。 这两个例程仅在 HD 音频 DDI 的 HDAUDIO_BUS_INTERFACE 版本中可用。 此 DDI 不包括 AllocateContiguousDmaBuffer、SetupDmaEngineWithBdl 和 FreeContiguousDmaBuffer 例程,这些例程从未与 AllocateDmaBuffer 结合使用。FreeDmaBuffer
与 SetupDmaEngineWithBdl(将 DMA 引擎配置为使用以前分配的 DMA 缓冲区)不同, AllocateDmaBuffer 既分配 DMA 缓冲区,又将 DMA 引擎配置为使用缓冲区。
例程失败并返回以下任一情况下STATUS_INVALID_DEVICE_REQUEST的错误代码:
-
当当前没有为 DMA 引擎分配缓冲区时,客户端将调用
FreeDmaBuffer
。 - 流处于重置状态。
要求
目标平台 | 桌面 |
Header | hdaudio.h (包括 Hdaudio.h) |
IRQL | PASSIVE_LEVEL |