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 不会导致系统资源不足或耗尽时出现 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。

要求

要求 价值
标头 ndis.h (包括 Ndis.h)
Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

另请参阅