次の方法で共有


NdisAdvanceNetBufferDataStart 関数 (ndis/nblapi.h)

NdisAdvanceNetBufferDataStart 関数を呼び出して、 で追加された使用済みデータ領域を解放します。 NdisRetreatNetBufferDataStart 関数。

構文

NDIS_EXPORTED_ROUTINE VOID NdisAdvanceNetBufferDataStart(
  [in]           NET_BUFFER          *NetBuffer,
  [in]           ULONG               DataOffsetDelta,
  [in]           BOOLEAN             FreeMdl,
  [in, optional] NET_BUFFER_FREE_MDL *FreeMdlHandler
);

パラメーター

[in] NetBuffer

以前に割り当てられた NET_BUFFER 構造体へのポインター。

[in] DataOffsetDelta

解放するために 使用されるデータ領域 の量。 NDIS は、それに応じて、NET_BUFFER構造体の DataOffset メンバーの値を調整します。

[in] FreeMdl

TRUE の場合、事前操作で使用されなくなったすべての MDL を解放するように NDIS に要求するブール値。 FreeMdlFALSE の場合、NDIS は後続の退避操作で使用するために未使用の MDL を保持します。

[in, optional] FreeMdlHandler

NetFreeMdl 関数の省略可能なエントリ ポイント。 呼び出し元が NetFreeMdl 関数のエントリ ポイントを指定する場合、NDIS は NetFreeMdl を呼び出して MDL とメモリを解放します。

戻り値

なし

解説

NDIS が、 への対応する呼び出しを満たすためにメモリを割り当てた場合、 NdisRetreatNetBufferDataStart 関数を使用すると、 NdisAdvanceNetBufferDataStart によって 、NdisRetreatNetBufferDataStart が割り当てられたメモリが解放されます。 それ以外の場合、メモリは MDL に残り、NET_BUFFER構造体の DataOffset メンバーの値のみが変更されます。

NdisAdvanceNetBufferDataStart がメモリを解放する必要がある場合、NDIS は FreeMdl で指定された NetFreeMdl 関数を呼び出します。 NDIS は NetFreeMdl を呼び出して、 ドライバーが NetAllocateMdl 関数で割り当てた MDL とメモリを解放するだけです。

プロトコル ドライバーが受信パス で NdisAdvanceNetBufferDataStart を 呼び出してさまざまなトランスポート ヘッダーにアクセスする場合、MDL チェーンを変更しないでください。 FreeMdlFALSE です

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis/nblapi.h (ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_NetBuffer_Function(ndis)

こちらもご覧ください

NET_BUFFER

NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl