DWORD CUserFileObject::SetFilePointer( LONG lDistanceToMove, PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod ) { ULONGLONG ulNewFilePointer = 0; if( 1 == m_bValid ) { m_rwLock.wlock(); if( FILE_BEGIN == dwMoveMethod ) { m_ulFilePointer = lDistanceToMove; } if( FILE_CURRENT == dwMoveMethod ) { m_ulFilePointer += lDistanceToMove; } if( FILE_END == dwMoveMethod ) { m_ulFilePointer = m_pMemFileObject->GetFileLength(); m_ulFilePointer += lDistanceToMove; } ulNewFilePointer = m_ulFilePointer; m_rwLock.unlock(); } return ulNewFilePointer; }
BOOL CUserFileObject::ReadFile( LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead ) { BOOL bRes = FALSE; if (lpNumberOfBytesRead) { *lpNumberOfBytesRead = 0; } if( 1 == m_bValid ) { DWORD dwReadLen = 0; m_rwLock.wlock(); bRes = m_pMemFileObject->ReadFileData(lpBuffer, nNumberOfBytesToRead, &dwReadLen,m_ulFilePointer); if (lpNumberOfBytesRead) { *lpNumberOfBytesRead = dwReadLen; } m_ulFilePointer+=dwReadLen; m_rwLock.unlock(); } return bRes; }
BOOL CUserFileObject::WriteFile( LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten ) { BOOL bRes = FALSE; if (lpNumberOfBytesWritten) { *lpNumberOfBytesWritten = 0; } if( 1 == m_bValid ) { DWORD dwWriteLen = 0; m_rwLock.wlock(); bRes = m_pMemFileObject->WriteFileData(lpBuffer, nNumberOfBytesToWrite,&dwWriteLen,m_ulFilePointer); if (lpNumberOfBytesWritten) { *lpNumberOfBytesWritten = dwWriteLen; } m_ulFilePointer+=dwWriteLen; m_rwLock.unlock(); } return bRes; }
VOID CommonSetCookie(LPCSTR pchUrl,LPCSTR pchCookieData,BOOL bFromJs = FALSE) { CCookieParser cookieParser; cookieParser.ParserCookieString(pchUrl,pchCookieData); if (g_pDB) { char *pcherrmsg = NULL; CStringA strSqlCmd; strSqlCmd.Format("replace into cookiedata (domain,path,cookiename,cookievalue,secure,httponly,session) values('%s','%s','%s','%s',%d,%d,%d)" ,cookieParser.m_strDomain ,cookieParser.m_strPath ,cookieParser.m_strCookieName ,cookieParser.m_strCookieValue ,cookieParser.m_bSecure ,cookieParser.m_bHttpOnly ,cookieParser.m_bSessionCookie); DWORD dwTickStart = GetTickCount(); Locker.wlock(); /*ASSERT(*/sqlite3_exec(g_pDB,strSqlCmd,NULL,NULL,&pcherrmsg)/* == 0)*/; Locker.unlock(); DWORD dwUseTime = GetTickCount() - dwTickStart; CStringA strMsgout; strMsgout.Format("插入Cookie 用时:%d\r\n",dwUseTime); OutputDebugStringA(strMsgout); } }
BOOL WriteFileData( LPCVOID lpBuffer, CONST DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,CONST ULONGLONG ulFilePointer ) { if(FALSE==CheckSafe()) return FALSE; m_rwLock.wlock(); ULONGLONG ulPreMemLen = m_ulMemLen; ULONGLONG dwNeedExLen = 0; if ( m_ulMemLen < ulFilePointer+nNumberOfBytesToWrite ) { dwNeedExLen = ulFilePointer+nNumberOfBytesToWrite - m_ulMemLen; } if ( dwNeedExLen > 0 ) { if ( NULL == m_pMemBuf ) { ULONGLONG ulAllocLen = ( dwNeedExLen/4096+1)*4096; m_pMemBuf = (BYTE *)malloc(ulAllocLen); m_ulMemLen = ulAllocLen; } else { ULONGLONG ulAllocLen = ( dwNeedExLen/4096+1)*4096+m_ulMemLen; m_pMemBuf = (BYTE *)realloc(m_pMemBuf,ulAllocLen); m_ulMemLen = ulAllocLen; } } g_DebugLock.Lock(); nCurMemUse+=(m_ulMemLen-ulPreMemLen); if (nCurMemUse > nMaxMemUse) { nMaxMemUse = nCurMemUse; } #ifdef DEBUG CString strMsgOut; strMsgOut.Format(L"当前内存占用 %u 最大内存占用 %u\r\n",nCurMemUse,nMaxMemUse); OutputDebugStringW(strMsgOut); strMsgOut.Format(L"%d",GetCurrentProcessId()); CString strTemp; strTemp.Format(L"%ul",nMaxMemUse); WritePrivateProfileStringW(L"MaxMemUse",strMsgOut,strTemp,L"C:\\MatrixDebug.log"); #endif g_DebugLock.UnLock(); memcpy_s(m_pMemBuf+ulFilePointer,nNumberOfBytesToWrite,lpBuffer,nNumberOfBytesToWrite); m_ulFileLen = ulFilePointer+nNumberOfBytesToWrite; if(lpNumberOfBytesWritten) { *lpNumberOfBytesWritten = nNumberOfBytesToWrite; } m_rwLock.unlock(); return TRUE; }