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 が指定 追加の領域も割り当てる必要があります。
を呼び出します。 NdisFreeFragmentNetBufferList 関数を使用して、NET_BUFFER_LIST構造体と、以前に ndisAllocateFragmentNetBufferList を呼び出して割り当てられていたすべての関連NET_BUFFER構造体と MDL チェーンを解放します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | NDIS 6.0 以降でサポートされています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ndis/nblapi.h (ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | Irql_NetBuffer_Function(ndis), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis) |
関連項目
NdisAllocateNetBufferListPool のNdisAllocateNetBufferPool の
NdisFreeFragmentNetBufferList の