[pykd] added : rdmsr routine ( Return MSR value )

git-svn-id: https://pykd.svn.codeplex.com/svn@65796 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2011-05-24 09:32:42 +00:00
parent 04adeb02ee
commit b30c1d15cb
3 changed files with 51 additions and 42 deletions

View File

@ -104,6 +104,8 @@ BOOST_PYTHON_MODULE( pykd )
"Return pointer size ( in bytes )" ); "Return pointer size ( in bytes )" );
boost::python::def( "reg", &loadRegister, boost::python::def( "reg", &loadRegister,
"Return CPU's register value" ); "Return CPU's register value" );
boost::python::def( "rdmsr", &loadMSR,
"Return MSR value" );
boost::python::def( "typedVarList", &loadTypedVarList, boost::python::def( "typedVarList", &loadTypedVarList,
"Return list of typedVarClass instances. Each item represents one item of the linked list in the target memory" ); "Return list of typedVarClass instances. Each item represents one item of the linked list in the target memory" );
boost::python::def( "typedVarArray", &loadTypedVarArray, boost::python::def( "typedVarArray", &loadTypedVarArray,

View File

@ -13,8 +13,6 @@ loadRegister( const std::string &registerName )
{ {
HRESULT hres; HRESULT hres;
try {
ULONG registerIndex = 0; ULONG registerIndex = 0;
hres = dbgExt->registers->GetIndexByName( registerName.c_str(), &registerIndex ); hres = dbgExt->registers->GetIndexByName( registerName.c_str(), &registerIndex );
@ -44,17 +42,23 @@ loadRegister( const std::string &registerName )
return boost::python::long_(debugValue.I64 ); return boost::python::long_(debugValue.I64 );
break; break;
} }
}
catch( std::exception &e )
{
dbgExt->control->Output( DEBUG_OUTPUT_ERROR, "pykd error: %s\n", e.what() );
}
catch(...)
{
dbgExt->control->Output( DEBUG_OUTPUT_ERROR, "pykd unexpected error\n" );
}
return boost::python::str( "REG_ERR" ); throw DbgException( "Invalid register value" );
}
///////////////////////////////////////////////////////////////////////////////////
ULONG64
loadMSR( ULONG msr )
{
HRESULT hres;
ULONG64 value;
hres = dbgExt->dataSpaces->ReadMsr( msr, &value );
if ( FAILED( hres ) )
throw DbgException( "IDebugDataSpaces::ReadMsr failed" );
return value;
} }
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////

View File

@ -7,4 +7,7 @@
boost::python::object boost::python::object
loadRegister( const std::string &registerName ); loadRegister( const std::string &registerName );
ULONG64
loadMSR( ULONG msr );
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////