私は最近、C++ Metro アプリケーションではCopyFileとCopyFileExが許可されていないという友人と話していました(これは正しいようです)。どうしてこれなの?そして、なぜ彼らはCopyFile2という名前の奇妙な代替品を提案したのですか?
それらのすべてがファイルをコピーするのに、確立された API の一部を禁止して、新しい機能を明らかにするのはなぜでしょうか?
私は最近、C++ Metro アプリケーションではCopyFileとCopyFileExが許可されていないという友人と話していました(これは正しいようです)。どうしてこれなの?そして、なぜ彼らはCopyFile2という名前の奇妙な代替品を提案したのですか?
それらのすべてがファイルをコピーするのに、確立された API の一部を禁止して、新しい機能を明らかにするのはなぜでしょうか?
メトロ API の一般的なスタンスは、「Ex 関数またはそれを置き換えるものがある場合は、新しい関数を呼び出さなければならない」というものでした。関数の 8 ビット文字列 (歴史的な理由から "ANSI エンコーディング" という誤った名前) バージョンについても同じことが言えます。他の利点の中でも特に、これにより Windows RT のコード サイズが小さく抑えられます。
分析的に見てみましょうCopyFile2
... 1 つは、options パラメーターが、最初のメンバーとしてサイズを持つ構造体になったことです。将来の拡張性を考えると、これはCopyFileEx
. これにより、Microsoft は古い呼び出し元とのバイナリ互換性を維持しながら、新しいオプションを追加できます。(Microsoft は、構造体の長さを拡張し、構造体のdwSize
バージョンを確認して、それに応じて動作を適応させることができます。) これだけでも、関数シグネチャの変更が必要になるよりも将来性が高くなりCopyFileEx
ます (したがって、まったく新しい関数) をクリックして、単一のオプションを追加します。(私は注意深く読んでいません。おそらく、彼らはすでにオプションを追加していたのかもしれませんCopyFile2
...)