次の方法で共有


NdisRetreatNetBufferDataStart 関数 (ndis/nblapi.h)

NdisRetreatNetBufferDataStart 関数を呼び出して、NET_BUFFER 構造体の MDL チェーン内の 使用されるデータ空間 にアクセスします。

構文

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

パラメーター

[in] NetBuffer

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

[in] DataOffsetDelta

追加 使用されたデータ領域の量。 NDIS は、それに応じて、NET_BUFFER構造体のメンバー DataOffset を調整します。 要求を満たすのに十分な 未使用のデータ領域 がない場合、NDIS は追加のメモリを割り当てます。

[in] DataBackFill

NDIS がメモリを割り当てる必要がある場合、このパラメーターは、割り当てる DataOffsetDelta パラメーターの値に加えて、データ領域の量を指定します。

[in, optional] AllocateMdlHandler

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

戻り値

NdisRetreatNetBufferDataStart は、次のいずれかを返します。

リターン コード 形容
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferDataStart 未使用のデータ領域 を使用するか、新しいストレージを割り当てることによって、データ領域 を使用 正常に割り当てられます。
NDIS_STATUS_RESOURCES
リソースが不足しているため、NdisRetreatNetBufferDataStart 失敗しました。
NDIS_STATUS_FAILURE
リソースが不足している以外の理由で、NdisRetreatNetBufferDataStart が失敗しました。

備考

NdisRetreatNetBufferDataStart NET_BUFFER 構造体の DataOffset メンバーの値を減らすことで、要求を満たそうとします。

未使用のデータ領域 不足している場合、この関数は新しいバッファーと MDL を割り当てて新しいバッファーを記述し、新しい MDL を MDL チェーンの先頭にチェーンします。 NDIS は、AllocateMdl で指定された NetAllocateMdl 関数を呼び出して、MDL とメモリを割り当てます。 NetAllocateMdl 関数は、ドライバーの設計要件を満たす任意の割り当て方法を使用できます。

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

必要条件

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

関連項目

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl