为什么 CopyFile2 取代了 CopyFile 和 CopyFileEx

Why does CopyFile2 replace CopyFile and CopyFileEx?

本文关键字:CopyFileEx CopyFile CopyFile2 取代 为什么      更新时间:2023-10-16

我最近和一个朋友聊天,他告诉我C++Metro应用程序中不允许使用CopyFile和CopyFileEx(这似乎是正确的(。这是为什么呢?为什么他们提出了一个名为CopyFile2的奇怪替代品

他们都复制了一个文件,那么为什么要禁止部分已建立的 API 来提出一个新函数来弄清楚呢?

  1. 对地铁API采取的一般立场是"如果有Ex功能或其他东西取代它,你必须调用新的功能。 函数的 8 位字符串(由于历史原因错误命名为"ANSI 编码"(版本也是如此。 除了其他好处之外,这还可以减小Windows RT的代码大小。

  2. 让我们分析一下CopyFile2... 首先,选项参数现在是一个大小作为第一个成员的结构。 我认为这比CopyFileEx采取的方法更适合未来的可扩展性。 这允许Microsoft添加新选项,同时保持与旧调用方的二进制兼容性。 (Microsoft可以延长结构的长度,然后检查dwSize以确定您拥有的结构版本,并相应地调整其行为。 仅此一项就使它比需要更改函数签名(因此是一个全新的函数(来添加单个选项的CopyFileEx更能证明未来。 (我没有仔细阅读,也许他们也已经在CopyFile2中添加了一个选项......