diff --git a/pykd/dia/diacallback.h b/pykd/dia/diacallback.h index 266291b..8c34ff9 100644 --- a/pykd/dia/diacallback.h +++ b/pykd/dia/diacallback.h @@ -11,7 +11,7 @@ class DiaLoadCallback2 : public IDiaLoadCallback2 { std::string *m_openedSymbolFile; public: DiaLoadCallback2(std::string *openedSymbolFile = NULL) - : m_nRefCount(1), m_openedSymbolFile(openedSymbolFile) + : m_nRefCount(0), m_openedSymbolFile(openedSymbolFile) { } diff --git a/pykd/dia/diaload.cpp b/pykd/dia/diaload.cpp index 327aab6..1200e94 100644 --- a/pykd/dia/diaload.cpp +++ b/pykd/dia/diaload.cpp @@ -124,25 +124,17 @@ public: /* [in] */ DWORD cbData, /* [out] */ DWORD *pcbData, /* [size_is][out] */ BYTE *pbData - ) override { - - try - { - readMemory( + ) override + { + if ( readMemoryUnsafe( m_loadBase + relativeVirtualAddress, pbData, cbData, FALSE, - pcbData); + pcbData) ) + return S_OK; - return S_OK; - } - catch( const MemoryException &except ) - { - DBG_UNREFERENCED_LOCAL_VARIABLE(except); - } - - return S_FALSE; + return E_FAIL; //S_FALSE; } }; diff --git a/pykd/win/memory.cpp b/pykd/win/memory.cpp index e91b277..b123dc4 100644 --- a/pykd/win/memory.cpp +++ b/pykd/win/memory.cpp @@ -68,6 +68,9 @@ void readMemory( ULONG64 offset, PVOID buffer, ULONG length, bool phyAddr, ULONG { PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate ); + if ( readed ) + *readed = 0; + HRESULT hres; if ( phyAddr == false ) {