AppModeAttach.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /////////////////////////////////////////////////////////////////////////////
  2. // AppModeAttach.cpp : Declaration/implementation of the CAppModeAttach class.
  3. //
  4. #include "pch.h"
  5. #include "AppModeDebug.h"
  6. #include "AppModeAttach.h"
  7. /////////////////////////////////////////////////////////////////////////////
  8. //
  9. //
  10. class CAppModeAttach :
  11. public CAppModeDebug<CAppModeAttach>
  12. {
  13. // Construction
  14. public:
  15. CAppModeAttach()
  16. {
  17. }
  18. // IAppMode Interface Methods
  19. public:
  20. STDMETHODIMP Run(int argc, TCHAR* argv[])
  21. {
  22. ZString strPID;
  23. bool bFound = g.GetOptionValue("P", strPID);
  24. // Get the process ID from the string
  25. DWORD pid = _tcstoul(strPID, NULL, 0);
  26. // Attach to the specified process ID
  27. if (!::DebugActiveProcess(pid))
  28. {
  29. HRESULT hr = HRESULT_FROM_WIN32(::GetLastError());
  30. return g.HandleError(hr, IDS_E_FMT_DEBUGACTIVEPROCESS, (LPCTSTR)strPID);
  31. }
  32. // Delegate to base class
  33. return CAppModeDebug_Base::Run(argc, argv);
  34. }
  35. };
  36. /////////////////////////////////////////////////////////////////////////////
  37. // Instantiation Method
  38. //
  39. IAppMode* CreateAppModeAttach()
  40. {
  41. IAppMode* pAppMode = new CAppModeAttach;
  42. if (pAppMode)
  43. pAppMode->AddRef();
  44. return pAppMode;
  45. }