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構造体と 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) |