我有一个具有2个exe的MFC应用程序。它们共享一个用于读写的公共资源文件。一旦文本文件超出其大小限制,它将重新创建。之后,只有一个exes能够写入文件。也就是说,重新创建后,写权限将丢失。
下面是用于创建新文件的代码。
CreateFile(FileName, GENERIC_ALL, FILE_ALL_ACCESS, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
您能提出任何解决方案吗?预先感谢。
答案 0 :(得分:1)
对于 dwDesiredAccess 和 dwShareMode ,这都将错误的参数传递给CreateFile。前者请求的访问权限超出了所需。但是,后者是致命的,因为它请求与访问模式冲突的共享模式(它使用的符号常量在此不打算使用)。
要在允许其他调用者以相同权限访问文件的同时打开文件以进行读/写访问,请改用以下代码:
CreateFile(FileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
Creating and Opening Files上的MSDN条目列出了兼容的访问和共享模式。