From f3fbb0c9c85706ba53e9bea4b7de1ca4d2bcc0ec Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Fri, 22 Apr 2011 08:43:57 +0000 Subject: [PATCH] [pykd] added : loadWChars function git-svn-id: https://pykd.svn.codeplex.com/svn@64327 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dbgext.cpp | 3 +++ pykd/dbgmem.cpp | 15 +++++++++++++++ pykd/dbgmem.h | 3 +++ 3 files changed, 21 insertions(+) diff --git a/pykd/dbgext.cpp b/pykd/dbgext.cpp index 548d44a..0f257c1 100644 --- a/pykd/dbgext.cpp +++ b/pykd/dbgext.cpp @@ -43,6 +43,7 @@ BOOST_PYTHON_FUNCTION_OVERLOADS( dprint, DbgPrint::dprint, 1, 2 ) BOOST_PYTHON_FUNCTION_OVERLOADS( dprintln, DbgPrint::dprintln, 1, 2 ) BOOST_PYTHON_FUNCTION_OVERLOADS( loadCharsOv, loadChars, 2, 3 ) +BOOST_PYTHON_FUNCTION_OVERLOADS( loadWCharsOv, loadWChars, 2, 3 ) BOOST_PYTHON_FUNCTION_OVERLOADS( loadBytes, loadArray<unsigned char>, 2, 3 ) BOOST_PYTHON_FUNCTION_OVERLOADS( loadWords, loadArray<unsigned short>, 2, 3 ) BOOST_PYTHON_FUNCTION_OVERLOADS( loadDWords, loadArray<unsigned long>, 2, 3 ) @@ -118,6 +119,8 @@ BOOST_PYTHON_MODULE( pykd ) "Extend address to 64 bits formats ( for x86 )" ); boost::python::def( "loadChars", loadChars, loadCharsOv( boost::python::args( "address", "number", "phyAddr" ), "Load string from the target buffer" ) ); + boost::python::def( "loadWChars", loadWChars, loadWCharsOv( boost::python::args( "address", "number", "phyAddr" ), + "Load unicode string from the target buffer" ) ); boost::python::def( "loadBytes", &loadArray<unsigned char>, loadBytes( boost::python::args( "address", "number", "phyAddr" ), "Return list of unsigned bytes" ) ); boost::python::def( "loadWords", &loadArray<unsigned short>, loadWords( boost::python::args( "address", "number", "phyAddr" ), diff --git a/pykd/dbgmem.cpp b/pykd/dbgmem.cpp index d93f838..189267f 100644 --- a/pykd/dbgmem.cpp +++ b/pykd/dbgmem.cpp @@ -198,6 +198,21 @@ loadChars( ULONG64 address, ULONG number, BOOLEAN phyAddr ) /////////////////////////////////////////////////////////////////////////////////// +boost::python::object +loadWChars( ULONG64 address, ULONG number, BOOLEAN phyAddr ) +{ + std::vector<wchar_t> buffer(number); + + if ( loadMemory( address, &buffer[0], (ULONG)buffer.size(), phyAddr ) ) + { + return boost::python::object(std::wstring( buffer.begin(), buffer.end() ) ); + } + + return boost::python::object(); +} + +/////////////////////////////////////////////////////////////////////////////////// + ULONG64 loadPtrByPtr( ULONG64 address ) { diff --git a/pykd/dbgmem.h b/pykd/dbgmem.h index b82547c..4a3e2a2 100644 --- a/pykd/dbgmem.h +++ b/pykd/dbgmem.h @@ -39,6 +39,9 @@ loadArray( ULONG64 address, ULONG number, BOOLEAN phyAddr = FALSE ) boost::python::object loadChars( ULONG64 address, ULONG number, BOOLEAN phyAddr = FALSE ); +boost::python::object +loadWChars( ULONG64 address, ULONG number, BOOLEAN phyAddr = FALSE ); + template<typename T> boost::python::object loadByPtr( ULONG64 address )