![](/img/trans.png)
[英]Error in recv()/send() (in Socket) or read()/write() (in CFile)
[英]CFile Error On Windows Ce
我正在使用Windows CE 4.2和MS Embedded VC ++ 4.0。 以下代码给我错误: Access to [file name] was denied.
,它会创建文件,但不会对其写入任何内容。
CString tmp;
tmp.Format(_T("%s%d"), mFileName, ++ctr);
TRY
{
mFile.Open(tmp, CFile::modeCreate);
mFile.Write(&data[ctr%2], 1);
mFile.Close();
}
CATCH (CException, e)
{
TCHAR szCause[255];
CString strFormatted;
e->GetErrorMessage(szCause, 255);
strFormatted += szCause;
AfxMessageBox(strFormatted);
}
END_CATCH
有趣的是,使用CreateFile
可以正常工作:
CString tmp;
tmp.Format(_T("%s%d"), mFileName, ++ctr);
hFile = CreateFile(tmp, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL /*| FILE_FLAG_WRITE_THROUGH*/, 0);
WriteFile(hFile, &(data[ctr%2]), 1, &bytesWritten, NULL);
CloseHandle(hFile);
为什么会这样呢? 我甚至可以在WinCE上使用CFile吗? 我只是从嵌入式开发开始。
我没有在Windows CE上使用MFC,但是在普通Windows上,通常的习惯用法是
mFile.Open(tmp, CFile::modeCreate|CFile::modeWrite);
即尝试添加“ CFile :: modeWrite”到构造函数。 MSDN文档建议这样做是必要的:
您可以使用按位或(|)运算符组合下面列出的选项。 需要一个访问权限和一个共享选项; modeCreate和modeNoInherit模式是可选的。
对我而言,这意味着必须始终提供“ modeRead”或“ modeWrite”之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.