为什么CopyFile2会替换CopyFile和CopyFileEx?

Ear*_*rlz 3 c++ api file-copying microsoft-metro

我最近和一位朋友谈过,他告诉我C++ Metro应用程序中不允许使用CopyFileCopyFileEx(这似乎是正确的).为什么是这样?为什么他们提出了一个名为CopyFile2的奇怪替代品

他们都复制了一个文件,为什么要禁止部分已建立的API提出新的功能来解决?

asv*_*kau 6

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

  2. 让我们分析一下CopyFile2......其中,options参数现在是一个大小为第一个成员的结构.我认为这对于未来的可扩展性比采用的方法更好CopyFileEx.这允许Microsoft在保持与旧调用者的二进制兼容性的同时添加新选项.(Microsoft可以扩展结构的长度,然后检查dwSize以确定您拥有的结构的版本,并相应地调整其行为.)仅此一点使其更具有未来证据,CopyFileEx而不是需要更改函数签名(因此是一个全新的功能) )添加单个选项.(我还没有仔细看,也许他们已经在增加一个选项CopyFile2,以及...)