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

傳回值

備註

傳回值:無

驅動程式應該呼叫 NdisCopyFromPacketToPacketSafe ,而不是 NdisCopyFromPacketToPacket。 NDIS 5.1 迷你埠驅動程序必須呼叫 NdisCopyFromPacketToPacketSafe ,而不是 NdisCopyFromPacketToPacket。 不同於 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。

規格需求

需求
標頭 ndis.h (包含 Ndis.h)
程式庫 Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

另請參閱