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

除了 ContextSize的值外,内存量还用于分配 NDIS 是否必须分配内存来满足请求。 此数量必须是 sizeof(void*)定义的值的倍数。

[in] PoolTag

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

返回值

NdisAllocateNetBufferListContext 返回以下项之一:

返回代码 描述
NDIS_STATUS_SUCCESS
NdisAllocateNetBufferListContext 通过 减少NET_BUFFER_LIST_CONTEXT结构 成员的值或分配新内存来成功分配上下文空间。
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 (include ndis.h)
Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_NetBuffer_Function(ndis)

另请参阅

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisFreeNetBufferListContext