[0.2.x] added : fixed method size of module class

git-svn-id: https://pykd.svn.codeplex.com/svn@78864 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2012-08-15 12:56:37 +00:00 committed by Mikhail I. Izmestev
parent b06fe5b226
commit deedfd94e0
3 changed files with 20 additions and 1 deletions

View File

@ -34,6 +34,7 @@ ULONG64 findModuleBase( ULONG64 offset );
ULONG64 findModuleBySymbol( const std::string &symbolName );
std::string getModuleName( ULONG64 baseOffset );
std::string getModuleImageName( ULONG64 baseOffset );
ULONG getModuleSize( ULONG64 baseOffset );
std::string getModuleSymbolFileName( ULONG64 baseOffset );
ULONG getModuleTimeStamp( ULONG64 baseOffset );
ULONG getModuleCheckSum( ULONG64 baseOffset );

View File

@ -271,6 +271,22 @@ std::string getModuleImageName( ULONG64 baseOffset )
///////////////////////////////////////////////////////////////////////////////////
ULONG getModuleSize( ULONG64 baseOffset )
{
PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate );
HRESULT hres;
DEBUG_MODULE_PARAMETERS moduleParam = { 0 };
hres = g_dbgEng->symbols->GetModuleParameters( 1, &baseOffset, 0, &moduleParam );
if ( FAILED( hres ) )
throw DbgException( "IDebugSymbol::GetModuleParameters failed" );
return moduleParam.Size;
}
///////////////////////////////////////////////////////////////////////////////////
std::string getModuleSymbolFileName( ULONG64 baseOffset )
{
PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate );

View File

@ -17,6 +17,7 @@ class ModuleTest( unittest.TestCase ):
def testSize( self ):
self.assertNotEqual( 0, target.module.size() )
self.assertTrue( pykd.isValid( target.module.begin() + target.module.size() - 1) )
def testBegin( self ):
self.assertNotEqual( 0, target.module.begin() )
@ -25,6 +26,7 @@ class ModuleTest( unittest.TestCase ):
def testEnd( self ):
self.assertEqual( target.module.size(), target.module.end() - target.module.begin() )
self.assertTrue( pykd.isValid( target.module.end() - 1) )
def testPdb( self ):
self.assertNotEqual( "", target.module.symfile() )
@ -33,7 +35,7 @@ class ModuleTest( unittest.TestCase ):
self.assertEqual( target.module.name() + ".exe", target.module.image() )
def testFindModule( self ):
self.assertRaises( pykd.BaseException, pykd.module, target.module.begin() - 0x10 )
self.assertRaises( pykd.BaseException, pykd.module, target.module.begin() - 0x10 )
self.assertNotEqual( None, pykd.module( target.module.begin() ) )
self.assertNotEqual( None, pykd.module( target.module.begin() + 0x10) )