diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index 7407f6f..72cc1a6 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -508,7 +508,25 @@ BOOST_PYTHON_MODULE( pykd ) NumVariantAdaptor::registerNumConvertion(); - python::class_("targetProcess", "Class representing process in the target system", python::no_init ) + + python::class_("targetSystem", "Class representing target system", python::no_init) + .def("getNumber", TargetSystemAdapter::getNumberSystems, + "Retunr number of systems").staticmethod("getNumber") + .def("getCurrent", TargetSystemAdapter::getCurrent, + "Return current target system").staticmethod("getCurrent") + .def("getSystem", TargetSystemAdapter::getSystem, + "Return target system by index").staticmethod("getSystem") + .add_property("desc", TargetSystemAdapter::getDescription, + "Retunr target system description") + .def("getNumberProcesses", TargetSystemAdapter::getNumberProcesses, + "Return processed number of the target system") + .def("process", TargetSystemAdapter::getProcessByIndex, + "Return process by index") + .def("currentProcess", TargetSystemAdapter::getCurrentProcess, + "Return current process") + ; + + python::class_("targetProcess", "Class representing process in the target system", python::no_init ) .def("getNumber", TargetProcessAdapter::getNumberProcesses, "Return number of processes" ).staticmethod("getNumber") .def("getCurrent", TargetProcessAdapter::getCurrent, diff --git a/pykd/pyprocess.h b/pykd/pyprocess.h index df5bfd3..8dce389 100644 --- a/pykd/pyprocess.h +++ b/pykd/pyprocess.h @@ -7,6 +7,52 @@ namespace pykd { +struct TargetSystemAdapter { + + static unsigned long getNumberSystems() + { + AutoRestorePyState pystate; + return kdlib::TargetSystem::getNumber(); + } + + static kdlib::TargetSystemPtr getCurrent() + { + AutoRestorePyState pystate; + return kdlib::TargetSystem::getCurrent(); + } + + static kdlib::TargetSystemPtr getSystem(unsigned long index) + { + AutoRestorePyState pystate; + return kdlib::TargetSystem::getByIndex(index); + } + + static std::wstring getDescription(kdlib::TargetSystem& system) + { + AutoRestorePyState pystate; + return system.getDescription(); + } + + static unsigned long getNumberProcesses(kdlib::TargetSystem& system) + { + AutoRestorePyState pystate; + return system.getNumberProcesses(); + } + + static kdlib::TargetProcessPtr getProcessByIndex(kdlib::TargetSystem& system, unsigned long index) + { + AutoRestorePyState pystate; + return system.getProcessByIndex(index); + } + + static kdlib::TargetProcessPtr getCurrentProcess(kdlib::TargetSystem& system) + { + AutoRestorePyState pystate; + return system.getCurrentProcess(); + } +}; + + struct TargetProcessAdapter { static kdlib::TargetProcessPtr getCurrent()