NdisCopyFromPacketToPacketSafe 函数 (ndis.h)

注意 NDIS 5。 x 已弃用,由 NDIS 6 取代。 x。 有关新的 NDIS 驱动程序开发,请参阅 从 Windows Vista 开始的网络驱动程序。 有关移植 NDIS 5 的信息。 NDIS 6 的 x 驱动程序。 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 不会导致 bug 检查。

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

另请参阅