Exemple #1
0
/**
  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;
}
Exemple #2
0
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);
}
Exemple #3
0
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
	if (nIDEvent == 69) UpdateMemoryMap();

	CMDIFrameWndEx::OnTimer(nIDEvent);
}
Exemple #4
0
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( );
            }
        }
    }
}