NdisCopyFromNetBufferToNetBuffer 関数 (ndis/nblapi.h)

NdisCopyFromNetBufferToNetBuffer 関数を呼び出して、ソース NET_BUFFER構造体からコピー先NET_BUFFER構造体にデータをコピーします。

構文

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisCopyFromNetBufferToNetBuffer(
  [in]  NET_BUFFER       *Destination,
  [in]  ULONG            DestinationOffset,
  [in]  ULONG            BytesToCopy,
  [in]  NET_BUFFER const *Source,
  [in]  ULONG            SourceOffset,
  [out] ULONG            *BytesCopied
);

パラメーター

[in] Destination

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

[in] DestinationOffset

コピー先NET_BUFFERデータの書き込みを開始する構造体内のバイト オフセット。 DestinationOffset の詳細については、次の「備考」セクションを参照してください。

[in] BytesToCopy

コピーするバイト数。

[in] Source

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

[in] SourceOffset

データのコピーを開始するソース NET_BUFFER構造体内のバイト オフセット。 SourceOffset の詳細については、次の「備考」セクションを参照してください。

[out] BytesCopied

この関数が実際にコピーしたバイト数を返す呼び出し元から指定された変数へのポインター。 ソースがデータを使い切ったり、コピー先の領域が不足したりする場合、この数値は BytesToCopy の値より小さくすることができます。

戻り値

NdisCopyFromNetBufferToNetBuffer は 、次のいずれかの状態値を返します。

リターン コード 説明
NDIS_STATUS_SUCCESS
コピー操作が正常に完了しました。
NDIS_STATUS_RESOURCES
リソースが不足しているため、コピー操作が失敗しました。

注釈

NdisCopyFromNetBufferToNetBuffer の呼び出し元は、変換先NET_BUFFER構造体と、場合によってはソース NET_BUFFER構造体も割り当てます。 変換先NET_BUFFER構造体の MDL には、データを受信するのに十分な領域が必要です。

ソース NET_BUFFER構造体がデータ不足になった場合、またはコピー先の NET_BUFFER 構造体が指定したバイト数をコピーする前に領域を使い切った場合、コピー操作は停止します。 どちらの場合も、 NdisCopyFromNetBufferToNetBuffer は、ソースからコピー先の NET_BUFFER 構造体に正常にコピーされたバイト数を返します。

呼び出し元は、ソースと宛先のNET_BUFFER構造体で CurrentMdlOffset 値と CurrentMdl 値が正しいことを確認する必要があります。 NDIS では、移行先NET_BUFFERのメンバーは変更されません。 呼び出し元は、NdisCopyFromNetBufferToNetBuffer が返された後に、宛先NET_BUFFERの DataLengthDataOffsetおよび CurrentMdlOffset の値を更新する必要があります。

NDIS は、現在のデータ オフセットからのオフセットとして、NdisCopyFromNetBufferToNetBufferDestionationOffset パラメーターと SourceOffset パラメーターのオフセットを使用します。 たとえば、変換先のNET_BUFFERの CurrentMdlOffset 値が x で、DestinationOffset 値が y の場合、NDIS は CurrentMdl 値が記述するメモリ内の x+ y オフセットのNET_BUFFERにデータをコピーします。 ソース NET_BUFFERの CurrentMdlOffsetSourceOffset 値にも同様の規則が適用されます。

要件

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

こちらもご覧ください

NET_BUFFER