#pragma once #include <string> #include "dbgobj.h" namespace pykd { /////////////////////////////////////////////////////////////////////////////////// std::string dbgCommand( const std::wstring &command ); ULONG64 evaluate( const std::wstring &expression ); void breakin(); /////////////////////////////////////////////////////////////////////////////////// class DbgExtension : private DbgObject { public: DbgExtension( IDebugClient4 *client, const std::wstring &extPath ); virtual ~DbgExtension(); std::string call( const std::wstring &command, const std::wstring ¶m ); private: ULONG64 m_handle; }; typedef boost::shared_ptr<DbgExtension> DbgExtensionPtr; DbgExtensionPtr loadExtension( const std::wstring &extPath ); /////////////////////////////////////////////////////////////////////////////////// }; // end of namespace pykd //#include <string> //#include <map> //#include "pyaux.h" /////////////////////////////////////////////////////////////////////////////////// // //std::string //dbgCommand( const std::wstring &command ); // //template <ULONG status> //void //setExecutionStatus() //{ // HRESULT hres; // // hres = dbgExt->control->SetExecutionStatus( status ); // // if ( FAILED( hres ) ) // throw DbgException( "IDebugControl::SetExecutionStatus failed" ); // // ULONG currentStatus; // // do { // // { // PyThread_StateRestore pyThreadRestore; // hres = dbgExt->control->WaitForEvent( 0, INFINITE ); // } // // if ( FAILED( hres ) ) // { // if (E_UNEXPECTED == hres) // throw WaitEventException(); // // throw DbgException( "IDebugControl::WaitForEvent failed" ); // } // // hres = dbgExt->control->GetExecutionStatus( ¤tStatus ); // // if ( FAILED( hres ) ) // throw DbgException( "IDebugControl::GetExecutionStatus failed" ); // // } while( currentStatus != DEBUG_STATUS_BREAK && currentStatus != DEBUG_STATUS_NO_DEBUGGEE ); // //} // /////////////////////////////////////////////////////////////////////////////////// // //class dbgExtensionClass { // //public: // // dbgExtensionClass() : // m_handle( NULL ) // {} // // dbgExtensionClass( const char* path ); // // ~dbgExtensionClass(); // // std::string // call( const std::string &command, const std::string param ); // // std::string // print() const; // //private: // // ULONG64 m_handle; // std::string m_path; //}; // // /////////////////////////////////////////////////////////////////////////////////// // //ULONG64 //evaluate( const std::string &expression ); // /////////////////////////////////////////////////////////////////////////////////// // //void //breakin(); // ///////////////////////////////////////////////////////////////////////////////////