NdisMFreeNetBufferSGList 函数 (ndis.h)

注意

对于 ARM 和 ARM64 处理器,我们强烈建议 NDIS 驱动程序编写器使用 WDF DMA 或 WDM DMA,而不是 NDIS 散点/收集 DMA。

有关 WDF DMA 的详细信息,请参阅 处理 KMDF 驱动程序中的 DMA 操作

有关 WDM DMA 的详细信息,请参阅 管理驱动程序的输入/输出中与 DMA 相关的子主题。

总线主微型端口驱动程序调用 NdisMFreeNetBufferSGList 函数,以释放散点/收集通过调用 分配的列表资源 NdisMAllocateNetBufferSGList 函数。

语法

void NdisMFreeNetBufferSGList(
  [in] NDIS_HANDLE          NdisMiniportDmaHandle,
  [in] PSCATTER_GATHER_LIST pSGL,
  [in] PNET_BUFFER          NetBuffer
);

参数

[in] NdisMiniportDmaHandle

NDIS 用于管理 DMA 资源的上下文区域的句柄。 调用方通过调用 获取此句柄 NdisMRegisterScatterGatherDma 函数。

[in] pSGL

指向微型端口驱动程序散点/收集列表缓冲区的指针。

[in] NetBuffer

指向与指定的散点/收集列表缓冲区关联的 NET_BUFFER 结构的指针。

返回值

备注

总线主微型端口驱动程序必须调用 NdisMFreeNetBufferSGList 函数来释放散点/收集列表。 微型端口驱动程序通常从其 MiniportInterruptDPC 函数调用 NdisMFreeNetBufferSGList,而它正在处理发送完全中断,或者随时驱动程序不再需要散点/收集列表。 当驱动程序或硬件仍在访问由与散点/收集列表关联的NET_BUFFER结构描述的内存时,请勿调用 NdisMFreeNetBufferSGList

NdisMFreeNetBufferSGList 返回后,微型端口驱动程序可以释放 在 NdisMAllocateNetBufferSGList 函数的 ScatterGatherListBuffer 参数 中指定的缓冲区。

在访问接收的数据之前,微型端口驱动程序必须调用 NdisMFreeNetBufferSGList 来刷新内存缓存。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL DISPATCH_LEVEL
DDI 符合性规则 Irql_Gather_DMA_Function (ndis)

另请参阅

MiniportInterruptDPC

NDIS 分散/聚合 DMA

NET_BUFFER

NdisMAllocateNetBufferSGList

NdisMRegisterScatterGatherDma