加载依赖文件传输

Load dependent file transfer

我正在尝试使用 Windows Server 2012 在服务器系统上同时复制和写入大量数据。

写入发生在多个具有高数据速率的应用程序中,接近本地系统 I/O 限制的大约 30%。

传输发生在本地存储和网络存储之间,传输速率高达几 gbit。

由于写入数据的应用程序在运行期间不得遭受低内存,因此传输必须了解源系统上的负载,并可能在传输过程中限制自身。

已尝试应用基于 Windows 的基本工具(x/copy、robocopy)。 x/copy 不合适,因为它不提供节流功能。 Robocopy 已证明要么通过其节流方法导致内存问题,要么在不通过超过可用 network/memory 限制进行节流时导致内存问题。

现在是有趣的部分:使用标准的 windows 资源管理器复制 GUI 不会出现任何这些问题。事实上,它的复制速度非常快,同时显示出 没有 对系统性能的显着影响。

下一步将涉及使用基本 win api 创建自定义复制过程,以模仿理想的资源管理器复制过程行为。

问:资源管理器复制使用的是什么基本 api 复制命令...copyFile2? ...完全不可用的内部复制命令?我应该考虑其他选择吗?

IFileOperation 界面允许您访问 Explorer 使用的复制功能。

IFileOperation::CopyItem 的文档中有关于如何使用它的完整示例。