| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/DIA SDK/Samples/DIA2Dump/ |
Upload File : |
#include "dia2.h"
#pragma warning ( disable : 4100)
class CCallback : public IDiaLoadCallback2{
int m_nRefCount;
public:
CCallback() { m_nRefCount = 0; }
//IUnknown
ULONG STDMETHODCALLTYPE AddRef() {
m_nRefCount++;
return m_nRefCount;
}
ULONG STDMETHODCALLTYPE Release() {
if ( (--m_nRefCount) == 0 )
delete this;
return m_nRefCount;
}
HRESULT STDMETHODCALLTYPE QueryInterface( REFIID rid, void **ppUnk ) {
if ( ppUnk == NULL ) {
return E_INVALIDARG;
}
if (rid == __uuidof( IDiaLoadCallback2 ) )
*ppUnk = (IDiaLoadCallback2 *)this;
else if (rid == __uuidof( IDiaLoadCallback ) )
*ppUnk = (IDiaLoadCallback *)this;
else if (rid == __uuidof( IUnknown ) )
*ppUnk = (IUnknown *)this;
else
*ppUnk = NULL;
if ( *ppUnk != NULL ) {
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
HRESULT STDMETHODCALLTYPE NotifyDebugDir(
BOOL fExecutable,
DWORD cbData,
BYTE data[]) // really a const struct _IMAGE_DEBUG_DIRECTORY *
{
return S_OK;
}
HRESULT STDMETHODCALLTYPE NotifyOpenDBG(
LPCOLESTR dbgPath,
HRESULT resultCode)
{
// wprintf(L"opening %s...\n", dbgPath);
return S_OK;
}
HRESULT STDMETHODCALLTYPE NotifyOpenPDB(
LPCOLESTR pdbPath,
HRESULT resultCode)
{
// wprintf(L"opening %s...\n", pdbPath);
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictRegistryAccess()
{
// return hr != S_OK to prevent querying the registry for symbol search paths
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictSymbolServerAccess()
{
// return hr != S_OK to prevent accessing a symbol server
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictOriginalPathAccess()
{
// return hr != S_OK to prevent querying the registry for symbol search paths
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictReferencePathAccess()
{
// return hr != S_OK to prevent accessing a symbol server
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictDBGAccess()
{
return S_OK;
}
HRESULT STDMETHODCALLTYPE RestrictSystemRootAccess()
{
return S_OK;
}
};
#pragma warning ( default : 4100 )