【发布时间】:2012-05-15 14:57:34
【问题描述】:
我对@987654321@ 标记的文件有疑问。 首先,这是我想做的:
我有一个 DLL,它接受一个文件名,并在内部打开该文件并从中读取。我不知道这个文件是如何在里面处理的。
我要提供给该 DLL 的文件将由我的进程创建。它必须是一个临时文件,并且它的数据必须只保存在 RAM 中,并且不能被其他进程访问。所以我将 Win32 函数 CreateFile() 与 FILE_ATTRIBUTE_TEMPORARY 和 FILE_FLAG_DELETE_ON_CLOSE 一起使用。到目前为止,这很有效。
我有一个测试代码,用于测试文件是否可以在仍然打开的情况下再次访问。这里是:
HANDLE WINHandle = CreateFile("TempFileWIN.txt", (GENERIC_WRITE | GENERIC_READ) ,(FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE), 0, CREATE_ALWAYS, (FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE), 0);
ifstream ifs("TempFileWIN.txt", (ios::in | ios::trunc));
if(ifs.is_open())
{
cout << "Success!" << endl;
}
else if(ifs.fail())
{
cout << "Failed!" << endl;
}
我正在使用 fstream 来测试是否可以使用流打开文件。上面的代码不起作用。输出为“失败!”。 我知道,该文件可以用 CreateFile 再次打开。我检查过了。但是想知道是否可以通过与(例如)fstream 一起使用的外部 DLL 打开文件。
我希望你能帮我解决这个问题。 最好的问候。
编辑: 也许更好的问题是我如何将文件锁定到我的进程并确保它永远不能被其他进程访问(即使我的进程被杀死)。该文件必须可以使用 C++ fstream 对象打开。
【问题讨论】:
标签: c++ winapi file-io temporary-files