/** Finish the memory test. @param[in] This The protocol instance pointer. @retval EFI_SUCCESS Success. All resources used in the memory test are freed. **/ EFI_STATUS EFIAPI GenMemoryTestFinished ( IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This ) { EFI_STATUS Status; GENERIC_MEMORY_TEST_PRIVATE *Private; Private = GENERIC_MEMORY_TEST_PRIVATE_FROM_THIS (This); // // Perform Data and Address line test // Status = PerformAddressDataLineTest (Private); ASSERT_EFI_ERROR (Status); // // Add the non tested memory range to system memory map through GCD service // UpdateMemoryMap (Private); // // we need to free all the memory allocate // DestroyLinkList (Private); return EFI_SUCCESS; }
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { if (nCode == CN_UPDATE_COMMAND_UI) { if (nID >= WM_CLASSMENU && nID < (WM_CLASSMENU + WM_MAXITEMS)) { ((CCmdUI*)pExtra)->Enable(TRUE); return TRUE; } else if (nID >= WM_PROCESSMENU && nID < (WM_PROCESSMENU + WM_MAXITEMS)) { ((CCmdUI*)pExtra)->Enable(TRUE); return TRUE; } else if (nID >= WM_DELETECLASSMENU && nID < (WM_DELETECLASSMENU + WM_MAXITEMS)) { ((CCmdUI*)pExtra)->Enable(TRUE); return TRUE; } } if (nCode == CN_COMMAND) { if (nID >= WM_CLASSMENU && nID < (WM_CLASSMENU + WM_MAXITEMS)) { UINT idx = nID - WM_CLASSMENU; CChildFrame* pChild = (CChildFrame*)this->CreateNewChild(RUNTIME_CLASS(CChildFrame), IDR_ReClass2015TYPE, theApp.m_hMDIMenu, theApp.m_hMDIAccel); CNodeClass* pClass = theApp.Classes[idx]; pClass->pChildWindow = pChild; pChild->SetTitle(pClass->Name); pChild->SetWindowText(pClass->Name); UpdateFrameTitleForDocument(pClass->Name); pChild->m_wndView.m_pClass = pClass; return TRUE; } if (nID >= WM_PROCESSMENU && nID < (WM_PROCESSMENU + WM_MAXITEMS) ) { UINT idx = nID - WM_PROCESSMENU; g_ProcessID = ProcMenuItems[idx].ProcessId; g_hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, g_ProcessID); UpdateMemoryMap(); return TRUE; } if (nID >= WM_DELETECLASSMENU && nID < (WM_DELETECLASSMENU + WM_MAXITEMS) ) { UINT idx = nID - WM_DELETECLASSMENU; if (theApp.Classes[idx]->pChildWindow) theApp.Classes[idx]->pChildWindow->SendMessage(WM_CLOSE, 0, 0); theApp.DeleteClass(theApp.Classes[idx]); return TRUE; } } return CMDIFrameWndEx::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }
void CMainFrame::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == 69) UpdateMemoryMap(); CMDIFrameWndEx::OnTimer(nIDEvent); }
void CMainFrame::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == TIMER_MEMORYMAP_UPDATE) UpdateMemoryMap(); CMDIFrameWndEx::OnTimer(nIDEvent); }
void CDialogProcSelect::OnAttachButton( ) { int SelectedIndex = m_ProcessList.GetSelectionMark( ); if (SelectedIndex != -1) { HANDLE ProcessHandle; DWORD SelectedProcessId; TCHAR SelectedProcessIdText[64]; m_ProcessList.GetItemText( SelectedIndex, COLUMN_PROCESSID, SelectedProcessIdText, sizeof( SelectedProcessIdText ) ); SelectedProcessId = _tcstoul( SelectedProcessIdText, NULL, 10 ); auto FoundProcessInfo = std::find_if( m_ProcessInfos.begin( ), m_ProcessInfos.end( ), [SelectedProcessId] ( const ProcessInfoStack& proc ) -> bool { return proc.dwProcessId == SelectedProcessId; } ); if (FoundProcessInfo != m_ProcessInfos.end( )) { ProcessHandle = ReClassOpenProcess( PROCESS_ALL_ACCESS, FALSE, FoundProcessInfo->dwProcessId ); if (ProcessHandle == NULL || GetLastError( ) != ERROR_SUCCESS) { CString MessageText; MessageText.Format( _T( "Failed to attach to process \"%s\"!" ), FoundProcessInfo->strProcessName.GetString( ) ); MessageBox( MessageText, g_ReClassApp.m_pszAppName, MB_OK | MB_ICONERROR ); } else { if (g_hProcess != NULL) // Stop leaking handles! CloseHandle( g_hProcess ); g_hProcess = ProcessHandle; g_ProcessID = FoundProcessInfo->dwProcessId; g_ProcessName = FoundProcessInfo->strProcessName; UpdateMemoryMap( ); if (g_bSymbolResolution && m_LoadAllSymbols.GetCheck( ) == BST_CHECKED) { OnClose( ); MSG Msg; CStatusBar* StatusBar = g_ReClassApp.GetStatusBar( ); CProgressBar ProgressBar( _T( "Progress" ), 100, 100, TRUE, 0, StatusBar ); ProgressBar.SetStep( 1 ); ProgressBar.SetText( _T( "Symbols loading: " ) ); for (size_t i = 0; i < g_MemMapModules.size( ); i++) { TCHAR ProgressText[256]; MemMapInfo *CurrentModule = &g_MemMapModules[i]; ProgressBar.SetRange32( 0, (int)g_MemMapModules.size( ) ); _stprintf_s( ProgressText, _T( "[%d/%d] %s" ), (UINT)i + 1, (UINT)g_MemMapModules.size( ), CurrentModule->Name.GetString( ) ); StatusBar->SetPaneText( 1, ProgressText ); //MemMapInfo* pCurrentModule = new MemMapInfo( CurrentModule ); //Utils::NtCreateThread( LoadModuleSymbolsThread, pCurrentModule, 0 ); if (!g_ReClassApp.m_pSymbolLoader->LoadSymbolsForModule( CurrentModule->Path, CurrentModule->Start, CurrentModule->Size )) { PrintOut( _T( "Failed to load symbols for %s" ), CurrentModule->Name.GetString( ) ); } ProgressBar.StepIt( ); // Peek and pump through messages to stop reclass from hanging while (::PeekMessage( &Msg, NULL, 0, 0, PM_NOREMOVE )) { if (!AfxGetApp( )->PumpMessage( )) ::PostQuitMessage( 0 ); } } StatusBar->SetPaneText( 1, _T( "" ) ); return; } OnClose( ); } } } }