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 構造体は、OriginalNetBufferList のNET_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) |