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構造体のメモリを割り当てるために使用するカーネル プール タグ。 タグは、一重引用符で区切られた文字列で、通常は逆の順序で指定される最大 4 文字です。 カーネル プール タグは、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 はコンテキスト領域に新しいメモリを割り当てます。 次に NdisAllocateNetBufferListContext を呼び出してもメモリを割り当てる必要がないように、ContextBackFill を指定して追加のメモリを割り当てることができます。

メモ コンテキスト空間は常に 'sizeof(void*)' に揃えられます。 これはすべての自然型に対して適切に配置されますが、SLIST_ENTRYなどの異常なアラインメント要件を持つデータ型には適していません。

を呼び出します。 NdisAllocateNetBufferListContext で割り当てられたNET_BUFFER_LIST_CONTEXT構造体のコンテキスト領域を解放する NdisFreeNetBufferListContext 関数。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis/nblapi.h (ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_NetBuffer_Function(ndis)

こちらもご覧ください

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisFreeNetBufferListContext