#include bool MemFile::createBuffer(DWORD lengthBuffer) { destroyBuffer(); mhGlobalBuffer=::GlobalAlloc(GMEM_FIXED,lengthBuffer); if(!mhGlobalBuffer)return false; mlpBuffer=(UHUGE*)::GlobalLock(mhGlobalBuffer); mlpBufferPointer=mlpBuffer; mBufferLength=lengthBuffer; return true; } bool MemFile::destroyBuffer(void) { if(!mhGlobalBuffer)return false; ::GlobalUnlock(mhGlobalBuffer); ::GlobalFree(mhGlobalBuffer); mlpBuffer=mlpBufferPointer=0; mhGlobalBuffer=0; mlpBufferPointer=0; mIsDirty=false; mBufferLength=0; mMaxExtent=0; return true; } bool MemFile::rewind(void) { if(!isOkay())return false; mlpBufferPointer=mlpBuffer; return true; } DWORD MemFile::read(char *lpBuffer,DWORD lengthData) { BYTE byteValue; int bytesRead; bytesRead=0; if(!isOkay())return bytesRead; for(;bytesRead>16); write(wordValue); return true; } bool MemFile::write(char *lpBuffer,DWORD lengthData) { if(!isOkay())return FALSE; if(!lengthData)return TRUE; for(DWORD index=0;indexseekOffset)break; if(seekOffset>mMaxExtent)break; mlpBufferPointer=mlpBuffer+seekOffset; returnCode=true; break; case SeekCurrent : if(mlpBufferPointer+seekOffsetmlpBuffer+mBufferLength)break; mlpBufferPointer+=seekOffset; returnCode=true; break; } return returnCode; } bool MemFile::flushBuffer(void) { OFSTRUCT ofStruct; HFILE hOutputFile; if(!isOkay()||!mMaxExtent||mPathFileName.isNull())return false; if(HFILE_ERROR==(hOutputFile=::OpenFile(mPathFileName,&ofStruct,OF_WRITE|OF_CREATE)))return false; if(-1==::_hwrite(hOutputFile,(LPCSTR)mlpBuffer,mMaxExtent))return false; ::_lclose(hOutputFile); mIsDirty=false; return true; } DWORD MemFile::captureBuffer(GlobalData &memoryBuffer,bool clearDirty) { if(!isOkay()||!mMaxExtent)return FALSE; memoryBuffer.size(mMaxExtent); for(DWORD itemIndex=0;itemIndex