void DumpFile( LPTSTR lpFilename ){ BUFFER buf; if( LoadFileData(lpFilename, buf) ) { m_wndList.DeleteAllItems(); TString str; int item = 0; unsigned idx = 0; unsigned siz = buf.size(); while( idx < siz ) { int loop = 16; if( int(siz - idx) < 16 ){ loop = int(siz - idx); } str.Format(_T("%08X"), idx); m_wndList.InsertItem(item, (LPTSTR)str); for( int i=0; i<loop; i++ ){ str.Format(_T("%02X"), buf.at(idx+i)); m_wndList.SetItem(item, i+1, (LPTSTR)str); } str.clear(); for( int i=0; i<loop; i++ ){ if( ::isgraph(int(buf.at(idx+i))) ) str.AppendFormat(_T("%c"), buf.at(idx+i)); else str.AppendFormat(_T(" ")); } m_wndList.SetItem(item, 17, (LPTSTR)str); idx += 16; item += 1; } } }
DWORD LoadFileData( LPTSTR lpFilename, BUFFER& buf ){ DWORD dwRet = 0; CReadOnlyFile file(lpFilename); if( file.IsOpen() ){ DWORD dwSize = file.GetFileSize(); if( dwSize > 0 ) { buf.resize( dwSize ); if( file.Read(&buf.at(0), dwSize) == dwSize ){ dwRet = dwSize; } } file.Close(); return dwRet; } return dwRet; }
BYTE* GetData( void ){ return &(m_buf.at( 0 )); }
BYTE* At( int idx ){ return &m_buf.at( idx ); }
void Set( const CBuffer& buf ){ m_buf.resize( buf.m_buf.size() ); memcpy( &m_buf.at(0), &buf.m_buf.at(0), buf.m_buf.size() ); }
void Set( const BYTE* pBuf, int size ){ m_buf.resize( size ); memcpy( &m_buf.at(0), pBuf, size ); }