ULONGLONG GetFileLength() { if(FALSE==CheckSafe()) return FALSE; ULONGLONG ulFileLen = 0; m_rwLock.rlock(); ulFileLen = m_ulFileLen; m_rwLock.unlock(); return ulFileLen; }
BOOL ReadFileData( LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead,CONST ULONGLONG ulFilePointer ) { if(FALSE==CheckSafe()) return FALSE; m_rwLock.rlock(); ULONGLONG ulMaxReadLen = min(nNumberOfBytesToRead,(m_ulFileLen - ulFilePointer)); if ( ulMaxReadLen > 0 ) { memcpy_s(lpBuffer,ulMaxReadLen,m_pMemBuf+ulFilePointer,ulMaxReadLen); } if(lpNumberOfBytesRead) { *lpNumberOfBytesRead = ulMaxReadLen; } m_rwLock.unlock(); return TRUE; }
VOID CommonGetCookie(LPCSTR pchUrl,CHAR *pchCookieData,int nCookieDataLen,BOOL bFromJs = FALSE) { CUrlParser urlParser; urlParser.ParseUrl(pchUrl); CStringA strCheckDomain; strCheckDomain = urlParser.GetDomain(); strCheckDomain = "."+strCheckDomain; CStringA strSqlCmd; strSqlCmd.Format("select cookiename,cookievalue from cookiedata where \"%s\" like \"%%\"||domain and \"%s\" like path||\"%%\" %s %s " ,strCheckDomain ,urlParser.GetPath() ,bFromJs?"and httponly=0":"" ,urlParser.GetProtocol().CompareNoCase("https") == 0?"and secure=1":"and secure=0" ); CStringA strCookieResult; char *pcherrmsg = NULL; DWORD dwTickStart = GetTickCount(); Locker.rlock(); ASSERT(sqlite3_exec(g_pDB,strSqlCmd,query_cookie_callback,&strCookieResult,&pcherrmsg) == 0); Locker.unlock(); DWORD dwUseTime = GetTickCount() - dwTickStart; CStringA strMsgout; strMsgout.Format("查询Cookie 用时:%d\r\n",dwUseTime); OutputDebugStringA(strMsgout); strcpy_s(pchCookieData,nCookieDataLen,strCookieResult.GetBuffer()); }