PFREE_CONTIGUOUS_DMA_BUFFER回调函数 (hdaudio.h)
FreeContiguousDmaBuffer
例程释放由调用 AllocateContiguousDmaBuffer分配的 DMA 缓冲区和缓冲区描述符列表(BDL)。
FreeContiguousDmaBuffer
例程的函数指针类型定义如下。
语法
PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;
NTSTATUS PfreeContiguousDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
参数
[in] _context
指定 HDAUDIO_BUS_INTERFACE_BDL 结构的 上下文 成员中的上下文值。
[in] Handle
标识 DMA 引擎的句柄。 此句柄值是从上一次调用 <
返回值
如果调用成功,则 FreeContiguousDmaBuffer
返回STATUS_SUCCESS。 否则,例程将返回适当的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 描述 |
---|---|
|
指示调用方在 IRQL 上运行,该 IRQL 太高。 |
|
指示句柄参数值无效。 |
|
指示流未处于重置状态,或者当前未为 DMA 引擎分配任何缓冲区。 |
言论
FreeContiguousDmaBuffer
例程与 SetupDmaEngineWithBdl 和 AllocateContiguousDmaBuffer 例程结合使用。 这三个例程仅在 HD Audio DDI 的 HDAUDIO_BUS_INTERFACE_BDL 版本中可用。 此 DDI 不包括 AllocateDmaBuffer 和 FreeDmaBuffer 例程,这些例程永远不会与 AllocateContiguousDmaBuffer、SetupDmaEngineWithBdl和 FreeContiguousDmaBuffer
结合使用。 与 SetupDmaEngineWithBdl不同,它将 DMA 引擎配置为使用以前分配的 DMA 缓冲区,AllocateDmaBuffer 分配 DMA 缓冲区并将 DMA 引擎配置为使用缓冲区。 有关详细信息,请参阅 两个 DDI 版本之间的差异。
例程失败,并在以下任一情况下返回错误代码STATUS_INVALID_DEVICE_REQUEST:
-
当当前没有为 DMA 引擎分配缓冲区时,客户端将调用
FreeContiguousDmaBuffer
。 - 流处于重置以外的状态。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | hdaudio.h (包括 Hdaudio.h) |
IRQL | PASSIVE_LEVEL |