Author |
Topic |
|
gokan
20 Posts |
Posted - 08 Oct 2004 : 18:12:02
|
I am using a Bity X card with CE version 4.2 I have some data that I need to store in nonvalital ram for the application. The data can be changed by the application and needs to be rewriten. When I open the file using the following line of code I get a diskfull from the system even if I have several meg of free space. myFile.Open(_T("\\FlashFX Disk\\Screen2.per"),CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate); Can you tell me how I can rewrite the file in FlashFX Disk. |
|
ctacke
877 Posts |
Posted - 11 Oct 2004 : 11:45:35
|
Your call seems to be correct, but there are a lot of possible variables. Are you certain there's space left? Are you certain the file is not locked when you attempt to open it? Below is code that I've used to successfully open and append to a file on the FlashFX disk without any problem.
#include "windows.h"
#define FILE_SIZE 0x4000
const TCHAR *ROOT_DIRECTORY = _T("FlashFX Disk");
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { ULARGE_INTEGER freeSpace; ULARGE_INTEGER totalSpace; long elapsed_time; HANDLE hFile; BYTE *outBuffer; DWORD bytesWritten; long lret; int i; unsigned char *p; TCHAR filename[256]; TCHAR rootname[256];
_stprintf(rootname, ROOT_DIRECTORY);
RETAILMSG(TRUE, (_T("--- Begin File System Testing in %s ---\r\n"), rootname));
GetDiskFreeSpaceEx(rootname, &freeSpace, &totalSpace, NULL);
RETAILMSG(TRUE, (_T(" %i bytes free\r\n"), freeSpace)); RETAILMSG(TRUE, (_T(" Using %i block/file size\r\n"), FILE_SIZE)); RETAILMSG(TRUE, (_T(" Writing %i blocks/files\r\n"), freeSpace.QuadPart / FILE_SIZE));
iterations = (short)(freeSpace.QuadPart / FILE_SIZE);
RETAILMSG(TRUE, (_T(" Iterations: %i\r\n"), iterations));
// populate write buffer p = outBuffer = (BYTE *)LocalAlloc(LPTR, FILE_SIZE);
for(i = 0 ; i < FILE_SIZE ; i++) { memcpy(p, &i + (sizeof(i) - 1), 1); p++; }
RETAILMSG(TRUE, (_T("--- Beginning Contiguous Memory Speed Test ---\r\n")));
RETAILMSG(TRUE, (_T("Writing %i "), iterations)); RETAILMSG(TRUE, (_T("%i byte blocks\r\n"), FILE_SIZE)); _stprintf(filename, _T("%s\\Flash.tst"), rootname); hFile = CreateFile(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if(hFile == INVALID_HANDLE_VALUE) { RETAILMSG(TRUE, (_T("\r\nFAILED TO CREATE FILE! GetLastError Returned %i\r\n"), GetLastError())); return 0; }
for(i = 0 ; i < iterations ; i++) { elapsed_time = GetTickCount();
lret = WriteFile(hFile, outBuffer, FILE_SIZE, &bytesWritten, NULL);
if((bytesWritten != FILE_SIZE) || (lret == 0)) { RETAILMSG(TRUE, (_T("\r\nFAILED TO WRITE TO FILE! GetLastError Returned %i\r\n"), GetLastError()));
break; }
elapsed_time = GetTickCount() - elapsed_time;
RETAILMSG(TRUE, (_T("%i\r\n"), elapsed_time)); }
CloseHandle(hFile); RETAILMSG(TRUE, (_T("Deleting file...\r\n")));
DeleteFile(filename);
RETAILMSG(TRUE, (_T("--- Finished Contiguous Memory Speed Test ---\r\n")));
// free buffer LocalFree(outBuffer);
RETAILMSG(TRUE, (_T("--- Persistent Storage Testing Done---\r\n")));
return 0; }
|
|
|
|
Topic |
|
|
|