// ファイルからロード void CSharedMru::Load() { if ( WaitForSingleObject( m_hSema ,INFINITE )==WAIT_OBJECT_0 ){ if ( m_pMapPtr != NULL ){ // すでにロードされていれば処理しない if ( memcmp( m_sig , m_pMapPtr , 4 ) != 0 ){ FileR f; bool ret = f.open( m_filename ); if ( ret ){ // 読込正常 memcpy( m_pMapPtr , f.base() , f.size() ); ret = false; // シグネチャチェック if ( memcmp( m_sig , m_pMapPtr , 4 ) == 0 ){ // 長さチェック int len = *(int*)(m_pMapPtr+4); // 長さ取得 if ( len == f.size() ){ ret = true; } } } Update(); } } ReleaseMutex( m_hSema ); } }