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