Ear*_*rlz 3 c++ api file-copying microsoft-metro
我最近和一位朋友谈过,他告诉我C++ Metro应用程序中不允许使用CopyFile和CopyFileEx(这似乎是正确的).为什么是这样?为什么他们提出了一个名为CopyFile2的奇怪替代品
他们都复制了一个文件,为什么要禁止部分已建立的API提出新的功能来解决?
使用metro API的一般立场是"如果有Ex功能或某些东西取代它,你必须调用新的." 对于8位字符串(由于历史原因而错误命名为"ANSI编码")版本的函数也是如此.除了其他好处之外,这还可以降低Windows RT的代码大小.
让我们分析一下CopyFile2......其中,options参数现在是一个大小为第一个成员的结构.我认为这对于未来的可扩展性比采用的方法更好CopyFileEx.这允许Microsoft在保持与旧调用者的二进制兼容性的同时添加新选项.(Microsoft可以扩展结构的长度,然后检查dwSize以确定您拥有的结构的版本,并相应地调整其行为.)仅此一点使其更具有未来证据,CopyFileEx而不是需要更改函数签名(因此是一个全新的功能) )添加单个选项.(我还没有仔细看,也许他们也已经在增加一个选项CopyFile2,以及...)