PFREE_ADAPTER_OBJECT回调函数 (wdm.h)

FreeAdapterObject 例程在驱动程序完成所有 DMA作后释放指定的适配器对象。

语法

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

void PfreeAdapterObject(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] IO_ALLOCATION_ACTION AllocationAction
)
{...}

参数

[in] DmaAdapter

指向 DMA_ADAPTER 结构的指针。 此结构是要释放的适配器对象。 此对象表示驱动程序的总线主 DMA 设备或系统 DMA 通道。 调用方从对 IoGetDmaAdapter 例程的上一次调用中获取此指针。

[in] AllocationAction

调用驱动程序请求的解除分配类型。 将此参数设置为 IO_ALLOCATION_ACTION 枚举值。 有关详细信息,请参阅“备注”部分。

返回值

没有

言论

FreeAdapterObject 不是可以直接按名称调用的系统例程。 只能通过从 DMA_OPERATIONS 结构中返回的地址的指针调用此例程。 驱动程序通过调用 IoGetDmaAdapter,并将 DeviceDescription 参数的 版本 成员调用为 DEVICE_DESCRIPTION_VERSION3,从而获取此例程的地址。 如果 IoGetDmaAdapter 返回 NULL,则例程在平台上不可用。

如果 AllocationAction = DeallocateObject,则 FreeAdapterObject 调用将释放适配器对象,并释放可能为此对象分配的任何映射寄存器。

如果 AllocationAction = DeallocateObjectKeepRegisters,则 FreeAdapterObject 调用将释放适配器对象,但不释放任何映射寄存器。 在这种情况下,驱动程序必须通过调用 FreeMapRegisters 例程显式释放任何分配的映射寄存器。

如果 AllocationAction = KeepObject,则 FreeAdapterObject 调用无效。

FreeAdapterObject 可用于释放通过调用 AllocateAdapterChannelExGetScatterGatherListExBuildScatterGatherListEx 例程分配的 DMA 资源。 如果驱动程序同步调用其中一个例程,则 ExecutionRoutine 参数是可选的,可以省略。 在这种情况下,驱动程序可以使用适配器对象和映射由调用分配的寄存器。 驱动程序启动 DMA 传输后,驱动程序可以调用 FreeAdapterObject 解除分配适配器对象,并在必要时注册映射。

FreeAdapterChannel 例程类似于 FreeAdapterObjectFreeAdapterChannel 始终释放适配器对象和任何分配的映射寄存器。 如果 AllocationAction = DeallocateObject,则此行为类似于 FreeAdapterObject 的行为。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
目标平台 桌面
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL <= DISPATCH_LEVEL

另请参阅

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter