NdisRetreatNetBufferDataStart 函数 (ndis/nblapi.h)
调用 NdisRetreatNetBufferDataStart 函数以访问NET_BUFFER结构的 MDL 链中更多使用的数据空间。
语法
NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
[in] NET_BUFFER *NetBuffer,
[in] ULONG DataOffsetDelta,
[in] ULONG DataBackFill,
[in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);
参数
[in] NetBuffer
指向以前分配的 NET_BUFFER 结构的指针。
[in] DataOffsetDelta
要添加的 已用数据空间 量。 NDIS 相应地调整NET_BUFFER结构的 DataOffset 成员。 如果没有足够的 未使用数据空间 来满足请求,NDIS 将分配额外的内存。
[in] DataBackFill
如果 NDIS 必须分配内存,则此参数指定要分配的数据空间量,以及 DataOffsetDelta 参数的值。
[in, optional] AllocateMdlHandler
NetAllocateMdl 函数的可选入口点。 如果调用方为 NetAllocateMdl 函数指定入口点,则 NDIS 会调用 NetAllocateMdl 来分配 MDL 和内存。
返回值
NdisRetreatNetBufferDataStart 返回下列值之一:
返回代码 | 说明 |
---|---|
|
NdisRetreatNetBufferDataStart 通过使用未使用 的数据空间 或通过分配新存储成功分配 了已用数据空间 。 |
|
由于资源不足,NdisRetreatNetBufferDataStart 失败。 |
|
NdisRetreatNetBufferDataStart 因资源不足以外的原因失败。 |
注解
NdisRetreatNetBufferDataStart 尝试通过减小 NET_BUFFER 结构的 DataOffset 成员的值来满足 请求 。
如果没有足够的 未使用数据空间,此函数将分配一个新缓冲区和一个 MDL 来描述新缓冲区,并将新 MDL 链接到 MDL 链的开头。 NDIS 调用在 AllocateMdl 中指定的 NetAllocateMdl 函数来分配 MDL 和内存。 NetAllocateMdl 函数可以使用满足驱动程序设计要求的任何分配方法。
调用 NdisAdvanceNetBufferDataStart 函数,用于释放使用 NdisRetreatNetBufferDataStart 添加的已用数据空间。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis/nblapi.h (包括 ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_NetBuffer_Function (ndis) |