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)
Ndis.lib
IRQL DISPATCH_LEVEL
DDI 符合性规则 Irql_Gather_DMA_Function(ndis)

另请参阅

MiniportInterruptDPC

NDIS 散点/收集 DMA

NET_BUFFER

NdisMAllocateNetBufferSGList

NdisMRegisterScatterGatherDma