NdisAllocateBufferPool 函数 (ndis.h)

注意 NDIS 5。 x 已弃用,由 NDIS 6 取代。 x。 有关新的 NDIS 驱动程序开发,请参阅 从 Windows Vista 开始的网络驱动程序。 有关移植 NDIS 5 的信息。 NDIS 6 的 x 驱动程序。 x,请参阅 将 NDIS 5.x 驱动程序移植到 NDIS 6.0

此函数返回一个句柄,调用方可以通过调用 NdisAllocateBuffer 函数来分配缓冲区描述符。

语法

void NdisAllocateBufferPool(
  [out] PNDIS_STATUS Status,
  [out] PNDIS_HANDLE PoolHandle,
  [in]  UINT         NumberOfDescriptors
);

参数

[out] Status

指向调用方提供的变量的指针,该变量中此函数返回缓冲池分配的最终状态。

[out] PoolHandle

指向调用方提供的变量的指针,此函数在其中返回缓冲池的句柄。 此句柄是驱动程序随后调用的 NDIS 缓冲区函数的必需参数。

[in] NumberOfDescriptors

指定调用方希望在不将任何分配的缓冲区描述符释放回池的情况下从缓冲池分配的缓冲区描述符数。

返回值

备注

始终返回NDIS_STATUS_SUCCESS。

此函数返回后,驱动程序调用 NdisAllocateBuffer 函数一次或多次,以分配所需的缓冲区描述符。 驱动程序应在初始化期间调用此函数。

NIC 驱动程序指定的 NumberOfDescriptors 参数通常取决于 NIC 的功能。 例如,具有环形缓冲区的总线主 DMA NIC 的驱动程序将至少指定一个足够大的 NumberOfDescriptors 来映射整个环。

调用此函数中指定的 NumberOfDescriptors 是驱动程序在必须调用 NdisFreeBuffer 函数以将缓冲区描述符返回到缓冲池可用列表之前可以调用 NdisAllocateBuffer 的次数的有效限制。

当驱动程序不再需要其分配的缓冲池时,它会调用 NdisFreeBufferPool 函数来释放缓冲池句柄。

在调用此函数之前,驱动程序必须释放它持有的任何旋转锁。

所有较低级别的 NDIS 驱动程序都必须分配它们链接到缓冲池中数据包的所有缓冲区描述符。 只能为最高级别协议驱动程序提供与 OS 相关的描述符来映射虚拟内存范围。 如果这些内存描述符等效于 NDIS 缓冲区描述符,则最高级别的协议可以将此类描述符作为参数传递给 NDIS 函数。

OS 版本:Windows CE .NET 4.0 及更高版本。

要求

要求
Header ndis.h
IRQL IRQL <= DISPATCH_LEVEL

另请参阅