NdisCopyFromPacketToPacketSafe 関数 (ndis.h)

メモ NDIS 5。 x は非推奨となり、NDIS 6 に置き換えられます。 x があります。 新しい NDIS ドライバーの開発については、「 Windows Vista 以降のネットワーク ドライバー」を参照してください。 NDIS 5 の移植に関する情報。 x ドライバーから NDIS 6 へ。 x については、「 NDIS 5.x ドライバーを NDIS 6.0 に移植する」を参照してください。

NdisCopyFromPacketToPacket は、指定された範囲のデータをあるパケットから別のパケットにコピーします。

構文

void NdisCopyFromPacketToPacketSafe(
  [in]  IN PNDIS_PACKET     Destination,
  [in]  IN UINT             DestinationOffset,
  [in]  IN UINT             BytesToCopy,
  [in]  IN PNDIS_PACKET     Source,
  [in]  IN UINT             SourceOffset,
  [out] OUT PUINT           BytesCopied,
        IN MM_PAGE_PRIORITY Priority
);

パラメーター

[in] Destination

宛先パケット記述子へのポインター。

[in] DestinationOffset

コピーされたデータの書き込みを開始する宛先パケット内のバイト オフセットを指定します。

[in] BytesToCopy

コピーするバイト数を指定します。

[in] Source

ソース パケット記述子へのポインター。

[in] SourceOffset

データのコピーを開始するソース パケット内のバイト オフセットを指定します。

[out] BytesCopied

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

Priority

戻り値

なし

解説

戻り値: なし

ドライバーは 、NdisCopyFromPacketToPacket ではなく NdisCopyFromPacketToPacketSafe を呼び出す必要があります。 NDIS 5.1 ミニポート ドライバーは 、NdisCopyFromPacketToPacket ではなく NdisCopyFromPacketToPacketSafe を呼び出す必要があります。 NdisCopyFromPacketToPacket とは異なり、NdisCopyFromPacketToPacketSafe では、システム リソースが不足しているか不足している場合にバグ チェックは発生しません。

NdisCopyFromPacketToPacket の呼び出し元は、送信元パケットでない場合も宛先パケットを割り当てます。 宛先パケットのパケット記述子には、データを受信するのに十分なチェーンバッファー記述子が必要です。

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

NdisCopyFromPacketToPacket は、指定された ソース に関連付けられている帯域外の情報を 宛先にコピーしません。 この情報をコピーするには、ドライバーは 、NDIS_OOB_DATA_FROM_PACKET によって返されるポインターを使用し、 NdisMoveMemory を呼び出します。

ドライバーは、 NdisCopyFromPacketToPacket を呼び出す前に、保持しているスピン ロックを解放する必要があります。

  • ターゲット プラットフォーム: ユニバーサル
  • バージョン: Windows Vista の NDIS 6.0 ドライバーではサポートされていません。 代わりに NdisCopyFromNetBufferToNetBufferを使用してください。 Windows Vista および Windows XP の NDIS 5.1 ドライバーでサポートされていますが、代わりに NdisCopyFromPacketToPacketSafe を使用してください。

要件

要件
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

こちらもご覧ください