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 可用于释放通过调用 AllocateAdapterChannelEx、GetScatterGatherListEx和 BuildScatterGatherListEx 例程分配的 DMA 资源。 如果驱动程序同步调用其中一个例程,则 ExecutionRoutine 参数是可选的,可以省略。 在这种情况下,驱动程序可以使用适配器对象和映射由调用分配的寄存器。 驱动程序启动 DMA 传输后,驱动程序可以调用 FreeAdapterObject 解除分配适配器对象,并在必要时注册映射。
FreeAdapterChannel 例程类似于 FreeAdapterObject。 FreeAdapterChannel 始终释放适配器对象和任何分配的映射寄存器。 如果 AllocationAction = DeallocateObject,则此行为类似于 FreeAdapterObject 的行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始可用。 |
目标平台 | 桌面 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |