次の方法で共有


NdisAllocateCloneNetBufferList 関数 (ndis/nblapi.h)

NdisAllocateCloneNetBufferList 関数を呼び出して、新しい複製 NET_BUFFER_LIST 構造体を作成します。

構文

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

パラメーター

[in] OriginalNetBufferList

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

[in, optional] NetBufferListPoolHandle

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

[in, optional] NetBufferPoolHandle

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

[in] AllocateCloneFlags

OR 操作と組み合わせることができる NDIS フラグ。 次のフラグが定義されています。

NDIS_CLONE_FLAGS_RESERVED

NDIS 用に予約されています。

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

このフラグが設定されている場合、NDIS は複製された NET_BUFFER_LISTの新しい MDLs を割り当てません。 代わりに、複製された NET_BUFFER_LIST は、元の NET_BUFFER_LISTと同じ MDL チェーンを使用します。 NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLSがクリアされている場合、NDIS は、元のデータ バッファーを参照する新しい MDLs を割り当てます。

戻り値

NdisAllocateCloneNetBufferList 、新しい複製 NET_BUFFER_LIST 構造体へのポインターを返します。 割り当てが失敗した場合、このポインターは NULL

備考

NdisAllocateCloneNetBufferList 呼び出して、複製 NET_BUFFER_LIST 構造を作成します。この構造体を使用して、別のデータ パスで重複データを送信できます。

元の NET_BUFFER_LIST 構造内の各 NET_BUFFER 構造体は、データ空間全体の先頭ではなく、使用されたデータ空間の先頭からのみ複製されます。 データ空間の先頭から使用されるデータ空間の先頭までのオフセットを取得するには、NET_BUFFER_DATA_OFFSET マクロを使用します。

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

clone NET_BUFFER_LIST 構造体は、OriginalNetBufferList NET_BUFFER_LIST 構造体で記述されているのと同じデータ記述します。 NDIS は、元の MDLs によって記述されたデータを新しいデータ バッファーにコピーしません。 代わりに、複製された構造体は元のデータ バッファーを参照します。 複製 NET_BUFFER_LIST 構造には初期構造が含まれていません。 NET_BUFFER_LIST_CONTEXT 構造体。

を呼び出します。 NdisFreeCloneNetBufferList 関数を使用して、NET_BUFFER_LIST 構造体と、NdisAllocateCloneNetBufferListを呼び出すことによって割り当てられたすべての関連する構造体と MDL チェーンを解放します。

必要条件

要件 価値
サポートされる最小クライアント NDIS 6.0 以降でサポートされています。
ターゲット プラットフォーム 万国
ヘッダー ndis/nblapi.h (ndis.h を含む)
ライブラリ Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する Irql_NetBuffer_Function(ndis)、NdisAllocateCloneNetBufferList(ndis)、NdisAllocateCloneNetBufferList_InitFail(ndis)

関連項目

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList