Question

J'utilise Windows CE 4.2 et MS Embedded VC ++ 4.0. Le code suivant m'indique que l'erreur L'accès à [nom du fichier] a été refusé. . Il crée le fichier mais n'y écrit rien.

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

Fait intéressant, l’utilisation de CreateFile fonctionne bien:

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);

Pourquoi cela pourrait-il être? Puis-je même utiliser CFile sur WinCE? Je commence tout juste avec le développement intégré.

Était-ce utile?

La solution

Je n'ai pas utilisé MFC sous Windows CE, mais sous Windows ordinaire, l'idiome habituel est

  mFile.Open(tmp, CFile::modeCreate|CFile::modeWrite);

i.e. essayez d’ajouter " CFile :: modeWrite " au constructeur. La documentation MSDN suggère que cela est nécessaire:

Vous pouvez combiner les options répertoriées ci-dessous à l'aide de l'opérateur bitwise-OR (|). Une autorisation d'accès et une option de partage sont requises. les modes modeCreate et modeNoInherit sont facultatifs.

Cela signifie pour moi que l'un des " modeRead " ou " modeWrite " doit toujours être fourni.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top