All Forums
 Microsoft Windows CE
 CE Flash, CF and PCMCIA
 FX Flash (disk full error)
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Author Topic  

gokan

20 Posts

Posted - 08 Oct 2004 :  18:12:02  Show Profile  Email Poster
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  Show Profile  Email Poster
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;
}
Go to Top of Page
  Topic  
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Jump To:
Eurotech Support Forums © Eurotech Inc. Go To Top Of Page
This page was generated in 0.03 seconds. Snitz Forums 2000