3

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

都是复制一个文件,那为什么要禁止部分已建立的API提出新的功能来搞清楚呢?

4

1 回答 1

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

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

于 2012-08-28T00:35:45.537 回答