次の方法で共有


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に新しい MDL を割り当てません。 代わりに、複製された NET_BUFFER_LIST は、元の NET_BUFFER_LISTと同じ MDL チェーンを使用します。 NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLSがクリアされた場合、NDIS は元のデータ バッファーを参照する新しい MDL を割り当てます。

戻り値

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

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

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis/nblapi.h (ndis.h を含む)
Library 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