summaryrefslogtreecommitdiff
path: root/src/ToolBox/PdbTypeMatch/callback.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ToolBox/PdbTypeMatch/callback.h')
-rw-r--r--src/ToolBox/PdbTypeMatch/callback.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/ToolBox/PdbTypeMatch/callback.h b/src/ToolBox/PdbTypeMatch/callback.h
new file mode 100644
index 0000000000..34ea3d80c0
--- /dev/null
+++ b/src/ToolBox/PdbTypeMatch/callback.h
@@ -0,0 +1,96 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+#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() {
+ ULONG newRefCount = --m_nRefCount;
+ if ( newRefCount == 0 )
+ delete this;
+ return newRefCount;
+ }
+ HRESULT STDMETHODCALLTYPE QueryInterface( REFIID rid, void **ppUnk ) {
+ if ( ppUnk == NULL ) {
+ return E_POINTER;
+ }
+ 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 )