NdisAllocateNetBufferListContext 函数 (ndis/nblapi.h)

调用 NdisAllocateNetBufferListContext 函数,以在 NET_BUFFER_LIST_CONTEXT 结构中分配更多上下文空间

NET_BUFFER_LIST 结构。

语法

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisAllocateNetBufferListContext(
  [in] NET_BUFFER_LIST *NetBufferList,
  [in] USHORT          ContextSize,
  [in] USHORT          ContextBackFill,
  [in] ULONG           PoolTag
);

参数

[in] NetBufferList

指向以前分配的 NET_BUFFER_LIST 结构的指针。

[in] ContextSize

在 NET_BUFFER_LIST_CONTEXT 结构中分配的上下文空间量。 此量必须是 定义的 sizeof(void*)值的倍数。

[in] ContextBackFill

如果 NDIS 必须分配内存来满足请求,则分配的内存量以及 ContextSize 的值。 此量必须是 定义的 sizeof(void*)值的倍数。

[in] PoolTag

内核池标记,NDIS 使用该标记为NET_BUFFER_LIST_CONTEXT结构分配内存(如果需要分配)。 标记是一个字符串,由单引号分隔,最多包含四个字符,通常按反向顺序指定。 内核池标记可帮助 NDIS 标识内存的所有者。

返回值

NdisAllocateNetBufferListContext 返回下列值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
NdisAllocateNetBufferListContext 通过减少 NET_BUFFER_LIST_CONTEXT 结构的 Offset 成员的值或通过分配新内存成功分配上下文空间。
NDIS_STATUS_RESOURCES
由于资源不足,NdisAllocateNetBufferListContext 失败。
NDIS_STATUS_FAILURE
NdisAllocateNetBufferListContext 因资源不足以外的原因失败。

注解

如果 NET_BUFFER_LIST_CONTEXT 结构中有足够的未使用的上下文空间来满足请求, 则 NdisAllocateNetBufferListContext 只会减少NET_BUFFER_LIST_CONTEXT结构中 Offset 成员的值。 否则,NDIS 会为上下文空间分配新的内存。 可以指定 ContextBackFill 来分配额外的内存,以便下一次调用 NdisAllocateNetBufferListContext 不必分配内存。

注意 上下文空间始终与“sizeof (void*) ”对齐。 这适用于所有自然类型的对齐方式,但对于具有异常对齐要求的数据类型(如SLIST_ENTRY)是不够的。

调用 NdisFreeNetBufferListContext 函数,用于释放使用 NdisAllocateNetBufferListContext 分配的 NET_BUFFER_LIST_CONTEXT 结构中的上下文空间。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis/nblapi.h (包括 ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_NetBuffer_Function (ndis)

另请参阅

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisFreeNetBufferListContext