4

FATファイルシステムでCreateFileMappingを介してメモリマップドIOを使用することの危険性について懸念しています。具体的なシナリオは、ユーザーがUSBスティックから直接ドキュメントを開くことです(そうです、これを行うことを禁止しようとします!)。

MSDNのメモリマップトファイルの管理に関する記事では、ファイルシステムの制約については何も述べられていません。

アップデート

心配する本当の理由はありませんでしたが、ある時点でそれらの問題について読んだという漠然とした気持ちがありました(私のキャリアは25年以上にわたるので、ずっと昔の記憶に漠然とした深みがたくさんあります8ビットマイクロまで!)。それらがサポートされるべきかどうかの問題は私が推薦するのに非常に重要なので、誰かが私の懸念を裏付けることができるかどうか尋ねたいと思いました。心を休ませてくれてありがとう。

4

2 に答える 2

7

メモリマップトファイルは、私のお気に入りの機能の1つです。それは絶対に危険ではありません。これは、非常に最適化された基本的なWindows I/O機能の1つです。EXEを起動したり、DLLを間接的にロードしたりすると、メモリマップトファイルマッピングとして内部的に実装されます。

FATを含むすべてのタイプのファイルシステムでサポートされています。

ちなみに、atzzは、メモリマップトファイルはネットワークドライブで許可されていると言っています。追加できますが、許可されているだけでなく、ネットワークからのファイルでもメモリマップトファイルを使用することを強くお勧めします。この場合、I / O操作は非常に適切な方法でキャッシュされますが、これは他の(C / C ++)I/Oでは実行されません。

CDまたはネットワークからEXEを開いたときにEXEがクラッシュしないようにする場合は、ヘッダーの1ビットでProgram Executableをマークできます(リンカースイッチ/ SWAPRUNはhttp://msdn.microsoft.com/en-us/libraryを参照してください)。 /chzz5ts6.aspx)。USBスティックから開いたドキュメントのオプションはありません。

しかし、ユーザーにはどのような正確な問題がありますか?「ハードウェアを安全に取り外す」アイコンを使用していませんか?次に、コンピュータの電源を切り替えないことを学ぶ必要があるのとまったく同じように、これを行うことを学ぶ必要がありますが、コンピュータを適切にシャットダウンします。

メモリマップトファイルを使用するのが危険である理由と、どのような状況で問題が発生し、他のI/O操作の使用にそのような問題がないのかを説明してください。

于 2010-07-12T20:04:21.960 に答える
6

はい、そうです。CDFSまたはネットワークドライブ上のファイルのマッピングもサポートします。あなたの疑問の原因は何ですか?

于 2010-07-12T11:37:32.703 に答える