NdisRetreatNetBufferListDataStart 函数 (ndis/nblapi.h)
调用 NdisRetreatNetBufferListDataStart 函数,以增加NET_BUFFER_LIST结构中所有NET_BUFFER结构中使用的数据空间。
语法
NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferListDataStart(
[in] NET_BUFFER_LIST *NetBufferList,
[in] ULONG DataOffsetDelta,
[in] ULONG DataBackFill,
[in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler,
[in, optional] NET_BUFFER_FREE_MDL *FreeMdlHandler
);
参数
[in] NetBufferList
指向以前分配的NET_BUFFER_LIST结构的指针。
[in] DataOffsetDelta
每个NET_BUFFER结构中的其他 已用数据空间 量。 如果没有足够的 未使用的数据空间 来满足请求,NDIS 会分配更多内存。
[in] DataBackFill
如果 NDIS 必须分配内存,则此参数除了要分配的 DataOffsetDelta 参数的值外,还指定数据空间量。
[in, optional] AllocateMdlHandler
NetAllocateMdl 函数的可选入口点。 如果调用方指定 NetAllocateMdl 函数的入口点,NDIS 将调用 NetAllocateMdl 来分配 MDL 和内存。
[in, optional] FreeMdlHandler
NetFreeMdl 函数的可选入口点。 如果调用方指定 NetFreeMdl 函数的入口点,NDIS 将调用 NetFreeMdl 以释放 MDL 和内存。
返回值
NdisRetreatNetBufferListDataStart 返回以下项之一:
返回代码 | 说明 |
---|---|
|
NdisRetreatNetBufferListDataStart 通过减少 DataOffset 成员的值或分配新存储,成功为所有NET_BUFFER结构分配了数据空间。 |
|
由于资源不足, NdisRetreatNetBufferListDataStart 失败。 |
|
由于资源不足的原因 ,NdisRetreatNetBufferListDataStart 失败。 |
备注
调用 NdisRetreatNetBufferListDataStart 相当于针对NET_BUFFER_LIST结构上每个NET_BUFFER结构调用 NdisRetreatNetBufferDataStart 函数。 NdisRetreatNetBufferListDataStart 尝试通过减少每个NET_BUFFER结构中的 DataOffset 成员的值来满足请求。 如果没有足够的 可用数据空间 ,此函数会分配新的缓冲区和 MDL,然后将新的 MDL 链接到NET_BUFFER结构上的 MDL 链的开头。
调用 NdisAdvanceNetBufferListDataStart 函数以释放在以前的 NdisRetreatNetBufferListDataStart 调用中声明的数据空间。 或者,驱动程序可以针对NET_BUFFER_LIST结构上的每个NET_BUFFER结构调用 NdisAdvanceNetBufferDataStart 函数。 调用 NdisAdvanceNetBufferListDataStart 更高效。
要求
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis/nblapi.h (包括 ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_NetBuffer_Function (ndis) |
另请参阅
反馈
提交和查看相关反馈