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 は 、次のいずれかの状態値を返します。
リターン コード | 説明 |
---|---|
|
コピー操作が正常に完了しました。 |
|
リソースが不足しているため、コピー操作が失敗しました。 |
注釈
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の DataLength、DataOffset、および CurrentMdlOffset の値を更新する必要があります。
NDIS は、現在のデータ オフセットからのオフセットとして、NdisCopyFromNetBufferToNetBuffer の DestionationOffset パラメーターと SourceOffset パラメーターのオフセットを使用します。 たとえば、変換先のNET_BUFFERの CurrentMdlOffset 値が x で、DestinationOffset 値が y の場合、NDIS は CurrentMdl 値が記述するメモリ内の x+ y オフセットのNET_BUFFERにデータをコピーします。 ソース NET_BUFFERの CurrentMdlOffset と SourceOffset 値にも同様の規則が適用されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis/nblapi.h (ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_NetBuffer_Function(ndis) |