NdisAllocateBufferPool 函数 (ndis.h)
注释 NDIS 5。 x 已被弃用,并被 NDIS 6 取代。 x。 有关新的 NDIS 驱动程序开发,请参阅从 Windows Vista 开始网络驱动程序。 有关移植 NDIS 5 的信息。 将 x 驱动程序 到 NDIS 6。 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 是驱动程序调用 NdisAllocateBuffer 的次数的有效限制,然后它必须先调用 NdisFreeBuffer 函数才能将缓冲区描述符返回到缓冲池的免费列表。
当驱动程序不再需要分配的缓冲池时,它会调用 NdisFreeBufferPool 函数来释放缓冲池句柄。
驱动程序必须在调用此函数之前释放它持有的任何旋转锁。
所有较低级别的 NDIS 驱动程序必须分配它们链接到缓冲池中的数据包的所有缓冲区描述符。 只有最高级别的协议驱动程序才能获得依赖于 OS 的描述符来映射虚拟内存范围。 如果这些内存描述符等效于 NDIS 缓冲区描述符,则最高级别的协议可以将此类描述符作为参数传递给 NDIS 函数。
OS 版本: Windows CE .NET 4.0 及更高版本。
要求
要求 | 价值 |
---|---|
标头 | ndis.h |
IRQL | IRQL <= DISPATCH_LEVEL |