NdisAllocateFragmentNetBufferList 関数 (ndis/nblapi.h)

NdisAllocateFragmentNetBufferList 関数を呼び出して、既存のNET_BUFFER_LIST構造体内のデータに基づいて新しいフラグメント化されたNET_BUFFER_LIST構造体を作成します。

構文

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
  [in] NET_BUFFER_LIST *OriginalNetBufferList,
       NDIS_HANDLE     NetBufferListPool,
       NDIS_HANDLE     NetBufferPool,
  [in] ULONG           StartOffset,
  [in] ULONG           MaximumLength,
  [in] ULONG           DataOffsetDelta,
  [in] ULONG           DataBackFill,
  [in] ULONG           AllocateFragmentFlags
);

パラメーター

[in] OriginalNetBufferList

既存のNET_BUFFER_LIST構造体へのポインター。

NetBufferListPool

への呼び出しから取得されたハンドル。 NdisAllocateNetBufferListPool 関数。

NetBufferPool

への呼び出しから以前に返されたNET_BUFFER構造体プール ハンドル NdisAllocateNetBufferPool

[in] StartOffset

NET_BUFFER 構造体内のデータの先頭からの追加のバイト オフセット。 このオフセットは、各NET_BUFFER構造体で指定された DataOffset メンバーの値に加えて行われます。

[in] MaximumLength

新しいNET_BUFFER_LIST構造体の各フラグメントの最大長 (バイト単位)。 各フラグメントは、NET_BUFFER構造体によって記述されます。

[in] DataOffsetDelta

NDIS が新しいNET_BUFFER構造体で使用できるようにする必要がある 追加の使用データ領域

[in] DataBackFill

割り当てが必要な場合に割り当てる DataOffsetDelta パラメーターの値に加えて、データ領域の量。 NDIS は 、DataOffsetDelta で要求されたデータ領域を提供するためにメモリを割り当てる必要がある場合は、 DataBackFill が指定する追加の領域も割り当てる必要があります。

[in] AllocateFragmentFlags

OR 操作と組み合わせることができる NDIS フラグ。 このパラメーターを 0 に設定します。 現在、この関数に対して定義されているフラグはありません。

戻り値

NdisAllocateFragmentNetBufferList は、新しいフラグメント化されたNET_BUFFER_LIST構造体へのポインターを返します。 割り当てが失敗した場合、戻り値は NULL です

注釈

NdisAllocateFragmentNetBufferList は、呼び出し元NdisAllocateFragmentNetBufferList に渡したと同じデータを記述する新しいフラグメント NET_BUFFER_LIST構造体と NET_BUFFER_LIST NET_BUFFER構造体を割り当てて初期化します。

フラグメントNET_BUFFER_LIST構造体に特定のプールに関連付けられている属性が必要な場合、呼び出し元は 、NetBufferListPoolHandle または NetBufferPoolHandle パラメーターでプール ハンドルを指定する必要があります。 たとえば、NET_BUFFER_LIST構造体の ProtocolType メンバーはプールに関連付けられています。

指定したソース NET_BUFFER_LIST構造体の各NET_BUFFER構造体に対して、NDIS は次のようにフラグメントNET_BUFFER構造体を作成します。

  • NDIS は、ソース NET_BUFFER構造体で 使用されるデータ空間 の先頭から開始し、 StartOffset パラメーターで指定された値によってオフセットされるフラグメントを作成します。
  • NDIS は、ソース NET_BUFFER構造体内の 使用済みデータ空間 ( StartOffset を考慮した後) をフラグメントに分割します。
  • 各フラグメントの 使用されるデータ空間 の長さは、 MaximumLength パラメーターで指定された値以下です。 最後のフラグメントの 使用されるデータ空間 は、 MaximumLength より小さくすることができます。
  • 各フラグメントは、新しいNET_BUFFER構造と MDL チェーンの新しいセットによって記述されます。
  • 新しいNET_BUFFER構造体のデータ オフセットは、DataOffsetDelta パラメーターで指定されたバイト数だけ退避されます (DataOffset メンバーの値が減ります)。
  • NDIS は 、DataOffsetDelta で要求されたデータ領域を提供するためにメモリを割り当てる必要がある場合は、 DataBackFill が指定する追加の領域も割り当てる必要があります。
NdisAllocateFragmentNetBufferList によって作成される新しいフラグメント NET_BUFFER_LIST構造体には、初期が含まれていません NET_BUFFER_LIST_CONTEXT 構造体。

を呼び出します。 NdisAllocateFragmentNetBufferList を呼び出して以前に割り当てられたNET_BUFFER_LIST構造体と、関連付けられているすべてのNET_BUFFER構造体と MDL チェーンを解放する NdisFreeFragmentNetBufferList 関数。

要件

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

こちらもご覧ください

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList