次の方法で共有


複製されたNET_BUFFER_LIST構造体

NDIS ドライバーは、既存のNET_BUFFER_LIST構造体から複製された NET_BUFFER_LIST 構造体を作成します。 複製された構造体は、元の構造データを参照します。 ドライバーは、この種類の構造体を使用して、同じデータを複数のパスに効率的に転送できます。

次の図は、親NET_BUFFER_LIST構造体と複製された子構造体の関係を示しています。

親NET_BUFFER_LIST構造体とその複製された子構造の関係を示す図。

上の図には、親 NET_BUFFER_LIST 構造体と、その親から派生した子構造体が含まれています。 親構造体には、1 つの NET_BUFFER_LIST_CONTEXT 構造体と、MDL がアタッチされた 1 つの NET_BUFFER 構造体があります。 親構造体の親ポインターは、派生構造体ではないことを示す NULL

子NET_BUFFER_LIST構造体には、MDLs がアタッチされた 1 つのNET_BUFFER構造体があります。 子NET_BUFFER_LISTには、親構造体へのポインターがあります。 NULL NET_BUFFER_LIST_CONTEXT構造体ポインターは、子にNET_BUFFER_LIST_CONTEXT構造体がないことを示します。

ドライバーは、NdisAllocateCloneNetBufferList 関数を呼び出して、複製 NET_BUFFER_LIST 構造体を作成します。 NDIS は、複製されたNET_BUFFER_LIST構造体を持つ新しい NET_BUFFER 構造体と MDLs を割り当てます。 NDIS は、複製された構造体の NET_BUFFER_LIST_CONTEXT 構造体を割り当てません。 新しいNET_BUFFER構造体と MDL は、親構造体と同じデータを記述します。 データはコピーされません。

ドライバーは、NdisFreeCloneNetBufferList 関数を呼び出して、NET_BUFFER_LIST構造体と、以前に NdisAllocateCloneNetBufferList を呼び出すことによって割り当てられたすべての関連NET_BUFFER構造体と MDL チェーン解放します。

派生NET_BUFFER_LIST構造体