summaryrefslogtreecommitdiff
path: root/src/debug/ee
diff options
context:
space:
mode:
authorEugene Zemtsov <Eugene.Zemtsov@microsoft.com>2015-02-16 21:58:15 -0800
committerEugene Zemtsov <Eugene.Zemtsov@microsoft.com>2015-03-03 14:39:55 -0800
commit1b6c5406b302c496320d6012dae1342c699c2290 (patch)
treeaaba609c18f194c68c861c6afc516218da3f424d /src/debug/ee
parente9f40ce78c9443819829870d94af0239adc16030 (diff)
downloadcoreclr-1b6c5406b302c496320d6012dae1342c699c2290.tar.gz
coreclr-1b6c5406b302c496320d6012dae1342c699c2290.tar.bz2
coreclr-1b6c5406b302c496320d6012dae1342c699c2290.zip
Pipe based communication between debugee and managed debugger on Linux
Goal of this change is to make managed debugging on Linux possible. (It is not fully achieved, but we're getting there) So far our provision for debugging on Linux is somewhat different from debugging on Windows. Instead of using WaitForDebugEvent and RaiseException as means of communication between debugger and debuggee, we're gonna use pipes. Thankfully from old times of Silverlight Mac debugging we had debugging via network sockets under ifdefs FEATURE_DBGIPC_TRANSPORT_DI and FEATURE_DBGIPC_TRANSPORT_VM. So this change is taking that old way of debugging, changing sockets for network pipes, removes lots of unused stuff and implements whatever is missing on Linux. Testing: Due to infrastructural issues I wasn't able to test debugging on Linux yet. So my testing consistent of 1. End to end net pipe debugging on Windows 2. Testing of twowaypipe implementation on Linux 3. Testing of search for loaded CoreCLR module on Linux.
Diffstat (limited to 'src/debug/ee')
-rw-r--r--src/debug/ee/CMakeLists.txt9
-rw-r--r--src/debug/ee/dbgtransportproxy.cpp122
-rw-r--r--src/debug/ee/dbgtransportproxy.h51
-rw-r--r--src/debug/ee/ddunpack.cpp4578
-rw-r--r--src/debug/ee/ddunpack.h498
-rw-r--r--src/debug/ee/debugger.cpp227
-rw-r--r--src/debug/ee/debugger.h34
-rw-r--r--src/debug/ee/inprocdac.cpp432
-rw-r--r--src/debug/ee/inprocdac.h157
-rw-r--r--src/debug/ee/rcthread.cpp326
10 files changed, 209 insertions, 6225 deletions
diff --git a/src/debug/ee/CMakeLists.txt b/src/debug/ee/CMakeLists.txt
index 5200072353..2b8d229cee 100644
--- a/src/debug/ee/CMakeLists.txt
+++ b/src/debug/ee/CMakeLists.txt
@@ -36,15 +36,6 @@ set(CORDBEE_SOURCES_DAC
${CORDBEE_SOURCES_DAC_AND_WKS}
)
-if(WIN32)
- list(APPEND CORDBEE_SOURCES_WKS
- # The following files need to be ported to Linux
- inprocdac.cpp
- dbgtransportproxy.cpp
- ddunpack.cpp
- )
-endif(WIN32)
-
if (IS_64BIT_BUILD EQUAL 1)
list(APPEND CORDBEE_SOURCES_WKS amd64/amd64walker.cpp)
else ()
diff --git a/src/debug/ee/dbgtransportproxy.cpp b/src/debug/ee/dbgtransportproxy.cpp
deleted file mode 100644
index 7847d9aff3..0000000000
--- a/src/debug/ee/dbgtransportproxy.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-
-
-#include "stdafx.h"
-#include "dbgtransportsession.h"
-#include "dbgtransportproxy.h"
-#include "dbgproxy.h"
-
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
-
-//
-// Provides access to the debugging proxy process from the left side.
-//
-
-DbgTransportProxy::DbgTransportProxy()
-{
- memset(this, 0, sizeof(*this));
-}
-
-// Startup and shutdown. Initialization takes the port number (in host byte order) that the left side will
-// wait on for debugger connections.
-HRESULT DbgTransportProxy::Init(unsigned short usPort)
-{
- // Query the debugger configuration for the current user, this will give us the port number the proxy is
- // using. By the time the this method is called we know that debugging is configured on for this process.
- DbgConfiguration sDbgConfig;
- if (!GetDebuggerConfiguration(&sDbgConfig))
- return E_OUTOFMEMORY;
- _ASSERTE(sDbgConfig.m_fEnabled);
- m_usProxyPort = sDbgConfig.m_usProxyPort;
-
- m_usPort = usPort;
-
- // Initialize some data the proxy needs when we register.
- m_uiPID = GetCurrentProcessId();
-
- // Allocate the connection manager and initialize it.
- m_pConnectionManager = AllocateSecConnMgr();
- if (m_pConnectionManager == NULL)
- return E_OUTOFMEMORY;
-
- SecConnStatus eStatus = m_pConnectionManager->Initialize();
- if (eStatus != SCS_Success)
- return eStatus == SCS_OutOfMemory ? E_OUTOFMEMORY : E_FAIL;
-
- return S_OK;
-}
-
-void DbgTransportProxy::Shutdown()
-{
- if (m_pConnectionManager)
- m_pConnectionManager->Destroy();
-}
-
-// Talk with the proxy process and register this instantiation of the runtime with it. The reply from the
-// proxy will indicate whether a debugger wishes to attach to us before any managed code is allowed to
-// run. This method is synchronous and will wait for the reply from the proxy (or a timeout).
-DbgProxyResult DbgTransportProxy::RegisterWithProxy()
-{
- // Attempt a connection to the proxy. Any failure is treated as the proxy not being there. No time for
- // retries and timeouts, we're holding up process startup.
- SecConn *pConnection = NULL;
- SecConnStatus eStatus = m_pConnectionManager->AllocateConnection(DBGIPC_NTOHL(inet_addr("127.0.0.1")),
- m_usProxyPort,
- &pConnection);
- if (eStatus == SCS_Success)
- eStatus = pConnection->Connect();
-
- if (eStatus != SCS_Success)
- {
- DbgTransportLog(LC_Proxy, "DbgTransportProxy::RegisterWithProxy(): failed to connect to proxy");
- if (pConnection)
- pConnection->Destroy();
- return RequestTimedOut;
- }
-
- // Format a registration message for the proxy.
- DbgProxyRegisterRuntimeMessage sRequest;
- sRequest.m_sHeader.m_eType = DPMT_RegisterRuntime;
- sRequest.m_sHeader.m_uiRequestID = 0;
- sRequest.m_sHeader.m_uiMagic = DBGPROXY_MAGIC_VALUE(&sRequest.m_sHeader);
- sRequest.m_sHeader.m_uiReserved = 0;
- sRequest.m_uiMajorVersion = kCurrentMajorVersion;
- sRequest.m_uiMinorVersion = kCurrentMinorVersion;
- sRequest.m_uiPID = m_uiPID;
- sRequest.m_usPort = m_usPort;
-
- // Send the message. If we can't even do that we act as though the proxy timed out on us (runtime startup
- // will continue and this process will not be debuggable).
- if (!pConnection->Send((unsigned char*)&sRequest, sizeof(sRequest)))
- {
- DbgTransportLog(LC_Proxy, "DbgTransportProxy::RegisterWithProxy(): failed to send registration to proxy");
- return RequestTimedOut;
- }
-
- // Wait for the reply.
- DbgProxyMessageHeader sReply;
- if (!pConnection->Receive((unsigned char*)&sReply, sizeof(sReply)))
- {
- DbgTransportLog(LC_Proxy, "DbgTransportProxy::RegisterWithProxy(): failed to receive reply from proxy");
- return RequestTimedOut;
- }
-
- // Validate reply.
- if (sReply.m_eType != DPMT_RuntimeRegistered ||
- sReply.VariantData.RuntimeRegistered.m_uiMajorVersion != (unsigned)kCurrentMajorVersion ||
- sReply.m_uiMagic != DBGPROXY_MAGIC_VALUE(&sReply))
- {
- DbgTransportLog(LC_Proxy, "DbgTransportProxy::RegisterWithProxy(): bad reply from the proxy");
- return RequestTimedOut;
- }
-
- bool fWaitForDebugger = sReply.VariantData.RuntimeRegistered.m_fWaitForDebuggerAttach;
- DbgTransportLog(LC_Proxy, "DbgTransportProxy::RegisterWithProxy(): %s for the debugger",
- fWaitForDebugger ? "Waiting" : "Not waiting");
- return fWaitForDebugger ? PendingDebuggerAttach : RequestSuccessful;
-}
-
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
diff --git a/src/debug/ee/dbgtransportproxy.h b/src/debug/ee/dbgtransportproxy.h
deleted file mode 100644
index 25f8a501b3..0000000000
--- a/src/debug/ee/dbgtransportproxy.h
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-
-
-#ifndef __DBG_TRANSPORT_PROXY_INCLUDED
-#define __DBG_TRANSPORT_PROXY_INCLUDED
-
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
-
-#include "dbgproxy.h"
-
-//
-// Provides access to the debugging proxy process from the left side.
-//
-
-// The answers the proxy can give to us during runtime startup.
-enum DbgProxyResult
-{
- RequestSuccessful, // Successfully registered the runtime, no debugger is currently interested in us
- RequestTimedOut, // Timed-out trying to reach the proxy (it's probably not configured or started)
- PendingDebuggerAttach // Successfully registered the runtime, a debugger wishes to attach before code is run
-};
-
-class DbgTransportProxy
-{
-public:
- DbgTransportProxy();
-
- // Startup and shutdown. Initialization takes the port number (in host byte order) that the left side
- // will wait on for debugger connections.
- HRESULT Init(unsigned short usPort);
- void Shutdown();
-
- // Talk with the proxy process and register this instantiation of the runtime with it. The reply from the
- // proxy will indicate whether a debugger wishes to attach to us before any managed code is allowed to
- // run. This method is synchronous and will wait for the reply from the proxy (or a timeout).
- DbgProxyResult RegisterWithProxy();
-
-private:
- unsigned int m_uiPID; // PID of the current process
- unsigned short m_usPort; // Port the LS waits on for debugger connections
- unsigned short m_usProxyPort; // Port the proxy waits on for requests
-
- SecConnMgr *m_pConnectionManager; // Factory for network connections
-};
-
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
-
-#endif // __DBG_TRANSPORT_PROXY_INCLUDED
diff --git a/src/debug/ee/ddunpack.cpp b/src/debug/ee/ddunpack.cpp
deleted file mode 100644
index 90b65c8a98..0000000000
--- a/src/debug/ee/ddunpack.cpp
+++ /dev/null
@@ -1,4578 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-
-// Unpacker
-//
-// Lives on EE side of the fence
-//
-// Note that this file is generated by ndp\clr\src\Debug\tools\BuildDDMarshal\.
-// Changes should be made to output\DDUnpack_template.cpp in that directory.
-//
-
-
-#include "stdafx.h"
-
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
-#include "dacdbiinterface.h"
-
-#include "ddshared.h"
-
-#include "ddmarshalutil.h"
-
-#include "ddunpack.h"
-
-#include "../shared/stringcopyholder.cpp"
-
-// Suppress PREFast warning about overly large function
-// These functions are automatically generated.
-#if defined(_PREFAST_)
-#pragma warning(disable:21000)
-#endif
-
-// general callback for Callback functions.
-template <class T>
-void GeneralEnumerationCallback(T vmAppDomain, void * pUserData)
-{
- WriteBuffer * pResult = (WriteBuffer *) pUserData;
-
- DWORD dw = 1; // Continue
- WriteToBuffer(pResult, dw);
- WriteToBuffer(pResult, vmAppDomain);
-}
-
-
-
-
-//
-// These stubs are called by the handler
-//
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT CheckDbiVersion(const DbiVersion * pVersion)
-void DDUnpack::Unpack_CheckDbiVersion(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DbiVersion _pVersion; // storage
- const DbiVersion * pVersion = &_pVersion;
- ReadFromBuffer(pSend, &_pVersion); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->CheckDbiVersion(pVersion); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method CheckDbiVersion
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetLocalInterfaceHashAndTimestamp(DWORD & hash1, DWORD & hash2, DWORD & hash3, DWORD & hash4, DWORD & timestamp1, DWORD & timestamp2)
-void DDUnpack::Unpack_GetLocalInterfaceHashAndTimestamp(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- // Callbacks not yet implemented
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetLocalInterfaceHashAndTimestamp
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetRemoteInterfaceHashAndTimestamp(DWORD & hash1, DWORD & hash2, DWORD & hash3, DWORD & hash4, DWORD & timestamp1, DWORD & timestamp2)
-void DDUnpack::Unpack_GetRemoteInterfaceHashAndTimestamp(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DWORD hash1;
- // hash1 does not need to be copied on input
- DWORD hash2;
- // hash2 does not need to be copied on input
- DWORD hash3;
- // hash3 does not need to be copied on input
- DWORD hash4;
- // hash4 does not need to be copied on input
- DWORD timestamp1;
- // timestamp1 does not need to be copied on input
- DWORD timestamp2;
- // timestamp2 does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- hash1 = 0xe5ffdbe6;
- hash2 = 0xf26b43be;
- hash3 = 0x6c9685ac;
- hash4 = 0xdd723940;
- timestamp1 = 0x1cc67fb;
- timestamp2 = 0xe3ad5a06;
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hash1);
- WriteToBuffer(pResult, hash2);
- WriteToBuffer(pResult, hash3);
- WriteToBuffer(pResult, hash4);
- WriteToBuffer(pResult, timestamp1);
- WriteToBuffer(pResult, timestamp2);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetRemoteInterfaceHashAndTimestamp
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT FlushCache()
-void DDUnpack::Unpack_FlushCache(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->FlushCache(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method FlushCache
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void DacSetTargetConsistencyChecks(bool fEnableAsserts)
-void DDUnpack::Unpack_DacSetTargetConsistencyChecks(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- bool fEnableAsserts;
- ReadFromBuffer(pSend, fEnableAsserts);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->DacSetTargetConsistencyChecks(fEnableAsserts); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method DacSetTargetConsistencyChecks
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void Destroy()
-void DDUnpack::Unpack_Destroy(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->Destroy(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method Destroy
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsLeftSideInitialized()
-void DDUnpack::Unpack_IsLeftSideInitialized(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsLeftSideInitialized(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsLeftSideInitialized
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_AppDomain GetAppDomainFromId(ULONG appdomainId)
-void DDUnpack::Unpack_GetAppDomainFromId(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- ULONG appdomainId;
- ReadFromBuffer(pSend, appdomainId);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_AppDomain _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAppDomainFromId(appdomainId); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainFromId
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// ULONG GetAppDomainId(VMPTR_AppDomain vmAppDomain)
-void DDUnpack::Unpack_GetAppDomainId(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- ULONG _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAppDomainId(vmAppDomain); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainId
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_OBJECTHANDLE GetAppDomainObject(VMPTR_AppDomain vmAppDomain)
-void DDUnpack::Unpack_GetAppDomainObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_OBJECTHANDLE _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAppDomainObject(vmAppDomain); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsDefaultDomain(VMPTR_AppDomain vmAppDomain)
-void DDUnpack::Unpack_IsDefaultDomain(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsDefaultDomain(vmAppDomain); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsDefaultDomain
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetAssemblyFromDomainAssembly(VMPTR_DomainAssembly vmDomainAssembly, VMPTR_Assembly * vmAssembly)
-void DDUnpack::Unpack_GetAssemblyFromDomainAssembly(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainAssembly vmDomainAssembly;
- ReadFromBuffer(pSend, vmDomainAssembly);
- VMPTR_Assembly _vmAssembly; // storage
- VMPTR_Assembly * vmAssembly = &_vmAssembly;
- // vmAssembly does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetAssemblyFromDomainAssembly(vmDomainAssembly, vmAssembly); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, vmAssembly);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAssemblyFromDomainAssembly
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsAssemblyFullyTrusted(VMPTR_DomainAssembly vmDomainAssembly)
-void DDUnpack::Unpack_IsAssemblyFullyTrusted(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainAssembly vmDomainAssembly;
- ReadFromBuffer(pSend, vmDomainAssembly);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsAssemblyFullyTrusted(vmDomainAssembly); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsAssemblyFullyTrusted
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetAppDomainFullName(VMPTR_AppDomain vmAppDomain, IStringHolder * pStrName)
-void DDUnpack::Unpack_GetAppDomainFullName(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- StringCopyHolder _pStrName; // storage
- StringCopyHolder* pStrName = &_pStrName;
- // pStrName does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetAppDomainFullName(vmAppDomain, pStrName); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pStrName);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainFullName
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetModuleSimpleName(VMPTR_Module vmModule, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetModuleSimpleName(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetModuleSimpleName(vmModule, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetModuleSimpleName
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL GetAssemblyPath(VMPTR_Assembly vmAssembly, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetAssemblyPath(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Assembly vmAssembly;
- ReadFromBuffer(pSend, vmAssembly);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAssemblyPath(vmAssembly, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAssemblyPath
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void ResolveTypeReference(const TypeRefData * pTypeRefInfo, TypeRefData * pTargetRefInfo)
-void DDUnpack::Unpack_ResolveTypeReference(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- TypeRefData _pTypeRefInfo; // storage
- const TypeRefData * pTypeRefInfo = &_pTypeRefInfo;
- ReadFromBuffer(pSend, &_pTypeRefInfo); // serialize to storage
- TypeRefData _pTargetRefInfo; // storage
- TypeRefData * pTargetRefInfo = &_pTargetRefInfo;
- ReadFromBuffer(pSend, &_pTargetRefInfo); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->ResolveTypeReference(pTypeRefInfo, pTargetRefInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTargetRefInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method ResolveTypeReference
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL GetModulePath(VMPTR_Module vmModule, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetModulePath(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetModulePath(vmModule, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetModulePath
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL GetModuleNGenPath(VMPTR_Module vmModule, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetModuleNGenPath(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetModuleNGenPath(vmModule, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetModuleNGenPath
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetMetadata(VMPTR_Module vmModule, TargetBuffer * pTargetBuffer)
-void DDUnpack::Unpack_GetMetadata(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- TargetBuffer _pTargetBuffer; // storage
- TargetBuffer * pTargetBuffer = &_pTargetBuffer;
- // pTargetBuffer does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetMetadata(vmModule, pTargetBuffer); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTargetBuffer);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetMetadata
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetSymbolsBuffer(VMPTR_Module vmModule, TargetBuffer * pTargetBuffer, IDacDbiInterface::SymbolFormat * pSymbolFormat)
-void DDUnpack::Unpack_GetSymbolsBuffer(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- TargetBuffer _pTargetBuffer; // storage
- TargetBuffer * pTargetBuffer = &_pTargetBuffer;
- // pTargetBuffer does not need to be copied on input
- IDacDbiInterface::SymbolFormat _pSymbolFormat; // storage
- IDacDbiInterface::SymbolFormat * pSymbolFormat = &_pSymbolFormat;
- // pSymbolFormat does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetSymbolsBuffer(vmModule, pTargetBuffer, pSymbolFormat); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTargetBuffer);
- WriteToBuffer(pResult, pSymbolFormat);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetSymbolsBuffer
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetModuleData(VMPTR_Module vmModule, ModuleInfo * pData)
-void DDUnpack::Unpack_GetModuleData(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- ModuleInfo _pData; // storage
- ModuleInfo * pData = &_pData;
- // pData does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetModuleData(vmModule, pData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetModuleData
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetDomainFileData(VMPTR_DomainFile vmDomainFile, DomainFileInfo * pData)
-void DDUnpack::Unpack_GetDomainFileData(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- DomainFileInfo _pData; // storage
- DomainFileInfo * pData = &_pData;
- // pData does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetDomainFileData(vmDomainFile, pData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetDomainFileData
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetModuleForDomainFile(VMPTR_DomainFile vmDomainFile, VMPTR_Module * pModule)
-void DDUnpack::Unpack_GetModuleForDomainFile(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- VMPTR_Module _pModule; // storage
- VMPTR_Module * pModule = &_pModule;
- // pModule does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetModuleForDomainFile(vmDomainFile, pModule); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pModule);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetModuleForDomainFile
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// IDacDbiInterface::AddressType GetAddressType(CORDB_ADDRESS address)
-void DDUnpack::Unpack_GetAddressType(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS address;
- ReadFromBuffer(pSend, address);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- IDacDbiInterface::AddressType _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAddressType(address); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAddressType
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsTransitionStub(CORDB_ADDRESS address)
-void DDUnpack::Unpack_IsTransitionStub(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS address;
- ReadFromBuffer(pSend, address);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsTransitionStub(address); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsTransitionStub
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetCompilerFlags(VMPTR_DomainFile vmDomainFile, BOOL * pfAllowJITOpts, BOOL * pfEnableEnC)
-void DDUnpack::Unpack_GetCompilerFlags(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- BOOL _pfAllowJITOpts; // storage
- BOOL * pfAllowJITOpts = &_pfAllowJITOpts;
- // pfAllowJITOpts does not need to be copied on input
- BOOL _pfEnableEnC; // storage
- BOOL * pfEnableEnC = &_pfEnableEnC;
- // pfEnableEnC does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetCompilerFlags(vmDomainFile, pfAllowJITOpts, pfEnableEnC); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pfAllowJITOpts);
- WriteToBuffer(pResult, pfEnableEnC);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCompilerFlags
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT SetCompilerFlags(VMPTR_DomainFile vmDomainFile, BOOL fAllowJitOpts, BOOL fEnableEnC)
-void DDUnpack::Unpack_SetCompilerFlags(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- BOOL fAllowJitOpts;
- ReadFromBuffer(pSend, fAllowJitOpts);
- BOOL fEnableEnC;
- ReadFromBuffer(pSend, fEnableEnC);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->SetCompilerFlags(vmDomainFile, fAllowJitOpts, fEnableEnC); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method SetCompilerFlags
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateAppDomains(IDacDbiInterface::FP_APPDOMAIN_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateAppDomains(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateAppDomains(GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateAppDomains
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateAssembliesInAppDomain(VMPTR_AppDomain vmAppDomain, IDacDbiInterface::FP_ASSEMBLY_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateAssembliesInAppDomain(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateAssembliesInAppDomain(vmAppDomain, GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateAssembliesInAppDomain
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateModulesInAssembly(VMPTR_DomainAssembly vmAssembly, IDacDbiInterface::FP_MODULE_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateModulesInAssembly(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainAssembly vmAssembly;
- ReadFromBuffer(pSend, vmAssembly);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateModulesInAssembly(vmAssembly, GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateModulesInAssembly
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void RequestSyncAtEvent()
-void DDUnpack::Unpack_RequestSyncAtEvent(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->RequestSyncAtEvent(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method RequestSyncAtEvent
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void MarkDebuggerAttachPending()
-void DDUnpack::Unpack_MarkDebuggerAttachPending(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->MarkDebuggerAttachPending(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method MarkDebuggerAttachPending
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void MarkDebuggerAttached(BOOL fAttached)
-void DDUnpack::Unpack_MarkDebuggerAttached(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- BOOL fAttached;
- ReadFromBuffer(pSend, fAttached);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->MarkDebuggerAttached(fAttached); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method MarkDebuggerAttached
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void Hijack(VMPTR_Thread vmThread, ULONG32 dwThreadId, const EXCEPTION_RECORD * pRecord, T_CONTEXT * pOriginalContext, ULONG32 cbSizeContext, EHijackReason::EHijackReason reason, void * pUserData, CORDB_ADDRESS * pRemoteContextAddr)
-void DDUnpack::Unpack_Hijack(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- // Callbacks not yet implemented
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method Hijack
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateConnections(IDacDbiInterface::FP_CONNECTION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateConnections(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- // Callbacks not yet implemented
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateConnections
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateThreads(IDacDbiInterface::FP_THREAD_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateThreads(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateThreads(GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateThreads
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool IsThreadMarkedDead(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_IsThreadMarkedDead(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsThreadMarkedDead(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsThreadMarkedDead
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HANDLE GetThreadHandle(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetThreadHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- // Callbacks not yet implemented
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetThreadHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_OBJECTHANDLE GetThreadObject(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetThreadObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_OBJECTHANDLE _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetThreadObject(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetThreadObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void SetDebugState(VMPTR_Thread vmThread, CorDebugThreadState debugState)
-void DDUnpack::Unpack_SetDebugState(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- CorDebugThreadState debugState;
- ReadFromBuffer(pSend, debugState);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->SetDebugState(vmThread, debugState); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method SetDebugState
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL HasUnhandledException(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_HasUnhandledException(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->HasUnhandledException(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method HasUnhandledException
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CorDebugUserState GetUserState(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetUserState(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CorDebugUserState _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetUserState(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetUserState
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CONNID GetConnectionID(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetConnectionID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CONNID _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetConnectionID(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetConnectionID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// TASKID GetTaskID(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetTaskID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- TASKID _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetTaskID(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetTaskID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// DWORD TryGetVolatileOSThreadID(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_TryGetVolatileOSThreadID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- DWORD _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->TryGetVolatileOSThreadID(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method TryGetVolatileOSThreadID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// DWORD GetUniqueThreadID(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetUniqueThreadID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- DWORD _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetUniqueThreadID(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetUniqueThreadID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_OBJECTHANDLE GetCurrentException(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetCurrentException(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_OBJECTHANDLE _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetCurrentException(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCurrentException
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_OBJECTHANDLE GetCurrentCustomDebuggerNotification(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetCurrentCustomDebuggerNotification(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_OBJECTHANDLE _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetCurrentCustomDebuggerNotification(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCurrentCustomDebuggerNotification
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_AppDomain GetCurrentAppDomain(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetCurrentAppDomain(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_AppDomain _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetCurrentAppDomain(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCurrentAppDomain
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_DomainAssembly ResolveAssembly(VMPTR_DomainFile vmScope, mdToken tkAssemblyRef)
-void DDUnpack::Unpack_ResolveAssembly(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmScope;
- ReadFromBuffer(pSend, vmScope);
- mdToken tkAssemblyRef;
- ReadFromBuffer(pSend, tkAssemblyRef);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_DomainAssembly _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->ResolveAssembly(vmScope, tkAssemblyRef); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method ResolveAssembly
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetNativeCodeSequencePointsAndVarInfo(VMPTR_MethodDesc vmMethodDesc, CORDB_ADDRESS startAddress, BOOL fCodeAvailabe, NativeVarData * pNativeVarData, SequencePoints * pSequencePoints)
-void DDUnpack::Unpack_GetNativeCodeSequencePointsAndVarInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_MethodDesc vmMethodDesc;
- ReadFromBuffer(pSend, vmMethodDesc);
- CORDB_ADDRESS startAddress;
- ReadFromBuffer(pSend, startAddress);
- BOOL fCodeAvailabe;
- ReadFromBuffer(pSend, fCodeAvailabe);
- NativeVarData _pNativeVarData; // storage
- NativeVarData * pNativeVarData = &_pNativeVarData;
- // pNativeVarData does not need to be copied on input
- SequencePoints _pSequencePoints; // storage
- SequencePoints * pSequencePoints = &_pSequencePoints;
- // pSequencePoints does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetNativeCodeSequencePointsAndVarInfo(vmMethodDesc, startAddress, fCodeAvailabe, pNativeVarData, pSequencePoints); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pNativeVarData);
- WriteToBuffer(pResult, pSequencePoints);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetNativeCodeSequencePointsAndVarInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_CONTEXT GetManagedStoppedContext(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetManagedStoppedContext(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_CONTEXT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetManagedStoppedContext(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetManagedStoppedContext
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void CreateStackWalk(VMPTR_Thread vmThread, DT_CONTEXT * pInternalContextBuffer, StackWalkHandle * ppSFIHandle)
-void DDUnpack::Unpack_CreateStackWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- DT_CONTEXT _pInternalContextBuffer; // storage
- DT_CONTEXT * pInternalContextBuffer = &_pInternalContextBuffer;
- ReadFromBuffer(pSend, &_pInternalContextBuffer); // serialize to storage
- StackWalkHandle _ppSFIHandle; // storage
- StackWalkHandle * ppSFIHandle = &_ppSFIHandle;
- // ppSFIHandle does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->CreateStackWalk(vmThread, pInternalContextBuffer, ppSFIHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pInternalContextBuffer);
- WriteToBuffer(pResult, ppSFIHandle);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method CreateStackWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void DeleteStackWalk(StackWalkHandle ppSFIHandle)
-void DDUnpack::Unpack_DeleteStackWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- StackWalkHandle ppSFIHandle;
- ReadFromBuffer(pSend, ppSFIHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->DeleteStackWalk(ppSFIHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method DeleteStackWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetStackWalkCurrentContext(StackWalkHandle pSFIHandle, DT_CONTEXT * pContext)
-void DDUnpack::Unpack_GetStackWalkCurrentContext(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- StackWalkHandle pSFIHandle;
- ReadFromBuffer(pSend, pSFIHandle);
- DT_CONTEXT _pContext; // storage
- DT_CONTEXT * pContext = &_pContext;
- ReadFromBuffer(pSend, &_pContext); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetStackWalkCurrentContext(pSFIHandle, pContext); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pContext);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetStackWalkCurrentContext
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void SetStackWalkCurrentContext(VMPTR_Thread vmThread, StackWalkHandle pSFIHandle, CorDebugSetContextFlag flag, DT_CONTEXT * pContext)
-void DDUnpack::Unpack_SetStackWalkCurrentContext(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- StackWalkHandle pSFIHandle;
- ReadFromBuffer(pSend, pSFIHandle);
- CorDebugSetContextFlag flag;
- ReadFromBuffer(pSend, flag);
- DT_CONTEXT _pContext; // storage
- DT_CONTEXT * pContext = &_pContext;
- ReadFromBuffer(pSend, &_pContext); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->SetStackWalkCurrentContext(vmThread, pSFIHandle, flag, pContext); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pContext);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method SetStackWalkCurrentContext
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL UnwindStackWalkFrame(StackWalkHandle pSFIHandle)
-void DDUnpack::Unpack_UnwindStackWalkFrame(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- StackWalkHandle pSFIHandle;
- ReadFromBuffer(pSend, pSFIHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->UnwindStackWalkFrame(pSFIHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method UnwindStackWalkFrame
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT CheckContext(VMPTR_Thread vmThread, const DT_CONTEXT * pContext)
-void DDUnpack::Unpack_CheckContext(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- DT_CONTEXT _pContext; // storage
- const DT_CONTEXT * pContext = &_pContext;
- ReadFromBuffer(pSend, &_pContext); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->CheckContext(vmThread, pContext); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method CheckContext
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// IDacDbiInterface::FrameType GetStackWalkCurrentFrameInfo(StackWalkHandle pSFIHandle, DebuggerIPCE_STRData * pFrameData)
-void DDUnpack::Unpack_GetStackWalkCurrentFrameInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- StackWalkHandle pSFIHandle;
- ReadFromBuffer(pSend, pSFIHandle);
- DebuggerIPCE_STRData _pFrameData; // storage
- DebuggerIPCE_STRData * pFrameData = &_pFrameData;
- ReadFromBuffer(pSend, &_pFrameData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- IDacDbiInterface::FrameType _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetStackWalkCurrentFrameInfo(pSFIHandle, pFrameData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pFrameData);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetStackWalkCurrentFrameInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// ULONG32 GetCountOfInternalFrames(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_GetCountOfInternalFrames(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- ULONG32 _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetCountOfInternalFrames(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCountOfInternalFrames
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateInternalFrames(VMPTR_Thread vmThread, IDacDbiInterface::FP_INTERNAL_FRAME_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateInternalFrames(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateInternalFrames(vmThread, GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateInternalFrames
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsMatchingParentFrame(FramePointer fpToCheck, FramePointer fpParent)
-void DDUnpack::Unpack_IsMatchingParentFrame(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- FramePointer fpToCheck;
- ReadFromBuffer(pSend, fpToCheck);
- FramePointer fpParent;
- ReadFromBuffer(pSend, fpParent);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsMatchingParentFrame(fpToCheck, fpParent); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsMatchingParentFrame
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// ULONG32 GetStackParameterSize(CORDB_ADDRESS controlPC)
-void DDUnpack::Unpack_GetStackParameterSize(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS controlPC;
- ReadFromBuffer(pSend, controlPC);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- ULONG32 _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetStackParameterSize(controlPC); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetStackParameterSize
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// FramePointer GetFramePointer(StackWalkHandle pSFIHandle)
-void DDUnpack::Unpack_GetFramePointer(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- StackWalkHandle pSFIHandle;
- ReadFromBuffer(pSend, pSFIHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- FramePointer _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetFramePointer(pSFIHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetFramePointer
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsLeafFrame(VMPTR_Thread vmThread, const DT_CONTEXT * pContext)
-void DDUnpack::Unpack_IsLeafFrame(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- DT_CONTEXT _pContext; // storage
- const DT_CONTEXT * pContext = &_pContext;
- ReadFromBuffer(pSend, &_pContext); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsLeafFrame(vmThread, pContext); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsLeafFrame
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetContext(VMPTR_Thread vmThread, DT_CONTEXT * pContextBuffer)
-void DDUnpack::Unpack_GetContext(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- DT_CONTEXT _pContextBuffer; // storage
- DT_CONTEXT * pContextBuffer = &_pContextBuffer;
- ReadFromBuffer(pSend, &_pContextBuffer); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetContext(vmThread, pContextBuffer); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pContextBuffer);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetContext
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void ConvertContextToDebuggerRegDisplay(const DT_CONTEXT * pInContext, DebuggerREGDISPLAY * pOutDRD, BOOL fActive)
-void DDUnpack::Unpack_ConvertContextToDebuggerRegDisplay(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DT_CONTEXT _pInContext; // storage
- const DT_CONTEXT * pInContext = &_pInContext;
- ReadFromBuffer(pSend, &_pInContext); // serialize to storage
- DebuggerREGDISPLAY _pOutDRD; // storage
- DebuggerREGDISPLAY * pOutDRD = &_pOutDRD;
- ReadFromBuffer(pSend, &_pOutDRD); // serialize to storage
- BOOL fActive;
- ReadFromBuffer(pSend, fActive);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->ConvertContextToDebuggerRegDisplay(pInContext, pOutDRD, fActive); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pOutDRD);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method ConvertContextToDebuggerRegDisplay
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// IDacDbiInterface::DynamicMethodType IsILStubOrLCGMethod(VMPTR_MethodDesc vmMethodDesc)
-void DDUnpack::Unpack_IsILStubOrLCGMethod(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_MethodDesc vmMethodDesc;
- ReadFromBuffer(pSend, vmMethodDesc);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- IDacDbiInterface::DynamicMethodType _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsILStubOrLCGMethod(vmMethodDesc); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsILStubOrLCGMethod
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// TargetBuffer GetVarArgSig(CORDB_ADDRESS VASigCookieAddr, CORDB_ADDRESS * pArgBase)
-void DDUnpack::Unpack_GetVarArgSig(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS VASigCookieAddr;
- ReadFromBuffer(pSend, VASigCookieAddr);
- CORDB_ADDRESS _pArgBase; // storage
- CORDB_ADDRESS * pArgBase = &_pArgBase;
- // pArgBase does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- TargetBuffer _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetVarArgSig(VASigCookieAddr, pArgBase); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pArgBase);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetVarArgSig
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL RequiresAlign8(VMPTR_TypeHandle thExact)
-void DDUnpack::Unpack_RequiresAlign8(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_TypeHandle thExact;
- ReadFromBuffer(pSend, thExact);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->RequiresAlign8(thExact); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method RequiresAlign8
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// GENERICS_TYPE_TOKEN ResolveExactGenericArgsToken(DWORD dwExactGenericArgsTokenIndex, GENERICS_TYPE_TOKEN rawToken)
-void DDUnpack::Unpack_ResolveExactGenericArgsToken(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DWORD dwExactGenericArgsTokenIndex;
- ReadFromBuffer(pSend, dwExactGenericArgsTokenIndex);
- GENERICS_TYPE_TOKEN rawToken;
- ReadFromBuffer(pSend, rawToken);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- GENERICS_TYPE_TOKEN _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->ResolveExactGenericArgsToken(dwExactGenericArgsTokenIndex, rawToken); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method ResolveExactGenericArgsToken
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetILCodeAndSig(VMPTR_DomainFile vmDomainFile, mdToken functionToken, TargetBuffer * pCodeInfo, mdToken * pLocalSigToken)
-void DDUnpack::Unpack_GetILCodeAndSig(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- mdToken functionToken;
- ReadFromBuffer(pSend, functionToken);
- TargetBuffer _pCodeInfo; // storage
- TargetBuffer * pCodeInfo = &_pCodeInfo;
- // pCodeInfo does not need to be copied on input
- mdToken _pLocalSigToken; // storage
- mdToken * pLocalSigToken = &_pLocalSigToken;
- // pLocalSigToken does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetILCodeAndSig(vmDomainFile, functionToken, pCodeInfo, pLocalSigToken); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pCodeInfo);
- WriteToBuffer(pResult, pLocalSigToken);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetILCodeAndSig
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetNativeCodeInfo(VMPTR_DomainFile vmDomainFile, mdToken functionToken, NativeCodeFunctionData * pCodeInfo)
-void DDUnpack::Unpack_GetNativeCodeInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- mdToken functionToken;
- ReadFromBuffer(pSend, functionToken);
- NativeCodeFunctionData _pCodeInfo; // storage
- NativeCodeFunctionData * pCodeInfo = &_pCodeInfo;
- // pCodeInfo does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetNativeCodeInfo(vmDomainFile, functionToken, pCodeInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pCodeInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetNativeCodeInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetNativeCodeInfoForAddr(VMPTR_MethodDesc vmMethodDesc, CORDB_ADDRESS hotCodeStartAddr, NativeCodeFunctionData * pCodeInfo)
-void DDUnpack::Unpack_GetNativeCodeInfoForAddr(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_MethodDesc vmMethodDesc;
- ReadFromBuffer(pSend, vmMethodDesc);
- CORDB_ADDRESS hotCodeStartAddr;
- ReadFromBuffer(pSend, hotCodeStartAddr);
- NativeCodeFunctionData _pCodeInfo; // storage
- NativeCodeFunctionData * pCodeInfo = &_pCodeInfo;
- ReadFromBuffer(pSend, &_pCodeInfo); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetNativeCodeInfoForAddr(vmMethodDesc, hotCodeStartAddr, pCodeInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pCodeInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetNativeCodeInfoForAddr
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetClassInfo(VMPTR_AppDomain vmAppDomain, VMPTR_Module vmModule, mdTypeDef metadataToken, VMPTR_TypeHandle thExact, VMPTR_TypeHandle thApprox, ClassInfo * pData)
-void DDUnpack::Unpack_GetClassInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- mdTypeDef metadataToken;
- ReadFromBuffer(pSend, metadataToken);
- VMPTR_TypeHandle thExact;
- ReadFromBuffer(pSend, thExact);
- VMPTR_TypeHandle thApprox;
- ReadFromBuffer(pSend, thApprox);
- ClassInfo _pData; // storage
- ClassInfo * pData = &_pData;
- ReadFromBuffer(pSend, &_pData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetClassInfo(vmAppDomain, vmModule, metadataToken, thExact, thApprox, pData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetClassInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetInstantiationFieldInfo(VMPTR_DomainFile vmDomainFile, mdTypeDef metadataToken, VMPTR_TypeHandle vmThExact, VMPTR_TypeHandle vmThApprox, DacDbiArrayList<FieldData> * pFieldList, SIZE_T * pObjectSize)
-void DDUnpack::Unpack_GetInstantiationFieldInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_DomainFile vmDomainFile;
- ReadFromBuffer(pSend, vmDomainFile);
- mdTypeDef metadataToken;
- ReadFromBuffer(pSend, metadataToken);
- VMPTR_TypeHandle vmThExact;
- ReadFromBuffer(pSend, vmThExact);
- VMPTR_TypeHandle vmThApprox;
- ReadFromBuffer(pSend, vmThApprox);
- DacDbiArrayList<FieldData> _pFieldList; // storage
- DacDbiArrayList<FieldData> * pFieldList = &_pFieldList;
- // pFieldList does not need to be copied on input
- SIZE_T _pObjectSize; // storage
- SIZE_T * pObjectSize = &_pObjectSize;
- // pObjectSize does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetInstantiationFieldInfo(vmDomainFile, metadataToken, vmThExact, vmThApprox, pFieldList, pObjectSize); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pFieldList);
- WriteToBuffer(pResult, pObjectSize);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetInstantiationFieldInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void TypeHandleToExpandedTypeInfo(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, VMPTR_TypeHandle vmTypeHandle, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
-void DDUnpack::Unpack_TypeHandleToExpandedTypeInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- AreValueTypesBoxed boxed;
- ReadFromBuffer(pSend, boxed);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- VMPTR_TypeHandle vmTypeHandle;
- ReadFromBuffer(pSend, vmTypeHandle);
- DebuggerIPCE_ExpandedTypeData _pTypeInfo; // storage
- DebuggerIPCE_ExpandedTypeData * pTypeInfo = &_pTypeInfo;
- ReadFromBuffer(pSend, &_pTypeInfo); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->TypeHandleToExpandedTypeInfo(boxed, vmAppDomain, vmTypeHandle, pTypeInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTypeInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method TypeHandleToExpandedTypeInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetObjectExpandedTypeInfo(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, CORDB_ADDRESS addr, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
-void DDUnpack::Unpack_GetObjectExpandedTypeInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- AreValueTypesBoxed boxed;
- ReadFromBuffer(pSend, boxed);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- CORDB_ADDRESS addr;
- ReadFromBuffer(pSend, addr);
- DebuggerIPCE_ExpandedTypeData _pTypeInfo; // storage
- DebuggerIPCE_ExpandedTypeData * pTypeInfo = &_pTypeInfo;
- // pTypeInfo does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetObjectExpandedTypeInfo(boxed, vmAppDomain, addr, pTypeInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTypeInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObjectExpandedTypeInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetObjectExpandedTypeInfoFromID(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, COR_TYPEID id, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
-void DDUnpack::Unpack_GetObjectExpandedTypeInfoFromID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- AreValueTypesBoxed boxed;
- ReadFromBuffer(pSend, boxed);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- COR_TYPEID id;
- ReadFromBuffer(pSend, id);
- DebuggerIPCE_ExpandedTypeData _pTypeInfo; // storage
- DebuggerIPCE_ExpandedTypeData * pTypeInfo = &_pTypeInfo;
- // pTypeInfo does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetObjectExpandedTypeInfoFromID(boxed, vmAppDomain, id, pTypeInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTypeInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObjectExpandedTypeInfoFromID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_TypeHandle GetApproxTypeHandle(TypeInfoList * pTypeData)
-void DDUnpack::Unpack_GetApproxTypeHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- TypeInfoList _pTypeData; // storage
- TypeInfoList * pTypeData = &_pTypeData;
- ReadFromBuffer(pSend, &_pTypeData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_TypeHandle _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetApproxTypeHandle(pTypeData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTypeData);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetApproxTypeHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetExactTypeHandle(DebuggerIPCE_ExpandedTypeData * pTypeData, ArgInfoList * pArgInfo, VMPTR_TypeHandle & vmTypeHandle)
-void DDUnpack::Unpack_GetExactTypeHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DebuggerIPCE_ExpandedTypeData _pTypeData; // storage
- DebuggerIPCE_ExpandedTypeData * pTypeData = &_pTypeData;
- ReadFromBuffer(pSend, &_pTypeData); // serialize to storage
- ArgInfoList _pArgInfo; // storage
- ArgInfoList * pArgInfo = &_pArgInfo;
- ReadFromBuffer(pSend, &_pArgInfo); // serialize to storage
- VMPTR_TypeHandle vmTypeHandle;
- ReadFromBuffer(pSend, vmTypeHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetExactTypeHandle(pTypeData, pArgInfo, vmTypeHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pTypeData);
- WriteToBuffer(pResult, pArgInfo);
- WriteToBuffer(pResult, vmTypeHandle);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetExactTypeHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetMethodDescParams(VMPTR_AppDomain vmAppDomain, VMPTR_MethodDesc vmMethodDesc, GENERICS_TYPE_TOKEN genericsToken, UINT32 * pcGenericClassTypeParams, TypeParamsList * pGenericTypeParams)
-void DDUnpack::Unpack_GetMethodDescParams(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- VMPTR_MethodDesc vmMethodDesc;
- ReadFromBuffer(pSend, vmMethodDesc);
- GENERICS_TYPE_TOKEN genericsToken;
- ReadFromBuffer(pSend, genericsToken);
- UINT32 _pcGenericClassTypeParams; // storage
- UINT32 * pcGenericClassTypeParams = &_pcGenericClassTypeParams;
- // pcGenericClassTypeParams does not need to be copied on input
- TypeParamsList _pGenericTypeParams; // storage
- TypeParamsList * pGenericTypeParams = &_pGenericTypeParams;
- // pGenericTypeParams does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetMethodDescParams(vmAppDomain, vmMethodDesc, genericsToken, pcGenericClassTypeParams, pGenericTypeParams); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pcGenericClassTypeParams);
- WriteToBuffer(pResult, pGenericTypeParams);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetMethodDescParams
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CORDB_ADDRESS GetThreadOrContextStaticAddress(VMPTR_FieldDesc vmField, VMPTR_Thread vmRuntimeThread)
-void DDUnpack::Unpack_GetThreadOrContextStaticAddress(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_FieldDesc vmField;
- ReadFromBuffer(pSend, vmField);
- VMPTR_Thread vmRuntimeThread;
- ReadFromBuffer(pSend, vmRuntimeThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CORDB_ADDRESS _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetThreadOrContextStaticAddress(vmField, vmRuntimeThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetThreadOrContextStaticAddress
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CORDB_ADDRESS GetCollectibleTypeStaticAddress(VMPTR_FieldDesc vmField, VMPTR_AppDomain vmAppDomain)
-void DDUnpack::Unpack_GetCollectibleTypeStaticAddress(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_FieldDesc vmField;
- ReadFromBuffer(pSend, vmField);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CORDB_ADDRESS _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetCollectibleTypeStaticAddress(vmField, vmAppDomain); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCollectibleTypeStaticAddress
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetEnCHangingFieldInfo(const EnCHangingFieldInfo * pEnCFieldInfo, FieldData * pFieldData, BOOL * pfStatic)
-void DDUnpack::Unpack_GetEnCHangingFieldInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- EnCHangingFieldInfo _pEnCFieldInfo; // storage
- const EnCHangingFieldInfo * pEnCFieldInfo = &_pEnCFieldInfo;
- ReadFromBuffer(pSend, &_pEnCFieldInfo); // serialize to storage
- FieldData _pFieldData; // storage
- FieldData * pFieldData = &_pFieldData;
- // pFieldData does not need to be copied on input
- BOOL _pfStatic; // storage
- BOOL * pfStatic = &_pfStatic;
- // pfStatic does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetEnCHangingFieldInfo(pEnCFieldInfo, pFieldData, pfStatic); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pFieldData);
- WriteToBuffer(pResult, pfStatic);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetEnCHangingFieldInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetTypeHandleParams(VMPTR_AppDomain vmAppDomain, VMPTR_TypeHandle vmTypeHandle, TypeParamsList * pParams)
-void DDUnpack::Unpack_GetTypeHandleParams(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- VMPTR_TypeHandle vmTypeHandle;
- ReadFromBuffer(pSend, vmTypeHandle);
- TypeParamsList _pParams; // storage
- TypeParamsList * pParams = &_pParams;
- // pParams does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetTypeHandleParams(vmAppDomain, vmTypeHandle, pParams); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pParams);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetTypeHandleParams
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetSimpleType(VMPTR_AppDomain vmAppDomain, CorElementType simpleType, mdTypeDef * pMetadataToken, VMPTR_Module * pVmModule, VMPTR_DomainFile * pVmDomainFile)
-void DDUnpack::Unpack_GetSimpleType(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- CorElementType simpleType;
- ReadFromBuffer(pSend, simpleType);
- mdTypeDef _pMetadataToken; // storage
- mdTypeDef * pMetadataToken = &_pMetadataToken;
- // pMetadataToken does not need to be copied on input
- VMPTR_Module _pVmModule; // storage
- VMPTR_Module * pVmModule = &_pVmModule;
- // pVmModule does not need to be copied on input
- VMPTR_DomainFile _pVmDomainFile; // storage
- VMPTR_DomainFile * pVmDomainFile = &_pVmDomainFile;
- // pVmDomainFile does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetSimpleType(vmAppDomain, simpleType, pMetadataToken, pVmModule, pVmDomainFile); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pMetadataToken);
- WriteToBuffer(pResult, pVmModule);
- WriteToBuffer(pResult, pVmDomainFile);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetSimpleType
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsExceptionObject(VMPTR_Object vmObject)
-void DDUnpack::Unpack_IsExceptionObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsExceptionObject(vmObject); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsExceptionObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetStackFramesFromException(VMPTR_Object vmObject, DacDbiArrayList<DacExceptionCallStackData> & dacStackFrames)
-void DDUnpack::Unpack_GetStackFramesFromException(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- DacDbiArrayList<DacExceptionCallStackData> dacStackFrames;
- ReadFromBuffer(pSend, dacStackFrames);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetStackFramesFromException(vmObject, dacStackFrames); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, dacStackFrames);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetStackFramesFromException
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsRcw(VMPTR_Object vmObject)
-void DDUnpack::Unpack_IsRcw(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsRcw(vmObject); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsRcw
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetRcwCachedInterfaceTypes(VMPTR_Object vmObject, VMPTR_AppDomain vmAppDomain, BOOL bIInspectableOnly, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pDacInterfaces)
-void DDUnpack::Unpack_GetRcwCachedInterfaceTypes(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- BOOL bIInspectableOnly;
- ReadFromBuffer(pSend, bIInspectableOnly);
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> _pDacInterfaces; // storage
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pDacInterfaces = &_pDacInterfaces;
- // pDacInterfaces does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetRcwCachedInterfaceTypes(vmObject, vmAppDomain, bIInspectableOnly, pDacInterfaces); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pDacInterfaces);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetRcwCachedInterfaceTypes
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetRcwCachedInterfacePointers(VMPTR_Object vmObject, BOOL bIInspectableOnly, DacDbiArrayList<CORDB_ADDRESS> * pDacItfPtrs)
-void DDUnpack::Unpack_GetRcwCachedInterfacePointers(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- BOOL bIInspectableOnly;
- ReadFromBuffer(pSend, bIInspectableOnly);
- DacDbiArrayList<CORDB_ADDRESS> _pDacItfPtrs; // storage
- DacDbiArrayList<CORDB_ADDRESS> * pDacItfPtrs = &_pDacItfPtrs;
- // pDacItfPtrs does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetRcwCachedInterfacePointers(vmObject, bIInspectableOnly, pDacItfPtrs); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pDacItfPtrs);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetRcwCachedInterfacePointers
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetCachedWinRTTypesForIIDs(VMPTR_AppDomain vmAppDomain, DacDbiArrayList<GUID> & iids, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes)
-void DDUnpack::Unpack_GetCachedWinRTTypesForIIDs(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- DacDbiArrayList<GUID> iids;
- ReadFromBuffer(pSend, iids);
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> _pTypes; // storage
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes = &_pTypes;
- // pTypes does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetCachedWinRTTypesForIIDs(vmAppDomain, iids, pTypes); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, iids);
- WriteToBuffer(pResult, pTypes);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCachedWinRTTypesForIIDs
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetCachedWinRTTypes(VMPTR_AppDomain vmAppDomain, DacDbiArrayList<GUID> * piids, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes)
-void DDUnpack::Unpack_GetCachedWinRTTypes(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- DacDbiArrayList<GUID> _piids; // storage
- DacDbiArrayList<GUID> * piids = &_piids;
- // piids does not need to be copied on input
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> _pTypes; // storage
- DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes = &_pTypes;
- // pTypes does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetCachedWinRTTypes(vmAppDomain, piids, pTypes); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, piids);
- WriteToBuffer(pResult, pTypes);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetCachedWinRTTypes
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetTypedByRefInfo(CORDB_ADDRESS pTypedByRef, VMPTR_AppDomain vmAppDomain, DebuggerIPCE_ObjectData * pObjectData)
-void DDUnpack::Unpack_GetTypedByRefInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS pTypedByRef;
- ReadFromBuffer(pSend, pTypedByRef);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- DebuggerIPCE_ObjectData _pObjectData; // storage
- DebuggerIPCE_ObjectData * pObjectData = &_pObjectData;
- ReadFromBuffer(pSend, &_pObjectData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetTypedByRefInfo(pTypedByRef, vmAppDomain, pObjectData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pObjectData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetTypedByRefInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetStringData(CORDB_ADDRESS objectAddress, DebuggerIPCE_ObjectData * pObjectData)
-void DDUnpack::Unpack_GetStringData(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS objectAddress;
- ReadFromBuffer(pSend, objectAddress);
- DebuggerIPCE_ObjectData _pObjectData; // storage
- DebuggerIPCE_ObjectData * pObjectData = &_pObjectData;
- ReadFromBuffer(pSend, &_pObjectData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetStringData(objectAddress, pObjectData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pObjectData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetStringData
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetArrayData(CORDB_ADDRESS objectAddress, DebuggerIPCE_ObjectData * pObjectData)
-void DDUnpack::Unpack_GetArrayData(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS objectAddress;
- ReadFromBuffer(pSend, objectAddress);
- DebuggerIPCE_ObjectData _pObjectData; // storage
- DebuggerIPCE_ObjectData * pObjectData = &_pObjectData;
- ReadFromBuffer(pSend, &_pObjectData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetArrayData(objectAddress, pObjectData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pObjectData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetArrayData
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetBasicObjectInfo(CORDB_ADDRESS objectAddress, CorElementType type, VMPTR_AppDomain vmAppDomain, DebuggerIPCE_ObjectData * pObjectData)
-void DDUnpack::Unpack_GetBasicObjectInfo(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS objectAddress;
- ReadFromBuffer(pSend, objectAddress);
- CorElementType type;
- ReadFromBuffer(pSend, type);
- VMPTR_AppDomain vmAppDomain;
- ReadFromBuffer(pSend, vmAppDomain);
- DebuggerIPCE_ObjectData _pObjectData; // storage
- DebuggerIPCE_ObjectData * pObjectData = &_pObjectData;
- ReadFromBuffer(pSend, &_pObjectData); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetBasicObjectInfo(objectAddress, type, vmAppDomain, pObjectData); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pObjectData);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetBasicObjectInfo
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void TestCrst(VMPTR_Crst vmCrst)
-void DDUnpack::Unpack_TestCrst(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Crst vmCrst;
- ReadFromBuffer(pSend, vmCrst);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->TestCrst(vmCrst); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method TestCrst
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void TestRWLock(VMPTR_SimpleRWLock vmRWLock)
-void DDUnpack::Unpack_TestRWLock(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_SimpleRWLock vmRWLock;
- ReadFromBuffer(pSend, vmRWLock);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->TestRWLock(vmRWLock); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method TestRWLock
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CORDB_ADDRESS GetDebuggerControlBlockAddress()
-void DDUnpack::Unpack_GetDebuggerControlBlockAddress(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CORDB_ADDRESS _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetDebuggerControlBlockAddress(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetDebuggerControlBlockAddress
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_Object GetObjectFromRefPtr(CORDB_ADDRESS ptr)
-void DDUnpack::Unpack_GetObjectFromRefPtr(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS ptr;
- ReadFromBuffer(pSend, ptr);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_Object _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetObjectFromRefPtr(ptr); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObjectFromRefPtr
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_Object GetObject(CORDB_ADDRESS ptr)
-void DDUnpack::Unpack_GetObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS ptr;
- ReadFromBuffer(pSend, ptr);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_Object _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetObject(ptr); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT EnableNGENPolicy(CorDebugNGENPolicy ePolicy)
-void DDUnpack::Unpack_EnableNGENPolicy(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CorDebugNGENPolicy ePolicy;
- ReadFromBuffer(pSend, ePolicy);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->EnableNGENPolicy(ePolicy); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnableNGENPolicy
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// VMPTR_OBJECTHANDLE GetVmObjectHandle(CORDB_ADDRESS handleAddress)
-void DDUnpack::Unpack_GetVmObjectHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS handleAddress;
- ReadFromBuffer(pSend, handleAddress);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- VMPTR_OBJECTHANDLE _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetVmObjectHandle(handleAddress); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetVmObjectHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// BOOL IsVmObjectHandleValid(VMPTR_OBJECTHANDLE vmHandle)
-void DDUnpack::Unpack_IsVmObjectHandleValid(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_OBJECTHANDLE vmHandle;
- ReadFromBuffer(pSend, vmHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- BOOL _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsVmObjectHandleValid(vmHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsVmObjectHandleValid
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT IsWinRTModule(VMPTR_Module vmModule, BOOL & isWinRT)
-void DDUnpack::Unpack_IsWinRTModule(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Module vmModule;
- ReadFromBuffer(pSend, vmModule);
- BOOL isWinRT;
- ReadFromBuffer(pSend, isWinRT);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsWinRTModule(vmModule, isWinRT); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, isWinRT);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsWinRTModule
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// ULONG GetAppDomainIdFromVmObjectHandle(VMPTR_OBJECTHANDLE vmHandle)
-void DDUnpack::Unpack_GetAppDomainIdFromVmObjectHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_OBJECTHANDLE vmHandle;
- ReadFromBuffer(pSend, vmHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- ULONG _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAppDomainIdFromVmObjectHandle(vmHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainIdFromVmObjectHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CORDB_ADDRESS GetHandleAddressFromVmHandle(VMPTR_OBJECTHANDLE vmHandle)
-void DDUnpack::Unpack_GetHandleAddressFromVmHandle(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_OBJECTHANDLE vmHandle;
- ReadFromBuffer(pSend, vmHandle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CORDB_ADDRESS _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetHandleAddressFromVmHandle(vmHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetHandleAddressFromVmHandle
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// TargetBuffer GetObjectContents(VMPTR_Object obj)
-void DDUnpack::Unpack_GetObjectContents(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object obj;
- ReadFromBuffer(pSend, obj);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- TargetBuffer _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetObjectContents(obj); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObjectContents
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateBlockingObjects(VMPTR_Thread vmThread, IDacDbiInterface::FP_BLOCKINGOBJECT_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateBlockingObjects(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateBlockingObjects(vmThread, GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateBlockingObjects
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// MonitorLockInfo GetThreadOwningMonitorLock(VMPTR_Object vmObject)
-void DDUnpack::Unpack_GetThreadOwningMonitorLock(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- MonitorLockInfo _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetThreadOwningMonitorLock(vmObject); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetThreadOwningMonitorLock
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void EnumerateMonitorEventWaitList(VMPTR_Object vmObject, IDacDbiInterface::FP_THREAD_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
-void DDUnpack::Unpack_EnumerateMonitorEventWaitList(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Object vmObject;
- ReadFromBuffer(pSend, vmObject);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- // Extra stuff for callback handlers
- m_pReal->EnumerateMonitorEventWaitList(vmObject, GeneralEnumerationCallback, pResult);
-
- }
- EX_CATCH_HRESULT(hr);
-
- // Sentinel for callback list
- DWORD dw = 2; // Stop
- WriteToBuffer(pResult, dw);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method EnumerateMonitorEventWaitList
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// CLR_DEBUGGING_PROCESS_FLAGS GetAttachStateFlags()
-void DDUnpack::Unpack_GetAttachStateFlags(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- CLR_DEBUGGING_PROCESS_FLAGS _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAttachStateFlags(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAttachStateFlags
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool GetMetaDataFileInfoFromPEFile(VMPTR_PEFile vmPEFile, DWORD & dwTimeStamp, DWORD & dwImageSize, bool & isNGEN, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetMetaDataFileInfoFromPEFile(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_PEFile vmPEFile;
- ReadFromBuffer(pSend, vmPEFile);
- DWORD dwTimeStamp;
- ReadFromBuffer(pSend, dwTimeStamp);
- DWORD dwImageSize;
- ReadFromBuffer(pSend, dwImageSize);
- bool isNGEN;
- ReadFromBuffer(pSend, isNGEN);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetMetaDataFileInfoFromPEFile(vmPEFile, dwTimeStamp, dwImageSize, isNGEN, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, dwTimeStamp);
- WriteToBuffer(pResult, dwImageSize);
- WriteToBuffer(pResult, isNGEN);
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetMetaDataFileInfoFromPEFile
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool GetILImageInfoFromNgenPEFile(VMPTR_PEFile vmPEFile, DWORD & dwTimeStamp, DWORD & dwSize, IStringHolder * pStrFilename)
-void DDUnpack::Unpack_GetILImageInfoFromNgenPEFile(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_PEFile vmPEFile;
- ReadFromBuffer(pSend, vmPEFile);
- DWORD dwTimeStamp;
- ReadFromBuffer(pSend, dwTimeStamp);
- DWORD dwSize;
- ReadFromBuffer(pSend, dwSize);
- StringCopyHolder _pStrFilename; // storage
- StringCopyHolder* pStrFilename = &_pStrFilename;
- // pStrFilename does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetILImageInfoFromNgenPEFile(vmPEFile, dwTimeStamp, dwSize, pStrFilename); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, dwTimeStamp);
- WriteToBuffer(pResult, dwSize);
- WriteToBuffer(pResult, pStrFilename);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetILImageInfoFromNgenPEFile
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool IsThreadSuspendedOrHijacked(VMPTR_Thread vmThread)
-void DDUnpack::Unpack_IsThreadSuspendedOrHijacked(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- VMPTR_Thread vmThread;
- ReadFromBuffer(pSend, vmThread);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsThreadSuspendedOrHijacked(vmThread); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsThreadSuspendedOrHijacked
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool AreGCStructuresValid()
-void DDUnpack::Unpack_AreGCStructuresValid(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->AreGCStructuresValid(); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method AreGCStructuresValid
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT CreateHeapWalk(HeapWalkHandle * pHandle)
-void DDUnpack::Unpack_CreateHeapWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- HeapWalkHandle _pHandle; // storage
- HeapWalkHandle * pHandle = &_pHandle;
- // pHandle does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->CreateHeapWalk(pHandle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pHandle);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method CreateHeapWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void DeleteHeapWalk(HeapWalkHandle handle)
-void DDUnpack::Unpack_DeleteHeapWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- HeapWalkHandle handle;
- ReadFromBuffer(pSend, handle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->DeleteHeapWalk(handle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method DeleteHeapWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT WalkHeap(HeapWalkHandle handle, ULONG count, COR_HEAPOBJECT * objects, ULONG * pFetched)
-void DDUnpack::Unpack_WalkHeap(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- HeapWalkHandle handle;
- ReadFromBuffer(pSend, handle);
- ULONG count;
- ReadFromBuffer(pSend, count);
- COR_HEAPOBJECT _objects; // storage
- COR_HEAPOBJECT * objects = &_objects;
- // objects does not need to be copied on input
- ULONG _pFetched; // storage
- ULONG * pFetched = &_pFetched;
- // pFetched does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->WalkHeap(handle, count, objects, pFetched); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, objects);
- WriteToBuffer(pResult, pFetched);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method WalkHeap
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetHeapSegments(DacDbiArrayList<COR_SEGMENT> * pSegments)
-void DDUnpack::Unpack_GetHeapSegments(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- DacDbiArrayList<COR_SEGMENT> _pSegments; // storage
- DacDbiArrayList<COR_SEGMENT> * pSegments = &_pSegments;
- // pSegments does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetHeapSegments(pSegments); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pSegments);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetHeapSegments
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool IsValidObject(CORDB_ADDRESS obj)
-void DDUnpack::Unpack_IsValidObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS obj;
- ReadFromBuffer(pSend, obj);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->IsValidObject(obj); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method IsValidObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// bool GetAppDomainForObject(CORDB_ADDRESS obj, VMPTR_AppDomain * pApp, VMPTR_Module * pModule, VMPTR_DomainFile * pDomainFile)
-void DDUnpack::Unpack_GetAppDomainForObject(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS obj;
- ReadFromBuffer(pSend, obj);
- VMPTR_AppDomain _pApp; // storage
- VMPTR_AppDomain * pApp = &_pApp;
- // pApp does not need to be copied on input
- VMPTR_Module _pModule; // storage
- VMPTR_Module * pModule = &_pModule;
- // pModule does not need to be copied on input
- VMPTR_DomainFile _pDomainFile; // storage
- VMPTR_DomainFile * pDomainFile = &_pDomainFile;
- // pDomainFile does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- bool _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetAppDomainForObject(obj, pApp, pModule, pDomainFile); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pApp);
- WriteToBuffer(pResult, pModule);
- WriteToBuffer(pResult, pDomainFile);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetAppDomainForObject
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT CreateRefWalk(RefWalkHandle * pHandle, BOOL walkStacks, BOOL walkFQ, UINT32 handleWalkMask)
-void DDUnpack::Unpack_CreateRefWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- RefWalkHandle _pHandle; // storage
- RefWalkHandle * pHandle = &_pHandle;
- // pHandle does not need to be copied on input
- BOOL walkStacks;
- ReadFromBuffer(pSend, walkStacks);
- BOOL walkFQ;
- ReadFromBuffer(pSend, walkFQ);
- UINT32 handleWalkMask;
- ReadFromBuffer(pSend, handleWalkMask);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->CreateRefWalk(pHandle, walkStacks, walkFQ, handleWalkMask); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pHandle);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method CreateRefWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void DeleteRefWalk(RefWalkHandle handle)
-void DDUnpack::Unpack_DeleteRefWalk(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- RefWalkHandle handle;
- ReadFromBuffer(pSend, handle);
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->DeleteRefWalk(handle); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method DeleteRefWalk
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT WalkRefs(RefWalkHandle handle, ULONG count, DacGcReference * refs, ULONG * pFetched)
-void DDUnpack::Unpack_WalkRefs(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- RefWalkHandle handle;
- ReadFromBuffer(pSend, handle);
- ULONG count;
- ReadFromBuffer(pSend, count);
- DacGcReference _refs; // storage
- DacGcReference * refs = &_refs;
- // refs does not need to be copied on input
- ULONG _pFetched; // storage
- ULONG * pFetched = &_pFetched;
- // pFetched does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->WalkRefs(handle, count, refs, pFetched); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, refs);
- WriteToBuffer(pResult, pFetched);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method WalkRefs
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetTypeID(CORDB_ADDRESS obj, COR_TYPEID * pType)
-void DDUnpack::Unpack_GetTypeID(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- CORDB_ADDRESS obj;
- ReadFromBuffer(pSend, obj);
- COR_TYPEID _pType; // storage
- COR_TYPEID * pType = &_pType;
- ReadFromBuffer(pSend, &_pType); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetTypeID(obj, pType); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pType);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetTypeID
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetObjectFields(COR_TYPEID id, ULONG32 celt, COR_FIELD * layout, ULONG32 * pceltFetched)
-void DDUnpack::Unpack_GetObjectFields(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- COR_TYPEID id;
- ReadFromBuffer(pSend, id);
- ULONG32 celt;
- ReadFromBuffer(pSend, celt);
- COR_FIELD _layout; // storage
- COR_FIELD * layout = &_layout;
- // layout does not need to be copied on input
- ULONG32 _pceltFetched; // storage
- ULONG32 * pceltFetched = &_pceltFetched;
- // pceltFetched does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetObjectFields(id, celt, layout, pceltFetched); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, layout);
- WriteToBuffer(pResult, pceltFetched);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetObjectFields
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetTypeLayout(COR_TYPEID id, COR_TYPE_LAYOUT * pLayout)
-void DDUnpack::Unpack_GetTypeLayout(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- COR_TYPEID id;
- ReadFromBuffer(pSend, id);
- COR_TYPE_LAYOUT _pLayout; // storage
- COR_TYPE_LAYOUT * pLayout = &_pLayout;
- ReadFromBuffer(pSend, &_pLayout); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetTypeLayout(id, pLayout); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pLayout);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetTypeLayout
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// HRESULT GetArrayLayout(COR_TYPEID id, COR_ARRAY_LAYOUT * pLayout)
-void DDUnpack::Unpack_GetArrayLayout(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- COR_TYPEID id;
- ReadFromBuffer(pSend, id);
- COR_ARRAY_LAYOUT _pLayout; // storage
- COR_ARRAY_LAYOUT * pLayout = &_pLayout;
- ReadFromBuffer(pSend, &_pLayout); // serialize to storage
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
- HRESULT _retValue; // return result
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- _retValue = m_pReal->GetArrayLayout(id, pLayout); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pLayout);
- WriteToBuffer(pResult, hr); // exception result
- WriteToBuffer(pResult, _retValue); // copy back return result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetArrayLayout
-
-//---------------------------------------------------------------------
-// Unpacking stub for:
-// void GetGCHeapInformation(COR_HEAPINFO * pHeapInfo)
-void DDUnpack::Unpack_GetGCHeapInformation(ReadBuffer * pSend, WriteBuffer * pResult)
-{
-
- // Parameters
- COR_HEAPINFO _pHeapInfo; // storage
- COR_HEAPINFO * pHeapInfo = &_pHeapInfo;
- // pHeapInfo does not need to be copied on input
- _ASSERTE(pSend->IsAtEnd()); // ensure entire buffer is read
-
- //
- // Make the actual call
- //
- HRESULT hr = S_OK;
- EX_TRY
- {
- m_pReal->GetGCHeapInformation(pHeapInfo); // actual call
-
- }
- EX_CATCH_HRESULT(hr);
- // Marshal parameters back
- WriteToBuffer(pResult, pHeapInfo);
- WriteToBuffer(pResult, hr); // exception result
- // Dtors for any DacDbi structures that we marshalled get run here.
-} // end method GetGCHeapInformation
-
-
-//
-// Handler
-//
-void DDUnpack::HandleDDMessage(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- DD_MessageId id;
- ReadFromBuffer(pSend, id);
-
- switch(id)
- {
-
- case DDID_CheckDbiVersion:
- Unpack_CheckDbiVersion(pSend, pResult);
- break;
-
- case DDID_GetLocalInterfaceHashAndTimestamp:
- Unpack_GetLocalInterfaceHashAndTimestamp(pSend, pResult);
- break;
-
- case DDID_GetRemoteInterfaceHashAndTimestamp:
- Unpack_GetRemoteInterfaceHashAndTimestamp(pSend, pResult);
- break;
-
- case DDID_FlushCache:
- Unpack_FlushCache(pSend, pResult);
- break;
-
- case DDID_DacSetTargetConsistencyChecks:
- Unpack_DacSetTargetConsistencyChecks(pSend, pResult);
- break;
-
- case DDID_Destroy:
- Unpack_Destroy(pSend, pResult);
- break;
-
- case DDID_IsLeftSideInitialized:
- Unpack_IsLeftSideInitialized(pSend, pResult);
- break;
-
- case DDID_GetAppDomainFromId:
- Unpack_GetAppDomainFromId(pSend, pResult);
- break;
-
- case DDID_GetAppDomainId:
- Unpack_GetAppDomainId(pSend, pResult);
- break;
-
- case DDID_GetAppDomainObject:
- Unpack_GetAppDomainObject(pSend, pResult);
- break;
-
- case DDID_IsDefaultDomain:
- Unpack_IsDefaultDomain(pSend, pResult);
- break;
-
- case DDID_GetAssemblyFromDomainAssembly:
- Unpack_GetAssemblyFromDomainAssembly(pSend, pResult);
- break;
-
- case DDID_IsAssemblyFullyTrusted:
- Unpack_IsAssemblyFullyTrusted(pSend, pResult);
- break;
-
- case DDID_GetAppDomainFullName:
- Unpack_GetAppDomainFullName(pSend, pResult);
- break;
-
- case DDID_GetModuleSimpleName:
- Unpack_GetModuleSimpleName(pSend, pResult);
- break;
-
- case DDID_GetAssemblyPath:
- Unpack_GetAssemblyPath(pSend, pResult);
- break;
-
- case DDID_ResolveTypeReference:
- Unpack_ResolveTypeReference(pSend, pResult);
- break;
-
- case DDID_GetModulePath:
- Unpack_GetModulePath(pSend, pResult);
- break;
-
- case DDID_GetModuleNGenPath:
- Unpack_GetModuleNGenPath(pSend, pResult);
- break;
-
- case DDID_GetMetadata:
- Unpack_GetMetadata(pSend, pResult);
- break;
-
- case DDID_GetSymbolsBuffer:
- Unpack_GetSymbolsBuffer(pSend, pResult);
- break;
-
- case DDID_GetModuleData:
- Unpack_GetModuleData(pSend, pResult);
- break;
-
- case DDID_GetDomainFileData:
- Unpack_GetDomainFileData(pSend, pResult);
- break;
-
- case DDID_GetModuleForDomainFile:
- Unpack_GetModuleForDomainFile(pSend, pResult);
- break;
-
- case DDID_GetAddressType:
- Unpack_GetAddressType(pSend, pResult);
- break;
-
- case DDID_IsTransitionStub:
- Unpack_IsTransitionStub(pSend, pResult);
- break;
-
- case DDID_GetCompilerFlags:
- Unpack_GetCompilerFlags(pSend, pResult);
- break;
-
- case DDID_SetCompilerFlags:
- Unpack_SetCompilerFlags(pSend, pResult);
- break;
-
- case DDID_EnumerateAppDomains:
- Unpack_EnumerateAppDomains(pSend, pResult);
- break;
-
- case DDID_EnumerateAssembliesInAppDomain:
- Unpack_EnumerateAssembliesInAppDomain(pSend, pResult);
- break;
-
- case DDID_EnumerateModulesInAssembly:
- Unpack_EnumerateModulesInAssembly(pSend, pResult);
- break;
-
- case DDID_RequestSyncAtEvent:
- Unpack_RequestSyncAtEvent(pSend, pResult);
- break;
-
- case DDID_MarkDebuggerAttachPending:
- Unpack_MarkDebuggerAttachPending(pSend, pResult);
- break;
-
- case DDID_MarkDebuggerAttached:
- Unpack_MarkDebuggerAttached(pSend, pResult);
- break;
-
- case DDID_Hijack:
- Unpack_Hijack(pSend, pResult);
- break;
-
- case DDID_EnumerateConnections:
- Unpack_EnumerateConnections(pSend, pResult);
- break;
-
- case DDID_EnumerateThreads:
- Unpack_EnumerateThreads(pSend, pResult);
- break;
-
- case DDID_IsThreadMarkedDead:
- Unpack_IsThreadMarkedDead(pSend, pResult);
- break;
-
- case DDID_GetThreadHandle:
- Unpack_GetThreadHandle(pSend, pResult);
- break;
-
- case DDID_GetThreadObject:
- Unpack_GetThreadObject(pSend, pResult);
- break;
-
- case DDID_SetDebugState:
- Unpack_SetDebugState(pSend, pResult);
- break;
-
- case DDID_HasUnhandledException:
- Unpack_HasUnhandledException(pSend, pResult);
- break;
-
- case DDID_GetUserState:
- Unpack_GetUserState(pSend, pResult);
- break;
-
- case DDID_GetConnectionID:
- Unpack_GetConnectionID(pSend, pResult);
- break;
-
- case DDID_GetTaskID:
- Unpack_GetTaskID(pSend, pResult);
- break;
-
- case DDID_TryGetVolatileOSThreadID:
- Unpack_TryGetVolatileOSThreadID(pSend, pResult);
- break;
-
- case DDID_GetUniqueThreadID:
- Unpack_GetUniqueThreadID(pSend, pResult);
- break;
-
- case DDID_GetCurrentException:
- Unpack_GetCurrentException(pSend, pResult);
- break;
-
- case DDID_GetCurrentCustomDebuggerNotification:
- Unpack_GetCurrentCustomDebuggerNotification(pSend, pResult);
- break;
-
- case DDID_GetCurrentAppDomain:
- Unpack_GetCurrentAppDomain(pSend, pResult);
- break;
-
- case DDID_ResolveAssembly:
- Unpack_ResolveAssembly(pSend, pResult);
- break;
-
- case DDID_GetNativeCodeSequencePointsAndVarInfo:
- Unpack_GetNativeCodeSequencePointsAndVarInfo(pSend, pResult);
- break;
-
- case DDID_GetManagedStoppedContext:
- Unpack_GetManagedStoppedContext(pSend, pResult);
- break;
-
- case DDID_CreateStackWalk:
- Unpack_CreateStackWalk(pSend, pResult);
- break;
-
- case DDID_DeleteStackWalk:
- Unpack_DeleteStackWalk(pSend, pResult);
- break;
-
- case DDID_GetStackWalkCurrentContext:
- Unpack_GetStackWalkCurrentContext(pSend, pResult);
- break;
-
- case DDID_SetStackWalkCurrentContext:
- Unpack_SetStackWalkCurrentContext(pSend, pResult);
- break;
-
- case DDID_UnwindStackWalkFrame:
- Unpack_UnwindStackWalkFrame(pSend, pResult);
- break;
-
- case DDID_CheckContext:
- Unpack_CheckContext(pSend, pResult);
- break;
-
- case DDID_GetStackWalkCurrentFrameInfo:
- Unpack_GetStackWalkCurrentFrameInfo(pSend, pResult);
- break;
-
- case DDID_GetCountOfInternalFrames:
- Unpack_GetCountOfInternalFrames(pSend, pResult);
- break;
-
- case DDID_EnumerateInternalFrames:
- Unpack_EnumerateInternalFrames(pSend, pResult);
- break;
-
- case DDID_IsMatchingParentFrame:
- Unpack_IsMatchingParentFrame(pSend, pResult);
- break;
-
- case DDID_GetStackParameterSize:
- Unpack_GetStackParameterSize(pSend, pResult);
- break;
-
- case DDID_GetFramePointer:
- Unpack_GetFramePointer(pSend, pResult);
- break;
-
- case DDID_IsLeafFrame:
- Unpack_IsLeafFrame(pSend, pResult);
- break;
-
- case DDID_GetContext:
- Unpack_GetContext(pSend, pResult);
- break;
-
- case DDID_ConvertContextToDebuggerRegDisplay:
- Unpack_ConvertContextToDebuggerRegDisplay(pSend, pResult);
- break;
-
- case DDID_IsILStubOrLCGMethod:
- Unpack_IsILStubOrLCGMethod(pSend, pResult);
- break;
-
- case DDID_GetVarArgSig:
- Unpack_GetVarArgSig(pSend, pResult);
- break;
-
- case DDID_RequiresAlign8:
- Unpack_RequiresAlign8(pSend, pResult);
- break;
-
- case DDID_ResolveExactGenericArgsToken:
- Unpack_ResolveExactGenericArgsToken(pSend, pResult);
- break;
-
- case DDID_GetILCodeAndSig:
- Unpack_GetILCodeAndSig(pSend, pResult);
- break;
-
- case DDID_GetNativeCodeInfo:
- Unpack_GetNativeCodeInfo(pSend, pResult);
- break;
-
- case DDID_GetNativeCodeInfoForAddr:
- Unpack_GetNativeCodeInfoForAddr(pSend, pResult);
- break;
-
- case DDID_GetClassInfo:
- Unpack_GetClassInfo(pSend, pResult);
- break;
-
- case DDID_GetInstantiationFieldInfo:
- Unpack_GetInstantiationFieldInfo(pSend, pResult);
- break;
-
- case DDID_TypeHandleToExpandedTypeInfo:
- Unpack_TypeHandleToExpandedTypeInfo(pSend, pResult);
- break;
-
- case DDID_GetObjectExpandedTypeInfo:
- Unpack_GetObjectExpandedTypeInfo(pSend, pResult);
- break;
-
- case DDID_GetObjectExpandedTypeInfoFromID:
- Unpack_GetObjectExpandedTypeInfoFromID(pSend, pResult);
- break;
-
- case DDID_GetApproxTypeHandle:
- Unpack_GetApproxTypeHandle(pSend, pResult);
- break;
-
- case DDID_GetExactTypeHandle:
- Unpack_GetExactTypeHandle(pSend, pResult);
- break;
-
- case DDID_GetMethodDescParams:
- Unpack_GetMethodDescParams(pSend, pResult);
- break;
-
- case DDID_GetThreadOrContextStaticAddress:
- Unpack_GetThreadOrContextStaticAddress(pSend, pResult);
- break;
-
- case DDID_GetCollectibleTypeStaticAddress:
- Unpack_GetCollectibleTypeStaticAddress(pSend, pResult);
- break;
-
- case DDID_GetEnCHangingFieldInfo:
- Unpack_GetEnCHangingFieldInfo(pSend, pResult);
- break;
-
- case DDID_GetTypeHandleParams:
- Unpack_GetTypeHandleParams(pSend, pResult);
- break;
-
- case DDID_GetSimpleType:
- Unpack_GetSimpleType(pSend, pResult);
- break;
-
- case DDID_IsExceptionObject:
- Unpack_IsExceptionObject(pSend, pResult);
- break;
-
- case DDID_GetStackFramesFromException:
- Unpack_GetStackFramesFromException(pSend, pResult);
- break;
-
- case DDID_IsRcw:
- Unpack_IsRcw(pSend, pResult);
- break;
-
- case DDID_GetRcwCachedInterfaceTypes:
- Unpack_GetRcwCachedInterfaceTypes(pSend, pResult);
- break;
-
- case DDID_GetRcwCachedInterfacePointers:
- Unpack_GetRcwCachedInterfacePointers(pSend, pResult);
- break;
-
- case DDID_GetCachedWinRTTypesForIIDs:
- Unpack_GetCachedWinRTTypesForIIDs(pSend, pResult);
- break;
-
- case DDID_GetCachedWinRTTypes:
- Unpack_GetCachedWinRTTypes(pSend, pResult);
- break;
-
- case DDID_GetTypedByRefInfo:
- Unpack_GetTypedByRefInfo(pSend, pResult);
- break;
-
- case DDID_GetStringData:
- Unpack_GetStringData(pSend, pResult);
- break;
-
- case DDID_GetArrayData:
- Unpack_GetArrayData(pSend, pResult);
- break;
-
- case DDID_GetBasicObjectInfo:
- Unpack_GetBasicObjectInfo(pSend, pResult);
- break;
-
- case DDID_TestCrst:
- Unpack_TestCrst(pSend, pResult);
- break;
-
- case DDID_TestRWLock:
- Unpack_TestRWLock(pSend, pResult);
- break;
-
- case DDID_GetDebuggerControlBlockAddress:
- Unpack_GetDebuggerControlBlockAddress(pSend, pResult);
- break;
-
- case DDID_GetObjectFromRefPtr:
- Unpack_GetObjectFromRefPtr(pSend, pResult);
- break;
-
- case DDID_GetObject:
- Unpack_GetObject(pSend, pResult);
- break;
-
- case DDID_EnableNGENPolicy:
- Unpack_EnableNGENPolicy(pSend, pResult);
- break;
-
- case DDID_GetVmObjectHandle:
- Unpack_GetVmObjectHandle(pSend, pResult);
- break;
-
- case DDID_IsVmObjectHandleValid:
- Unpack_IsVmObjectHandleValid(pSend, pResult);
- break;
-
- case DDID_IsWinRTModule:
- Unpack_IsWinRTModule(pSend, pResult);
- break;
-
- case DDID_GetAppDomainIdFromVmObjectHandle:
- Unpack_GetAppDomainIdFromVmObjectHandle(pSend, pResult);
- break;
-
- case DDID_GetHandleAddressFromVmHandle:
- Unpack_GetHandleAddressFromVmHandle(pSend, pResult);
- break;
-
- case DDID_GetObjectContents:
- Unpack_GetObjectContents(pSend, pResult);
- break;
-
- case DDID_EnumerateBlockingObjects:
- Unpack_EnumerateBlockingObjects(pSend, pResult);
- break;
-
- case DDID_GetThreadOwningMonitorLock:
- Unpack_GetThreadOwningMonitorLock(pSend, pResult);
- break;
-
- case DDID_EnumerateMonitorEventWaitList:
- Unpack_EnumerateMonitorEventWaitList(pSend, pResult);
- break;
-
- case DDID_GetAttachStateFlags:
- Unpack_GetAttachStateFlags(pSend, pResult);
- break;
-
- case DDID_GetMetaDataFileInfoFromPEFile:
- Unpack_GetMetaDataFileInfoFromPEFile(pSend, pResult);
- break;
-
- case DDID_GetILImageInfoFromNgenPEFile:
- Unpack_GetILImageInfoFromNgenPEFile(pSend, pResult);
- break;
-
- case DDID_IsThreadSuspendedOrHijacked:
- Unpack_IsThreadSuspendedOrHijacked(pSend, pResult);
- break;
-
- case DDID_AreGCStructuresValid:
- Unpack_AreGCStructuresValid(pSend, pResult);
- break;
-
- case DDID_CreateHeapWalk:
- Unpack_CreateHeapWalk(pSend, pResult);
- break;
-
- case DDID_DeleteHeapWalk:
- Unpack_DeleteHeapWalk(pSend, pResult);
- break;
-
- case DDID_WalkHeap:
- Unpack_WalkHeap(pSend, pResult);
- break;
-
- case DDID_GetHeapSegments:
- Unpack_GetHeapSegments(pSend, pResult);
- break;
-
- case DDID_IsValidObject:
- Unpack_IsValidObject(pSend, pResult);
- break;
-
- case DDID_GetAppDomainForObject:
- Unpack_GetAppDomainForObject(pSend, pResult);
- break;
-
- case DDID_CreateRefWalk:
- Unpack_CreateRefWalk(pSend, pResult);
- break;
-
- case DDID_DeleteRefWalk:
- Unpack_DeleteRefWalk(pSend, pResult);
- break;
-
- case DDID_WalkRefs:
- Unpack_WalkRefs(pSend, pResult);
- break;
-
- case DDID_GetTypeID:
- Unpack_GetTypeID(pSend, pResult);
- break;
-
- case DDID_GetObjectFields:
- Unpack_GetObjectFields(pSend, pResult);
- break;
-
- case DDID_GetTypeLayout:
- Unpack_GetTypeLayout(pSend, pResult);
- break;
-
- case DDID_GetArrayLayout:
- Unpack_GetArrayLayout(pSend, pResult);
- break;
-
- case DDID_GetGCHeapInformation:
- Unpack_GetGCHeapInformation(pSend, pResult);
- break;
-
-
- } // end switch
-} // end HandleDDMessage method
-
-#endif //FEATURE_DBGIPC_TRANSPORT_VM
-
-// end of file
diff --git a/src/debug/ee/ddunpack.h b/src/debug/ee/ddunpack.h
deleted file mode 100644
index 23be521642..0000000000
--- a/src/debug/ee/ddunpack.h
+++ /dev/null
@@ -1,498 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-
-// Unpacker
-//
-// Lives on EE side of the fence
-//
-// Note that this file is generated by ndp\clr\src\Debug\tools\BuildDDMarshal\.
-// Changes should be made to output\DDUnpack_template.h in that directory.
-//
-
-
-#ifndef _DDUNPACK_H_
-#define _DDUNPACK_H_
-
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
-
-#include "ddmarshalutil.h"
-#include "ddshared.h"
-
-
-// This technique is now misnamed, but I am still using it to lower code churn.
-// When handing memory back and forth between DAC and DBI we use this (forDbi) new variant
-// to ensure that everything goes in the correct heap. In DBI it resolves to new, and in DAC
-// it resolves to calling into a special allocator that DBI passed over that ultimately also
-// calls DBI new. A few types such as DacDbiArrayList get included on both sides of the DLL
-// boundary and they assume there will be a (forDbi) new variant available to them.
-//
-// Now however we have a new in-proc consumer of DAC and again we need to pass memory blocks
-// to it. The most straightforward technique is to consume DAC exactly how DBI does, thus mimicing
-// DBI's new variant here so that all the types which straddle the boundary can continue using
-// it. At some point we might want to change the naming to something more general... 'forDacCaller'
-// perhaps. I don't consider the technique a workaround, just the naming is overly specific.
-
-#define forDbi (*(forDbiWorker *)NULL)
-
-// for dbi we just default to new, but we need to have these defined for both dac and dbi
-inline void * operator new(size_t lenBytes, const forDbiWorker &)
-{
- void * result = new BYTE[lenBytes];
- if (result == NULL)
- {
- ThrowOutOfMemory();
- }
- return result;
-}
-
-inline void * operator new[](size_t lenBytes, const forDbiWorker &)
-{
- void * result = new BYTE[lenBytes];
- if (result == NULL)
- {
- ThrowOutOfMemory();
- }
- return result;
-}
-
-// Helper to delete memory used with the IDacDbiInterface::IAllocator interface.
-template<class T> inline
-void DeleteDbiMemory(T *p)
-{
- delete p;
-}
-
-
-// Header for unpacking
-//
-class DDUnpack
- {
- protected:
- IDacDbiInterface * m_pReal;
- IDacDbiInterface::IAllocator * m_pAllocator;
- public:
- DDUnpack(IDacDbiInterface * pReal, IDacDbiInterface::IAllocator * pAllocator)
- {
- m_pReal = pReal;
- m_pAllocator = pAllocator;
- }
-
- // Main entry point
- // This will then delegate to the proper unpacking stubs.
- void HandleDDMessage(ReadBuffer * pSend, WriteBuffer * pResult);
-
-
- //
- // Stubs
- //
-
-//---------------------------------------------------------------------
-// Unpacking stubs
- // HRESULT CheckDbiVersion(const DbiVersion * pVersion)
- void Unpack_CheckDbiVersion(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetLocalInterfaceHashAndTimestamp(DWORD & hash1, DWORD & hash2, DWORD & hash3, DWORD & hash4, DWORD & timestamp1, DWORD & timestamp2)
- void Unpack_GetLocalInterfaceHashAndTimestamp(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetRemoteInterfaceHashAndTimestamp(DWORD & hash1, DWORD & hash2, DWORD & hash3, DWORD & hash4, DWORD & timestamp1, DWORD & timestamp2)
- void Unpack_GetRemoteInterfaceHashAndTimestamp(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT FlushCache()
- void Unpack_FlushCache(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void DacSetTargetConsistencyChecks(bool fEnableAsserts)
- void Unpack_DacSetTargetConsistencyChecks(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void Destroy()
- void Unpack_Destroy(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsLeftSideInitialized()
- void Unpack_IsLeftSideInitialized(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_AppDomain GetAppDomainFromId(ULONG appdomainId)
- void Unpack_GetAppDomainFromId(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // ULONG GetAppDomainId(VMPTR_AppDomain vmAppDomain)
- void Unpack_GetAppDomainId(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_OBJECTHANDLE GetAppDomainObject(VMPTR_AppDomain vmAppDomain)
- void Unpack_GetAppDomainObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsDefaultDomain(VMPTR_AppDomain vmAppDomain)
- void Unpack_IsDefaultDomain(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetAssemblyFromDomainAssembly(VMPTR_DomainAssembly vmDomainAssembly, VMPTR_Assembly * vmAssembly)
- void Unpack_GetAssemblyFromDomainAssembly(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsAssemblyFullyTrusted(VMPTR_DomainAssembly vmDomainAssembly)
- void Unpack_IsAssemblyFullyTrusted(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetAppDomainFullName(VMPTR_AppDomain vmAppDomain, IStringHolder * pStrName)
- void Unpack_GetAppDomainFullName(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetModuleSimpleName(VMPTR_Module vmModule, IStringHolder * pStrFilename)
- void Unpack_GetModuleSimpleName(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL GetAssemblyPath(VMPTR_Assembly vmAssembly, IStringHolder * pStrFilename)
- void Unpack_GetAssemblyPath(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void ResolveTypeReference(const TypeRefData * pTypeRefInfo, TypeRefData * pTargetRefInfo)
- void Unpack_ResolveTypeReference(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL GetModulePath(VMPTR_Module vmModule, IStringHolder * pStrFilename)
- void Unpack_GetModulePath(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL GetModuleNGenPath(VMPTR_Module vmModule, IStringHolder * pStrFilename)
- void Unpack_GetModuleNGenPath(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetMetadata(VMPTR_Module vmModule, TargetBuffer * pTargetBuffer)
- void Unpack_GetMetadata(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetSymbolsBuffer(VMPTR_Module vmModule, TargetBuffer * pTargetBuffer, IDacDbiInterface::SymbolFormat * pSymbolFormat)
- void Unpack_GetSymbolsBuffer(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetModuleData(VMPTR_Module vmModule, ModuleInfo * pData)
- void Unpack_GetModuleData(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetDomainFileData(VMPTR_DomainFile vmDomainFile, DomainFileInfo * pData)
- void Unpack_GetDomainFileData(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetModuleForDomainFile(VMPTR_DomainFile vmDomainFile, VMPTR_Module * pModule)
- void Unpack_GetModuleForDomainFile(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // IDacDbiInterface::AddressType GetAddressType(CORDB_ADDRESS address)
- void Unpack_GetAddressType(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsTransitionStub(CORDB_ADDRESS address)
- void Unpack_IsTransitionStub(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetCompilerFlags(VMPTR_DomainFile vmDomainFile, BOOL * pfAllowJITOpts, BOOL * pfEnableEnC)
- void Unpack_GetCompilerFlags(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT SetCompilerFlags(VMPTR_DomainFile vmDomainFile, BOOL fAllowJitOpts, BOOL fEnableEnC)
- void Unpack_SetCompilerFlags(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateAppDomains(IDacDbiInterface::FP_APPDOMAIN_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateAppDomains(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateAssembliesInAppDomain(VMPTR_AppDomain vmAppDomain, IDacDbiInterface::FP_ASSEMBLY_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateAssembliesInAppDomain(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateModulesInAssembly(VMPTR_DomainAssembly vmAssembly, IDacDbiInterface::FP_MODULE_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateModulesInAssembly(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void RequestSyncAtEvent()
- void Unpack_RequestSyncAtEvent(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void MarkDebuggerAttachPending()
- void Unpack_MarkDebuggerAttachPending(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void MarkDebuggerAttached(BOOL fAttached)
- void Unpack_MarkDebuggerAttached(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void Hijack(VMPTR_Thread vmThread, ULONG32 dwThreadId, const EXCEPTION_RECORD * pRecord, T_CONTEXT * pOriginalContext, ULONG32 cbSizeContext, EHijackReason::EHijackReason reason, void * pUserData, CORDB_ADDRESS * pRemoteContextAddr)
- void Unpack_Hijack(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateConnections(IDacDbiInterface::FP_CONNECTION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateConnections(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateThreads(IDacDbiInterface::FP_THREAD_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateThreads(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool IsThreadMarkedDead(VMPTR_Thread vmThread)
- void Unpack_IsThreadMarkedDead(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HANDLE GetThreadHandle(VMPTR_Thread vmThread)
- void Unpack_GetThreadHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_OBJECTHANDLE GetThreadObject(VMPTR_Thread vmThread)
- void Unpack_GetThreadObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void SetDebugState(VMPTR_Thread vmThread, CorDebugThreadState debugState)
- void Unpack_SetDebugState(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL HasUnhandledException(VMPTR_Thread vmThread)
- void Unpack_HasUnhandledException(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CorDebugUserState GetUserState(VMPTR_Thread vmThread)
- void Unpack_GetUserState(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CONNID GetConnectionID(VMPTR_Thread vmThread)
- void Unpack_GetConnectionID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // TASKID GetTaskID(VMPTR_Thread vmThread)
- void Unpack_GetTaskID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // DWORD TryGetVolatileOSThreadID(VMPTR_Thread vmThread)
- void Unpack_TryGetVolatileOSThreadID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // DWORD GetUniqueThreadID(VMPTR_Thread vmThread)
- void Unpack_GetUniqueThreadID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_OBJECTHANDLE GetCurrentException(VMPTR_Thread vmThread)
- void Unpack_GetCurrentException(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_OBJECTHANDLE GetCurrentCustomDebuggerNotification(VMPTR_Thread vmThread)
- void Unpack_GetCurrentCustomDebuggerNotification(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_AppDomain GetCurrentAppDomain(VMPTR_Thread vmThread)
- void Unpack_GetCurrentAppDomain(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_DomainAssembly ResolveAssembly(VMPTR_DomainFile vmScope, mdToken tkAssemblyRef)
- void Unpack_ResolveAssembly(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetNativeCodeSequencePointsAndVarInfo(VMPTR_MethodDesc vmMethodDesc, CORDB_ADDRESS startAddress, BOOL fCodeAvailabe, NativeVarData * pNativeVarData, SequencePoints * pSequencePoints)
- void Unpack_GetNativeCodeSequencePointsAndVarInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_CONTEXT GetManagedStoppedContext(VMPTR_Thread vmThread)
- void Unpack_GetManagedStoppedContext(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void CreateStackWalk(VMPTR_Thread vmThread, DT_CONTEXT * pInternalContextBuffer, StackWalkHandle * ppSFIHandle)
- void Unpack_CreateStackWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void DeleteStackWalk(StackWalkHandle ppSFIHandle)
- void Unpack_DeleteStackWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetStackWalkCurrentContext(StackWalkHandle pSFIHandle, DT_CONTEXT * pContext)
- void Unpack_GetStackWalkCurrentContext(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void SetStackWalkCurrentContext(VMPTR_Thread vmThread, StackWalkHandle pSFIHandle, CorDebugSetContextFlag flag, DT_CONTEXT * pContext)
- void Unpack_SetStackWalkCurrentContext(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL UnwindStackWalkFrame(StackWalkHandle pSFIHandle)
- void Unpack_UnwindStackWalkFrame(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT CheckContext(VMPTR_Thread vmThread, const DT_CONTEXT * pContext)
- void Unpack_CheckContext(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // IDacDbiInterface::FrameType GetStackWalkCurrentFrameInfo(StackWalkHandle pSFIHandle, DebuggerIPCE_STRData * pFrameData)
- void Unpack_GetStackWalkCurrentFrameInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // ULONG32 GetCountOfInternalFrames(VMPTR_Thread vmThread)
- void Unpack_GetCountOfInternalFrames(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateInternalFrames(VMPTR_Thread vmThread, IDacDbiInterface::FP_INTERNAL_FRAME_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateInternalFrames(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsMatchingParentFrame(FramePointer fpToCheck, FramePointer fpParent)
- void Unpack_IsMatchingParentFrame(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // ULONG32 GetStackParameterSize(CORDB_ADDRESS controlPC)
- void Unpack_GetStackParameterSize(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // FramePointer GetFramePointer(StackWalkHandle pSFIHandle)
- void Unpack_GetFramePointer(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsLeafFrame(VMPTR_Thread vmThread, const DT_CONTEXT * pContext)
- void Unpack_IsLeafFrame(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetContext(VMPTR_Thread vmThread, DT_CONTEXT * pContextBuffer)
- void Unpack_GetContext(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void ConvertContextToDebuggerRegDisplay(const DT_CONTEXT * pInContext, DebuggerREGDISPLAY * pOutDRD, BOOL fActive)
- void Unpack_ConvertContextToDebuggerRegDisplay(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // IDacDbiInterface::DynamicMethodType IsILStubOrLCGMethod(VMPTR_MethodDesc vmMethodDesc)
- void Unpack_IsILStubOrLCGMethod(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // TargetBuffer GetVarArgSig(CORDB_ADDRESS VASigCookieAddr, CORDB_ADDRESS * pArgBase)
- void Unpack_GetVarArgSig(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL RequiresAlign8(VMPTR_TypeHandle thExact)
- void Unpack_RequiresAlign8(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // GENERICS_TYPE_TOKEN ResolveExactGenericArgsToken(DWORD dwExactGenericArgsTokenIndex, GENERICS_TYPE_TOKEN rawToken)
- void Unpack_ResolveExactGenericArgsToken(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetILCodeAndSig(VMPTR_DomainFile vmDomainFile, mdToken functionToken, TargetBuffer * pCodeInfo, mdToken * pLocalSigToken)
- void Unpack_GetILCodeAndSig(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetNativeCodeInfo(VMPTR_DomainFile vmDomainFile, mdToken functionToken, NativeCodeFunctionData * pCodeInfo)
- void Unpack_GetNativeCodeInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetNativeCodeInfoForAddr(VMPTR_MethodDesc vmMethodDesc, CORDB_ADDRESS hotCodeStartAddr, NativeCodeFunctionData * pCodeInfo)
- void Unpack_GetNativeCodeInfoForAddr(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetClassInfo(VMPTR_AppDomain vmAppDomain, VMPTR_Module vmModule, mdTypeDef metadataToken, VMPTR_TypeHandle thExact, VMPTR_TypeHandle thApprox, ClassInfo * pData)
- void Unpack_GetClassInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetInstantiationFieldInfo(VMPTR_DomainFile vmDomainFile, mdTypeDef metadataToken, VMPTR_TypeHandle vmThExact, VMPTR_TypeHandle vmThApprox, DacDbiArrayList<FieldData> * pFieldList, SIZE_T * pObjectSize)
- void Unpack_GetInstantiationFieldInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void TypeHandleToExpandedTypeInfo(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, VMPTR_TypeHandle vmTypeHandle, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
- void Unpack_TypeHandleToExpandedTypeInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetObjectExpandedTypeInfo(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, CORDB_ADDRESS addr, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
- void Unpack_GetObjectExpandedTypeInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetObjectExpandedTypeInfoFromID(AreValueTypesBoxed boxed, VMPTR_AppDomain vmAppDomain, COR_TYPEID id, DebuggerIPCE_ExpandedTypeData * pTypeInfo)
- void Unpack_GetObjectExpandedTypeInfoFromID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_TypeHandle GetApproxTypeHandle(TypeInfoList * pTypeData)
- void Unpack_GetApproxTypeHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetExactTypeHandle(DebuggerIPCE_ExpandedTypeData * pTypeData, ArgInfoList * pArgInfo, VMPTR_TypeHandle & vmTypeHandle)
- void Unpack_GetExactTypeHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetMethodDescParams(VMPTR_AppDomain vmAppDomain, VMPTR_MethodDesc vmMethodDesc, GENERICS_TYPE_TOKEN genericsToken, UINT32 * pcGenericClassTypeParams, TypeParamsList * pGenericTypeParams)
- void Unpack_GetMethodDescParams(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CORDB_ADDRESS GetThreadOrContextStaticAddress(VMPTR_FieldDesc vmField, VMPTR_Thread vmRuntimeThread)
- void Unpack_GetThreadOrContextStaticAddress(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CORDB_ADDRESS GetCollectibleTypeStaticAddress(VMPTR_FieldDesc vmField, VMPTR_AppDomain vmAppDomain)
- void Unpack_GetCollectibleTypeStaticAddress(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetEnCHangingFieldInfo(const EnCHangingFieldInfo * pEnCFieldInfo, FieldData * pFieldData, BOOL * pfStatic)
- void Unpack_GetEnCHangingFieldInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetTypeHandleParams(VMPTR_AppDomain vmAppDomain, VMPTR_TypeHandle vmTypeHandle, TypeParamsList * pParams)
- void Unpack_GetTypeHandleParams(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetSimpleType(VMPTR_AppDomain vmAppDomain, CorElementType simpleType, mdTypeDef * pMetadataToken, VMPTR_Module * pVmModule, VMPTR_DomainFile * pVmDomainFile)
- void Unpack_GetSimpleType(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsExceptionObject(VMPTR_Object vmObject)
- void Unpack_IsExceptionObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetStackFramesFromException(VMPTR_Object vmObject, DacDbiArrayList<DacExceptionCallStackData> & dacStackFrames)
- void Unpack_GetStackFramesFromException(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsRcw(VMPTR_Object vmObject)
- void Unpack_IsRcw(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetRcwCachedInterfaceTypes(VMPTR_Object vmObject, VMPTR_AppDomain vmAppDomain, BOOL bIInspectableOnly, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pDacInterfaces)
- void Unpack_GetRcwCachedInterfaceTypes(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetRcwCachedInterfacePointers(VMPTR_Object vmObject, BOOL bIInspectableOnly, DacDbiArrayList<CORDB_ADDRESS> * pDacItfPtrs)
- void Unpack_GetRcwCachedInterfacePointers(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetCachedWinRTTypesForIIDs(VMPTR_AppDomain vmAppDomain, DacDbiArrayList<GUID> & iids, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes)
- void Unpack_GetCachedWinRTTypesForIIDs(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetCachedWinRTTypes(VMPTR_AppDomain vmAppDomain, DacDbiArrayList<GUID> * piids, DacDbiArrayList<DebuggerIPCE_ExpandedTypeData> * pTypes)
- void Unpack_GetCachedWinRTTypes(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetTypedByRefInfo(CORDB_ADDRESS pTypedByRef, VMPTR_AppDomain vmAppDomain, DebuggerIPCE_ObjectData * pObjectData)
- void Unpack_GetTypedByRefInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetStringData(CORDB_ADDRESS objectAddress, DebuggerIPCE_ObjectData * pObjectData)
- void Unpack_GetStringData(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetArrayData(CORDB_ADDRESS objectAddress, DebuggerIPCE_ObjectData * pObjectData)
- void Unpack_GetArrayData(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetBasicObjectInfo(CORDB_ADDRESS objectAddress, CorElementType type, VMPTR_AppDomain vmAppDomain, DebuggerIPCE_ObjectData * pObjectData)
- void Unpack_GetBasicObjectInfo(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void TestCrst(VMPTR_Crst vmCrst)
- void Unpack_TestCrst(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void TestRWLock(VMPTR_SimpleRWLock vmRWLock)
- void Unpack_TestRWLock(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CORDB_ADDRESS GetDebuggerControlBlockAddress()
- void Unpack_GetDebuggerControlBlockAddress(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_Object GetObjectFromRefPtr(CORDB_ADDRESS ptr)
- void Unpack_GetObjectFromRefPtr(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_Object GetObject(CORDB_ADDRESS ptr)
- void Unpack_GetObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT EnableNGENPolicy(CorDebugNGENPolicy ePolicy)
- void Unpack_EnableNGENPolicy(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // VMPTR_OBJECTHANDLE GetVmObjectHandle(CORDB_ADDRESS handleAddress)
- void Unpack_GetVmObjectHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // BOOL IsVmObjectHandleValid(VMPTR_OBJECTHANDLE vmHandle)
- void Unpack_IsVmObjectHandleValid(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT IsWinRTModule(VMPTR_Module vmModule, BOOL & isWinRT)
- void Unpack_IsWinRTModule(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // ULONG GetAppDomainIdFromVmObjectHandle(VMPTR_OBJECTHANDLE vmHandle)
- void Unpack_GetAppDomainIdFromVmObjectHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CORDB_ADDRESS GetHandleAddressFromVmHandle(VMPTR_OBJECTHANDLE vmHandle)
- void Unpack_GetHandleAddressFromVmHandle(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // TargetBuffer GetObjectContents(VMPTR_Object obj)
- void Unpack_GetObjectContents(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateBlockingObjects(VMPTR_Thread vmThread, IDacDbiInterface::FP_BLOCKINGOBJECT_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateBlockingObjects(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // MonitorLockInfo GetThreadOwningMonitorLock(VMPTR_Object vmObject)
- void Unpack_GetThreadOwningMonitorLock(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void EnumerateMonitorEventWaitList(VMPTR_Object vmObject, IDacDbiInterface::FP_THREAD_ENUMERATION_CALLBACK fpCallback, CALLBACK_DATA pUserData)
- void Unpack_EnumerateMonitorEventWaitList(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // CLR_DEBUGGING_PROCESS_FLAGS GetAttachStateFlags()
- void Unpack_GetAttachStateFlags(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool GetMetaDataFileInfoFromPEFile(VMPTR_PEFile vmPEFile, DWORD & dwTimeStamp, DWORD & dwImageSize, bool & isNGEN, IStringHolder * pStrFilename)
- void Unpack_GetMetaDataFileInfoFromPEFile(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool GetILImageInfoFromNgenPEFile(VMPTR_PEFile vmPEFile, DWORD & dwTimeStamp, DWORD & dwSize, IStringHolder * pStrFilename)
- void Unpack_GetILImageInfoFromNgenPEFile(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool IsThreadSuspendedOrHijacked(VMPTR_Thread vmThread)
- void Unpack_IsThreadSuspendedOrHijacked(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool AreGCStructuresValid()
- void Unpack_AreGCStructuresValid(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT CreateHeapWalk(HeapWalkHandle * pHandle)
- void Unpack_CreateHeapWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void DeleteHeapWalk(HeapWalkHandle handle)
- void Unpack_DeleteHeapWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT WalkHeap(HeapWalkHandle handle, ULONG count, COR_HEAPOBJECT * objects, ULONG * pFetched)
- void Unpack_WalkHeap(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetHeapSegments(DacDbiArrayList<COR_SEGMENT> * pSegments)
- void Unpack_GetHeapSegments(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool IsValidObject(CORDB_ADDRESS obj)
- void Unpack_IsValidObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // bool GetAppDomainForObject(CORDB_ADDRESS obj, VMPTR_AppDomain * pApp, VMPTR_Module * pModule, VMPTR_DomainFile * pDomainFile)
- void Unpack_GetAppDomainForObject(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT CreateRefWalk(RefWalkHandle * pHandle, BOOL walkStacks, BOOL walkFQ, UINT32 handleWalkMask)
- void Unpack_CreateRefWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void DeleteRefWalk(RefWalkHandle handle)
- void Unpack_DeleteRefWalk(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT WalkRefs(RefWalkHandle handle, ULONG count, DacGcReference * refs, ULONG * pFetched)
- void Unpack_WalkRefs(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetTypeID(CORDB_ADDRESS obj, COR_TYPEID * pType)
- void Unpack_GetTypeID(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetObjectFields(COR_TYPEID id, ULONG32 celt, COR_FIELD * layout, ULONG32 * pceltFetched)
- void Unpack_GetObjectFields(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetTypeLayout(COR_TYPEID id, COR_TYPE_LAYOUT * pLayout)
- void Unpack_GetTypeLayout(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // HRESULT GetArrayLayout(COR_TYPEID id, COR_ARRAY_LAYOUT * pLayout)
- void Unpack_GetArrayLayout(ReadBuffer * pSend, WriteBuffer * pResult);
-
- // void GetGCHeapInformation(COR_HEAPINFO * pHeapInfo)
- void Unpack_GetGCHeapInformation(ReadBuffer * pSend, WriteBuffer * pResult);
-
- };
-
-#endif // _DDUNPACK_H_
-
-#endif //FEATURE_DBGIPC_TRANSPORT_VM
-
-// end of file
diff --git a/src/debug/ee/debugger.cpp b/src/debug/ee/debugger.cpp
index f95e49b3f0..582a3954a9 100644
--- a/src/debug/ee/debugger.cpp
+++ b/src/debug/ee/debugger.cpp
@@ -38,8 +38,6 @@
#include "../../vm/excep.h"
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
#include "dbgtransportsession.h"
-#include "dbgtransportproxy.h"
-#include "dbgsecureconnection.h"
#endif // FEATURE_DBGIPC_TRANSPORT_VM
@@ -1729,11 +1727,7 @@ void Debugger::RaiseStartupNotification()
// listening, and we will fail. However, we still want to initialize the variable above.
BOOL fRaiseStartupNotification = TRUE;
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- fRaiseStartupNotification = (CORDebuggerAttached() ? TRUE : FALSE);
- }
+ fRaiseStartupNotification = (CORDebuggerAttached() ? TRUE : FALSE);
#endif
if (fRaiseStartupNotification)
{
@@ -1766,67 +1760,58 @@ void Debugger::RaiseStartupNotification()
void Debugger::SendRawEvent(const DebuggerIPCEvent * pManagedEvent)
{
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- HRESULT hr = g_pDbgTransport->SendDebugEvent(const_cast<DebuggerIPCEvent *>(pManagedEvent));
+ HRESULT hr = g_pDbgTransport->SendDebugEvent(const_cast<DebuggerIPCEvent *>(pManagedEvent));
- if (FAILED(hr))
- {
- _ASSERTE(!"Failed to send debugger event");
+ if (FAILED(hr))
+ {
+ _ASSERTE(!"Failed to send debugger event");
- STRESS_LOG1(LF_CORDB, LL_INFO1000, "D::SendIPCEvent Error on Send with 0x%x\n", hr);
- UnrecoverableError(hr,
- 0,
- FILE_DEBUG,
- LINE_DEBUG,
- false);
+ STRESS_LOG1(LF_CORDB, LL_INFO1000, "D::SendIPCEvent Error on Send with 0x%x\n", hr);
+ UnrecoverableError(hr,
+ 0,
+ FILE_DEBUG,
+ LINE_DEBUG,
+ false);
- // @dbgtodo Mac - what can we do here?
- }
+ // @dbgtodo Mac - what can we do here?
}
- else
+#else
+ // We get to send an array of ULONG_PTRs as data with the notification.
+ // The debugger can then use ReadProcessMemory to read through this array.
+ ULONG_PTR rgData [] = {
+ CLRDBG_EXCEPTION_DATA_CHECKSUM,
+ (ULONG_PTR) g_pMSCorEE,
+ (ULONG_PTR) pManagedEvent
+ };
+
+ // If no debugger attached, then don't bother raising a 1st-chance exception because nobody will sniff it.
+ // @dbgtodo iDNA: in iDNA case, the recorder may sniff it.
+ if (!IsDebuggerPresent())
{
-#endif
- // We get to send an array of ULONG_PTRs as data with the notification.
- // The debugger can then use ReadProcessMemory to read through this array.
- ULONG_PTR rgData [] = {
- CLRDBG_EXCEPTION_DATA_CHECKSUM,
- (ULONG_PTR) g_pMSCorEE,
- (ULONG_PTR) pManagedEvent
- };
-
- // If no debugger attached, then don't bother raising a 1st-chance exception because nobody will sniff it.
- // @dbgtodo iDNA: in iDNA case, the recorder may sniff it.
- if (!IsDebuggerPresent())
- {
- return;
- }
-
- //
- // Physically send the event via an OS Exception. We're using exceptions as a notification
- // mechanism on top of the OS native debugging pipeline.
- // @dbgtodo cross-plat - this needs to be cross-plat.
- //
- EX_TRY
- {
- const DWORD dwFlags = 0; // continuable (eg, Debugger can continue GH)
- RaiseException(CLRDBG_NOTIFICATION_EXCEPTION_CODE, dwFlags, NumItems(rgData), rgData);
+ return;
+ }
- // If debugger continues "GH" (DBG_CONTINUE), then we land here.
- // This is the expected path for a well-behaved ICorDebug debugger.
- }
- EX_CATCH
- {
- // If no debugger is attached, or if the debugger continues "GN" (DBG_EXCEPTION_NOT_HANDLED), then we land here.
- // A naive (not-ICorDebug aware) native-debugger won't handle the exception and so land us here.
- // We may also get here if a debugger detaches at the Exception notification
- // (and thus implicitly continues GN).
- }
- EX_END_CATCH(SwallowAllExceptions);
+ //
+ // Physically send the event via an OS Exception. We're using exceptions as a notification
+ // mechanism on top of the OS native debugging pipeline.
+ // @dbgtodo cross-plat - this needs to be cross-plat.
+ //
+ EX_TRY
+ {
+ const DWORD dwFlags = 0; // continuable (eg, Debugger can continue GH)
+ RaiseException(CLRDBG_NOTIFICATION_EXCEPTION_CODE, dwFlags, NumItems(rgData), rgData);
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
+ // If debugger continues "GH" (DBG_CONTINUE), then we land here.
+ // This is the expected path for a well-behaved ICorDebug debugger.
+ }
+ EX_CATCH
+ {
+ // If no debugger is attached, or if the debugger continues "GN" (DBG_EXCEPTION_NOT_HANDLED), then we land here.
+ // A naive (not-ICorDebug aware) native-debugger won't handle the exception and so land us here.
+ // We may also get here if a debugger detaches at the Exception notification
+ // (and thus implicitly continues GN).
}
+ EX_END_CATCH(SwallowAllExceptions);
#endif // FEATURE_DBGIPC_TRANSPORT_VM
}
@@ -1992,15 +1977,9 @@ HRESULT Debugger::Startup(void)
// Iff the debug pack is installed, then go through the telesto debugging pipeline.
LOG((LF_CORDB, LL_INFO10, "Debugging service is enabled because debug pack is installed or Watson support is enabled)\n"));
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
- {
-#endif
- // This may block while an attach occurs.
- NotifyDebuggerOfTelestoStartup();
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // This may block while an attach occurs.
+ NotifyDebuggerOfTelestoStartup();
#endif
}
else
@@ -2102,86 +2081,32 @@ HRESULT Debugger::Startup(void)
_ASSERTE(SUCCEEDED(hr)); // throws on error
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- // The in-process DAC for Mac is lazily initialized when we get the first DDMessage.
- // We check whether the DAC and the runtime has matching versions when we do the initialization, and
- // we'll fail if the versions don't match. That's why we don't want to do the initialization here because
- // even if we have the wrong version of DAC, managed apps can still run. We just can't debug it.
-
- // Create transport control block and initialize it.
- g_pDbgTransport = new DbgTransportSession();
- hr = g_pDbgTransport->Init(m_pRCThread->GetDCB(), m_pAppDomainCB, &m_inProcDac);
- if (FAILED(hr))
- ThrowHR(hr);
-
- // Create interface to talk to debugger proxy and initialize it.
- DbgTransportProxy *pProxy = new DbgTransportProxy();
- hr = pProxy->Init(g_pDbgTransport->GetPort());
- if (FAILED(hr))
- ThrowHR(hr);
-
- // Contact the debugger proxy process for this machine. This has several purposes:
- // 1) Register this runtime instance as available for debugging.
- // 2) Check whether a debugger is already waiting to attach to us.
- // 3) Publish the port number we expect debugging requests to target.
- // The following call blocks until we receive a reply from the proxy or time out.
- DbgProxyResult result = pProxy->RegisterWithProxy();
- switch (result)
- {
- case RequestTimedOut:
- // The proxy doesn't appear to be there, we're not debuggable as a result.
- // To be careful (and avoid malicious types trying to connect to us even when the proxy is not up)
- // neuter the transport so that it won't accept any connections. Ideally we'd just shutdown the
- // debugger subsystem entirely, but this appears to be somewhat complex at this late stage.
- g_pDbgTransport->Neuter();
- break;
- case RequestSuccessful:
- // We registered with the proxy successfully. No debugger was interested in
- // us just yet.
- break;
- case PendingDebuggerAttach:
- // We registered with the proxy and found that a debugger was registered for
- // an early attach.
-
- // Mark this process as launched by the debugger and the debugger as attached.
- g_CORDebuggerControlFlags |= DBCF_GENERATE_DEBUG_CODE;
- MarkDebuggerAttachedInternal();
-
- LazyInit();
- DebuggerController::Initialize();
- break;
- default:
- _ASSERTE(!"Unknown result code from DbgTransportSession::RegisterWithProxy()");
- }
-
- // The debugger no longer needs to talk with the proxy.
- pProxy->Shutdown();
- delete pProxy;
- }
+ // Create transport session and initialize it.
+ g_pDbgTransport = new DbgTransportSession();
+ hr = g_pDbgTransport->Init(m_pRCThread->GetDCB(), m_pAppDomainCB);
+ if (FAILED(hr))
+ ThrowHR(hr);
+
+ bool waitForAttach = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgWaitForDebuggerAttach) != 0;
+ if (waitForAttach)
+ {
+ // Mark this process as launched by the debugger and the debugger as attached.
+ g_CORDebuggerControlFlags |= DBCF_GENERATE_DEBUG_CODE;
+ MarkDebuggerAttachedInternal();
+
+ LazyInit();
+ DebuggerController::Initialize();
+ }
#endif // FEATURE_DBGIPC_TRANSPORT_VM
RaiseStartupNotification();
// Also initialize the AppDomainEnumerationIPCBlock
-#if defined(FEATURE_IPCMAN)
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- m_pAppDomainCB = new (nothrow) AppDomainEnumerationIPCBlock();
- }
- else
- {
-#endif
- m_pAppDomainCB = g_pIPCManagerInterface->GetAppDomainBlock();
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- }
-#endif
-#else // FEATURE_IPCMAN
+#if !defined(FEATURE_IPCMAN) || defined(FEATURE_DBGIPC_TRANSPORT_VM)
m_pAppDomainCB = new (nothrow) AppDomainEnumerationIPCBlock();
-#endif // FEATURE_IPCMAN
+#else
+ m_pAppDomainCB = g_pIPCManagerInterface->GetAppDomainBlock();
+#endif
if (m_pAppDomainCB == NULL)
{
@@ -5551,19 +5476,13 @@ void Debugger::TrapAllRuntimeThreads()
}
CONTRACTL_END;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // Only sync if RS requested it.
+ if (!m_RSRequestedSync)
{
-#endif
- // Only sync if RS requested it.
- if (!m_RSRequestedSync)
- {
- return;
- }
- m_RSRequestedSync = FALSE;
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
+ return;
}
+ m_RSRequestedSync = FALSE;
#endif
// If we're doing shutdown, then don't bother trying to communicate w/ the RS.
diff --git a/src/debug/ee/debugger.h b/src/debug/ee/debugger.h
index 41ff93d16f..6f71b5c74a 100644
--- a/src/debug/ee/debugger.h
+++ b/src/debug/ee/debugger.h
@@ -49,7 +49,6 @@
#include "dllimportcallback.h"
#include "canary.h"
-#include "inprocdac.h"
#undef ASSERT
#define CRASH(x) _ASSERTE(!x)
@@ -836,17 +835,9 @@ private:
DebuggerIPCEvent * GetRCThreadReceiveBuffer()
{
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- return reinterpret_cast<DebuggerIPCEvent *>(&m_receiveBuffer[0]);
- }
- else
- {
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
- return reinterpret_cast<DebuggerIPCEvent *>(&m_pDCB->m_receiveBuffer[0]);
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
+ return reinterpret_cast<DebuggerIPCEvent *>(&m_receiveBuffer[0]);
+#else
+ return reinterpret_cast<DebuggerIPCEvent *>(&m_pDCB->m_receiveBuffer[0]);
#endif
}
@@ -855,17 +846,9 @@ private:
DebuggerIPCEvent * GetRCThreadSendBuffer()
{
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(useTransport)
- {
- return reinterpret_cast<DebuggerIPCEvent *>(&m_sendBuffer[0]);
- }
- else
- {
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
- return reinterpret_cast<DebuggerIPCEvent *>(&m_pDCB->m_sendBuffer[0]);
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
+ return reinterpret_cast<DebuggerIPCEvent *>(&m_sendBuffer[0]);
+#else // FEATURE_DBGIPC_TRANSPORT_VM
+ return reinterpret_cast<DebuggerIPCEvent *>(&m_pDCB->m_sendBuffer[0]);
#endif // FEATURE_DBGIPC_TRANSPORT_VM
}
@@ -2805,11 +2788,6 @@ private:
PTR_DebuggerLazyInit m_pLazyData;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- InProcDac m_inProcDac;
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
-
-
// A list of all defines that affect layout of MD types
typedef enum _Target_Defines
diff --git a/src/debug/ee/inprocdac.cpp b/src/debug/ee/inprocdac.cpp
deleted file mode 100644
index e451cf08bb..0000000000
--- a/src/debug/ee/inprocdac.cpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-//*****************************************************************************
-// File: InProcDac.cpp
-//
-
-//
-//
-//
-//*****************************************************************************
-
-#include "stdafx.h"
-
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
-
-#include "inprocdac.h"
-#include "dacdbiinterface.h"
-#include "cordebug.h"
-#include "metadata.h"
-
-InProcDac::InProcDac() :
- m_pDacDbi(NULL),
- m_pUnpacker(NULL)
-{
-}
-
-InProcDac::~InProcDac()
-{
- Cleanup();
-}
-
-//
-// Debugger::InitializeDAC
-//
-// DAC is used in-process on the Mac and ARM devices.
-// This is similar to CordbProcess::CreateDacDbiInterface on Windows.
-// @dbgtodo : try and share some of this code with the RS equivalent?
-//
-void InProcDac::Initialize()
-{
- CONTRACTL
- {
- THROWS;
- }
- CONTRACTL_END;
-
- // don't double-init
- _ASSERTE(m_pDataTarget == NULL);
- _ASSERTE(m_pDacDbi == NULL);
- _ASSERTE(m_pUnpacker == NULL);
-
- HRESULT hrStatus = S_OK;
- HModuleHolder hDacDll;
-
- //
- // Load the access DLL from the same directory as the the current CLR DLL.
- //
- WCHAR wszRuntimePath[MAX_PATH]; // base directory of the runtime (including trailing /)
- WCHAR wszAccessDllPath[MAX_PATH]; // full path to the DAC Dll
-
- if (!WszGetModuleFileName(GetCLRModule(), wszRuntimePath, NumItems(wszRuntimePath)))
- {
- ThrowLastError();
- }
-
- const char pathSep = '\\';
-
- // remove CLR filename
- PWSTR pPathTail = wcsrchr(wszRuntimePath, pathSep);
- if (!pPathTail)
- {
- ThrowHR(E_INVALIDARG);
- }
- pPathTail[1] = '\0';
-
- // In the case where this function is called multiple times, save the module handle to the DAC shared
- // library so that we won't try to free and load it multiple times.
- if (m_hDacModule == NULL)
- {
- if (wcscpy_s(wszAccessDllPath, _countof(wszAccessDllPath), wszRuntimePath) ||
- wcscat_s(wszAccessDllPath, _countof(wszAccessDllPath), MAKEDLLNAME_W(MAIN_DAC_MODULE_NAME_W)))
- {
- ThrowHR(E_INVALIDARG);
- }
-
- hDacDll.Assign(WszLoadLibrary(wszAccessDllPath));
- if (!hDacDll)
- {
- CONSISTENCY_CHECK_MSGF(false,("Unable to find DAC dll: %s", wszAccessDllPath));
-
- DWORD dwLastError = GetLastError();
- if (dwLastError == ERROR_MOD_NOT_FOUND)
- {
- // Give a more specific error in the case where we can't find the DAC dll.
- ThrowHR(CORDBG_E_DEBUG_COMPONENT_MISSING);
- }
- else
- {
- ThrowWin32(dwLastError);
- }
- }
-
- // Succeeded. Now copy out.
- m_hDacModule.Assign(hDacDll);
- hDacDll.SuppressRelease();
- }
-
- // Create the data target
- ReleaseHolder<InProcDataTarget> pDataTarget = new InProcDataTarget();
-
- //
- // Get the access interface, passing our callback interfaces (data target, and metadata lookup)
- //
-
- IDacDbiInterface::IMetaDataLookup * pMetaDataLookup = this;
- IDacDbiInterface::IAllocator * pAllocator = this;
-
- // Get the CLR instance ID - the base address of the CLR module
- CORDB_ADDRESS clrInstanceId = reinterpret_cast<CORDB_ADDRESS>(GetCLRModule());
-
- typedef HRESULT (STDAPICALLTYPE * PFN_DacDbiInterfaceInstance)(
- ICorDebugDataTarget *,
- CORDB_ADDRESS,
- IDacDbiInterface::IAllocator *,
- IDacDbiInterface::IMetaDataLookup *,
- IDacDbiInterface **);
-
- IDacDbiInterface* pInterfacePtr = NULL;
- PFN_DacDbiInterfaceInstance pfnEntry = (PFN_DacDbiInterfaceInstance)
- GetProcAddress(m_hDacModule, "DacDbiInterfaceInstance");
-
- if (!pfnEntry)
- {
- ThrowLastError();
- }
-
- hrStatus = pfnEntry(pDataTarget, clrInstanceId,
- pAllocator, pMetaDataLookup, &pInterfacePtr);
- IfFailThrow(hrStatus);
-
- // We now have a resource, pInterfacePtr, that needs to be freed.
-
- m_pDacDbi = pInterfacePtr;
- m_pDataTarget = pDataTarget.Extract();
-
- // Enable DAC target consistency checking - we're in-proc and so better always be consistent
- m_pDacDbi->DacSetTargetConsistencyChecks( true );
- m_pUnpacker = new DDUnpack(pInterfacePtr, pAllocator); // throws
-}
-
-void InProcDac::Cleanup()
-{
- CONTRACTL
- {
- NOTHROW; // backout code.
- }
- CONTRACTL_END;
-
- if (m_pDacDbi != NULL)
- {
- m_pDacDbi->Destroy();
- m_pDacDbi = NULL;
- }
-
- if(m_pUnpacker != NULL)
- {
- delete m_pUnpacker;
- m_pUnpacker = NULL;
- }
-
- if (m_pDataTarget != NULL)
- {
- m_pDataTarget.Clear();
- }
-
- // Note that once we release this handle, the DAC module can be unloaded and all calls
- // into DAC could be invalid.
- if (m_hDacModule != NULL)
- {
- m_hDacModule.Clear();
- }
-}
-
-HRESULT InProcDac::DoRequest(ReadBuffer * pSend, WriteBuffer * pResult)
-{
- HRESULT hr = S_OK;
-
- // Lazily initialize the DacDbiMarshalStub.
- if (m_pDacDbi == NULL)
- {
- EX_TRY
- {
- Initialize();
- }
- EX_CATCH_HRESULT(hr);
- IfFailRet(hr);
- }
-
- _ASSERTE(m_pDacDbi != NULL);
-
- /*
- * @dbgtodo : We have to make sure to call Flush whenever runtime data structures may have changed.
- * Eg:
- * - after every IPC event
- * - whenever we suspend the process
- * For now we rely on the RS to tell us when to flush, just like the Windows runtime. It's a little riskier
- * in this case because the target is actually running code. Since the cost of copying locally is fairly
- * low, it is probably best to just flush at the beginning and/or end of all DD requests (i.e. here).
- * Flushing more that necessary may be best for performance.
- * Note however that this could in theory expose lateng bugs where we've been getting away with bleeding
- * DAC state across DD calls on Windows.
- */
- EX_TRY
- {
- m_pUnpacker->HandleDDMessage(pSend, pResult);
- }
- EX_CATCH_HRESULT(hr);
- return hr;
-}
-
-#ifndef DACCESS_COMPILE
-IMDInternalImport * InProcDac::LookupMetaData(VMPTR_PEFile addressPEFile, bool &isILMetaDataForNGENImage)
-{
- isILMetaDataForNGENImage = false;
- PEFile* peFile = addressPEFile.GetRawPtr();
- return peFile->GetPersistentMDImport();
-}
-#endif
-//***************************************************************
-// InProcDataTarget implementation
-//***************************************************************
-
-//
-// InProcDataTarget ctor
-//
-// Instantiate an InProcDataTarget
-//
-InProcDac::InProcDataTarget::InProcDataTarget() :
- m_ref(0)
-{
-}
-
-//
-// InProcDataTarget dtor
-//
-//
-InProcDac::InProcDataTarget::~InProcDataTarget()
-{
-}
-
-// Standard impl of IUnknown::QueryInterface
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::QueryInterface(
- REFIID InterfaceId,
- PVOID* pInterface)
-{
- if (InterfaceId == IID_IUnknown)
- {
- *pInterface = static_cast<IUnknown *>(static_cast<ICorDebugDataTarget *>(this));
- }
- else if (InterfaceId == IID_ICorDebugDataTarget)
- {
- *pInterface = static_cast<ICorDebugDataTarget *>(this);
- }
- else if (InterfaceId == IID_ICorDebugMutableDataTarget)
- {
- *pInterface = static_cast<ICorDebugMutableDataTarget *>(this);
- }
- else
- {
- *pInterface = NULL;
- return E_NOINTERFACE;
- }
-
- AddRef();
- return S_OK;
-}
-
-// Standard impl of IUnknown::AddRef
-ULONG STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::AddRef()
-{
- LONG ref = InterlockedIncrement(&m_ref);
- return ref;
-}
-
-// Standard impl of IUnknown::Release
-ULONG STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::Release()
-{
- LONG ref = InterlockedDecrement(&m_ref);
- if (ref == 0)
- {
- delete this;
- }
- return ref;
-}
-
-// impl of interface method ICorDebugDataTarget::GetPlatform
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::GetPlatform(
- CorDebugPlatform * pPlatform)
-{
-#if defined(_TARGET_X86_)
- *pPlatform = CORDB_PLATFORM_WINDOWS_X86;
-#elif defined(_TARGET_AMD64_)
- *pPlatform = CORDB_PLATFORM_WINDOWS_AMD64;
-#elif defined(_TARGET_ARM_)
- *pPlatform = CORDB_PLATFORM_WINDOWS_ARM;
-#else
-#error Unknown Processor.
-#endif // platform
-
- return S_OK;
-}
-
-// impl of interface method ICorDebugDataTarget::ReadVirtual
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::ReadVirtual(
- CORDB_ADDRESS address,
- PBYTE pBuffer,
- ULONG32 cbRequestSize,
- ULONG32 * pcbRead)
-{
- void * pSrc = reinterpret_cast<void*>(address);
- memcpy(pBuffer, pSrc, cbRequestSize);
- if (pcbRead != NULL)
- {
- *pcbRead = cbRequestSize;
- }
- return S_OK;
-}
-
-// impl of interface method ICorDebugMutableDataTarget::WriteVirtual
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::WriteVirtual(
- CORDB_ADDRESS address,
- const BYTE * pBuffer,
- ULONG32 cbRequestSize)
-{
- void * pDst = reinterpret_cast<void*>(address);
- memcpy(pDst, pBuffer, cbRequestSize);
- return S_OK;
-}
-
-
-// impl of interface method ICorDebugDataTarget::GetThreadContext
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::GetThreadContext(
- DWORD dwThreadID,
- ULONG32 contextFlags,
- ULONG32 contextSize,
- PBYTE pContext)
-{
- if (contextSize < sizeof(CONTEXT))
- {
- return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
- }
-
- HandleHolder hThread = ::OpenThread(THREAD_GET_CONTEXT, FALSE, dwThreadID);
- if (hThread == NULL)
- {
- return HRESULT_FROM_GetLastError();
- }
-
- // This assumes pContext is appropriately aligned.
- CONTEXT * pCtx = reinterpret_cast<CONTEXT*>(pContext);
- pCtx->ContextFlags = contextFlags;
- if (!::GetThreadContext(hThread, pCtx))
- {
- return HRESULT_FROM_GetLastError();
- }
-
- return S_OK;
-}
-
-// impl of interface method ICorDebugMutableDataTarget::SetThreadContext
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::SetThreadContext(
- DWORD dwThreadID,
- ULONG32 contextSize,
- const BYTE * pContext)
-{
- if (contextSize < sizeof(CONTEXT))
- {
- return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
- }
-
- HandleHolder hThread = ::OpenThread(THREAD_SET_CONTEXT, FALSE, dwThreadID);
- if (hThread == NULL)
- {
- return HRESULT_FROM_GetLastError();
- }
-
- // This assumes pContext is appropriately aligned.
- const CONTEXT * pCtx = reinterpret_cast<const CONTEXT*>(pContext);
- if (!::SetThreadContext(hThread,pCtx))
- {
- return HRESULT_FROM_GetLastError();
- }
-
- return S_OK;
-}
-
-// implementation of ICorDebugMutableDataTarget::ContinueStatusChanged
-HRESULT STDMETHODCALLTYPE
-InProcDac::InProcDataTarget::ContinueStatusChanged(
- DWORD dwThreadId,
- CORDB_CONTINUE_STATUS continueStatus)
-{
- return E_NOTIMPL;
-}
-
-#ifndef DACCESS_COMPILE
-
-// Trivial implementation for IDacDbiInterface::IAllocator methods
-void * InProcDac::Alloc(SIZE_T lenBytes)
-{
- return new BYTE[lenBytes];
-}
-
-void InProcDac::Free(void * p)
-{
- BYTE* pB = static_cast<BYTE*>(p);
- delete[] pB;
-}
-
-#endif //!DACCESS_COMPILE
-
-#endif //FEATURE_DBGIPC_TRANSPORT_VM
diff --git a/src/debug/ee/inprocdac.h b/src/debug/ee/inprocdac.h
deleted file mode 100644
index 408159d12a..0000000000
--- a/src/debug/ee/inprocdac.h
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-//
-//*****************************************************************************
-// File: InProcDac.h
-//
-
-//
-//*****************************************************************************
-
-#ifndef _INPROCDAC_H
-#define _INPROCDAC_H
-
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
-#include "dacdbiinterface.h"
-#include "cordebug.h"
-#include "xcordebug.h"
-
-#ifndef DACCESS_COMPILE
-#include "ddunpack.h"
-#endif
-
-class IDacDbiMarshalStub;
-class ReadBuffer;
-class WriteBuffer;
-
-//
-// InProcDac is a helper class used by the Debugger class to make DAC and
-// the IDacDbiInterface available from within process.
-// This is done on the Macintosh because we don't have OS support for our
-// normal out-of-process access (eg. VM read as non-root user).
-//
-// Note that we don't ever actually use this in DACCESS_COMPILE builds - it's
-// implementation is compiled into just mscorwks, but the callbacks (data target
-// and IMetaDataLookup) are called from mscordacwks. We need the declaration
-// visible in DACCESS_COMPILE builds because a field of this type is contained
-// by-value in the Debugger class, and so we need the correct size for field
-// layout.
-//
-class InProcDac
- : private IDacDbiInterface::IMetaDataLookup,
- private IDacDbiInterface::IAllocator
-{
-public:
- InProcDac() DAC_EMPTY();
- ~InProcDac() DAC_EMPTY();
-
- void Initialize();
- void Cleanup();
-
- // This takes a marshalled version of a DD interface request
- HRESULT DoRequest(ReadBuffer * pSend, WriteBuffer * pResult);
-
-private:
-
- // IMetaDataLookup methods
- virtual IMDInternalImport * LookupMetaData(VMPTR_PEFile addressPEFile, bool &isILMetaDataForNGENImage);
-
- //
- // IAllocator interfaces
- //
- virtual void * Alloc(SIZE_T lenBytes) DAC_EMPTY_RET(NULL);
-
- virtual void Free(void * p) DAC_EMPTY();
-
- class InProcDataTarget :
- public ICorDebugMutableDataTarget
- {
- public:
- InProcDataTarget();
- virtual ~InProcDataTarget();
-
- // IUnknown.
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(
- REFIID riid,
- void** ppInterface);
-
- virtual ULONG STDMETHODCALLTYPE AddRef();
-
- virtual ULONG STDMETHODCALLTYPE Release();
-
- // ICorDebugMutableDataTarget.
- virtual HRESULT STDMETHODCALLTYPE GetPlatform(
- CorDebugPlatform *pPlatform);
-
- virtual HRESULT STDMETHODCALLTYPE ReadVirtual(
- CORDB_ADDRESS address,
- PBYTE pBuffer,
- ULONG32 request,
- ULONG32 *pcbRead);
-
- virtual HRESULT STDMETHODCALLTYPE WriteVirtual(
- CORDB_ADDRESS address,
- const BYTE * pBuffer,
- ULONG32 request);
-
- virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
- DWORD dwThreadID,
- ULONG32 contextFlags,
- ULONG32 contextSize,
- PBYTE context);
-
- virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
- DWORD dwThreadID,
- ULONG32 contextSize,
- const BYTE * context);
-
- virtual HRESULT STDMETHODCALLTYPE ContinueStatusChanged(
- DWORD dwThreadId,
- CORDB_CONTINUE_STATUS continueStatus);
-
- private:
- LONG m_ref; // Reference count.
- };
-
-
-
-private:
- //
- // InProcDac Fields
- //
- ReleaseHolder<InProcDataTarget> m_pDataTarget;
- HModuleHolder m_hDacModule;
-#ifndef DACCESS_COMPILE
- IDacDbiInterface * m_pDacDbi;
- DDUnpack * m_pUnpacker;
-#else
- VOID * m_pDacDbi;
- VOID * m_pUnpacker;
-#endif
-};
-
-
-#ifdef DACCESS_COMPILE
-// This method is a funny case for DAC and DacCop. InProcDac isn't used in DACCESS_COMPILE builds at all
-// (inprocdac.cpp isn't compiled in DAC builds), but we need the declaration since an instance
-// of it is contained by-value in the Debugger class (need to know the right size so field layout
-// matches the target). The LookupMetadata function is called from DAC, and so DacCop searches
-// for all implementations of it in mscordacwks.dll and find this one (the real one is either in
-// mscordbi.dll or coreclr which DacCop doesn't analyze). We need an implementation of virtual
-// methods for the DACCESS_COMPILE build, but rather than use the usual DAC_EMPTY macros we'll
-// use this explicit implementation here to avoid a DacCop violation.
-inline IMDInternalImport * InProcDac::LookupMetaData(VMPTR_PEFile addressPEFile, bool &isILMetaDataForNGENImage)
-{
- SUPPORTS_DAC; // not really - but we should never be called
- _ASSERTE_MSG(false, "This implementation should never be called in DAC builds");
- DacError(E_UNEXPECTED);
- return NULL;
-}
-#endif // DACCESS_COMPILE
-
-
-
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
-
-#endif //_INPROCDAC_H
diff --git a/src/debug/ee/rcthread.cpp b/src/debug/ee/rcthread.cpp
index 7e6f1ae304..896db99884 100644
--- a/src/debug/ee/rcthread.cpp
+++ b/src/debug/ee/rcthread.cpp
@@ -305,27 +305,21 @@ HRESULT DebuggerIPCControlBlock::Init(
m_bHostingInFiber = true;
}
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // Copy RSEA and RSER into the control block.
+ if (!m_rightSideEventAvailable.SetLocal(hRsea))
{
-#endif
- // Copy RSEA and RSER into the control block.
- if (!m_rightSideEventAvailable.SetLocal(hRsea))
- {
- ThrowLastError();
- }
+ ThrowLastError();
+ }
- if (!m_rightSideEventRead.SetLocal(hRser))
- {
- ThrowLastError();
- }
+ if (!m_rightSideEventRead.SetLocal(hRser))
+ {
+ ThrowLastError();
+ }
- if (!m_leftSideUnmanagedWaitEvent.SetLocal(hLsuwe))
- {
- ThrowLastError();
- }
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
+ if (!m_leftSideUnmanagedWaitEvent.SetLocal(hLsuwe))
+ {
+ ThrowLastError();
}
#endif // !FEATURE_DBGIPC_TRANSPORT_VM
@@ -420,78 +414,71 @@ HRESULT DebuggerRCThread::Init(void)
HRESULT hr;
#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
+
+ if (m_pDCB)
{
-#endif
- IPCHostSecurityAttributeHolder sa(GetCurrentProcessId());
+ hr = m_pDCB->Init(NULL, NULL, NULL, NULL, NULL);
+ _ASSERTE(SUCCEEDED(hr)); // throws on error.
+ }
+#else //FEATURE_DBGIPC_TRANSPORT_VM
- // Create the events that the thread will need to receive events
- // from the out of process piece on the right side.
- // We will not fail out if CreateEvent fails for RSEA or RSER. Because
- // the worst case is that debugger cannot attach to debuggee.
- //
- HandleHolder rightSideEventAvailable(WszCreateEvent(sa.GetHostSA(), (BOOL) kAutoResetEvent, FALSE, NULL));
+ IPCHostSecurityAttributeHolder sa(GetCurrentProcessId());
- // Security fix:
- // We need to check the last error to see if the event was precreated or not
- // If so, we need to release the handle right now.
- //
- dwStatus = GetLastError();
- if (dwStatus == ERROR_ALREADY_EXISTS)
- {
- // clean up the handle now
- rightSideEventAvailable.Clear();
- }
+ // Create the events that the thread will need to receive events
+ // from the out of process piece on the right side.
+ // We will not fail out if CreateEvent fails for RSEA or RSER. Because
+ // the worst case is that debugger cannot attach to debuggee.
+ //
+ HandleHolder rightSideEventAvailable(WszCreateEvent(sa.GetHostSA(), (BOOL) kAutoResetEvent, FALSE, NULL));
- HandleHolder rightSideEventRead(WszCreateEvent(sa.GetHostSA(), (BOOL) kAutoResetEvent, FALSE, NULL));
+ // Security fix:
+ // We need to check the last error to see if the event was precreated or not
+ // If so, we need to release the handle right now.
+ //
+ dwStatus = GetLastError();
+ if (dwStatus == ERROR_ALREADY_EXISTS)
+ {
+ // clean up the handle now
+ rightSideEventAvailable.Clear();
+ }
- // Security fix:
- // We need to check the last error to see if the event was precreated or not
- // If so, we need to release the handle right now.
- //
- dwStatus = GetLastError();
- if (dwStatus == ERROR_ALREADY_EXISTS)
- {
- // clean up the handle now
- rightSideEventRead.Clear();
- }
+ HandleHolder rightSideEventRead(WszCreateEvent(sa.GetHostSA(), (BOOL) kAutoResetEvent, FALSE, NULL));
+ // Security fix:
+ // We need to check the last error to see if the event was precreated or not
+ // If so, we need to release the handle right now.
+ //
+ dwStatus = GetLastError();
+ if (dwStatus == ERROR_ALREADY_EXISTS)
+ {
+ // clean up the handle now
+ rightSideEventRead.Clear();
+ }
- HandleHolder leftSideUnmanagedWaitEvent(CreateWin32EventOrThrow(NULL, kManualResetEvent, FALSE));
- // Copy RSEA and RSER into the control block only if shared memory is created without error.
- if (m_pDCB)
- {
- // Since Init() gets ownership of handles as soon as it's called, we can
- // release our ownership now.
- rightSideEventAvailable.SuppressRelease();
- rightSideEventRead.SuppressRelease();
- leftSideUnmanagedWaitEvent.SuppressRelease();
-
- // NOTE: initialization of the debugger control block occurs partly on the left side and partly on
- // the right side. This initialization occurs in parallel, so it's unsafe to make assumptions about
- // the order in which the fields will be initialized.
- hr = m_pDCB->Init(rightSideEventAvailable,
- rightSideEventRead,
- NULL,
- NULL,
- leftSideUnmanagedWaitEvent);
-
- _ASSERTE(SUCCEEDED(hr)); // throws on error.
- }
+ HandleHolder leftSideUnmanagedWaitEvent(CreateWin32EventOrThrow(NULL, kManualResetEvent, FALSE));
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
- else
+ // Copy RSEA and RSER into the control block only if shared memory is created without error.
+ if (m_pDCB)
{
- if (m_pDCB)
- {
- hr = m_pDCB->Init(NULL, NULL, NULL, NULL, NULL);
- _ASSERTE(SUCCEEDED(hr)); // throws on error.
- }
+ // Since Init() gets ownership of handles as soon as it's called, we can
+ // release our ownership now.
+ rightSideEventAvailable.SuppressRelease();
+ rightSideEventRead.SuppressRelease();
+ leftSideUnmanagedWaitEvent.SuppressRelease();
+
+ // NOTE: initialization of the debugger control block occurs partly on the left side and partly on
+ // the right side. This initialization occurs in parallel, so it's unsafe to make assumptions about
+ // the order in which the fields will be initialized.
+ hr = m_pDCB->Init(rightSideEventAvailable,
+ rightSideEventRead,
+ NULL,
+ NULL,
+ leftSideUnmanagedWaitEvent);
+
+ _ASSERTE(SUCCEEDED(hr)); // throws on error.
}
-#endif
+#endif //FEATURE_DBGIPC_TRANSPORT_VM
if(m_pDCB)
{
@@ -751,7 +738,7 @@ HRESULT DebuggerRCThread::SetupRuntimeOffsets(DebuggerIPCControlBlock * pDebugge
#if !defined(FEATURE_CORESYSTEM)
// Grab the address of RaiseException in kernel32 because we have to play some games with exceptions
// that are generated there (just another reason why mixed mode debugging is shady). See bug 476768.
- HMODULE hModule = WszGetModuleHandle(W("kernel32.dll"));
+ HMODULE hModule = WszGetModuleHandle(W("kernel32.dll"));
_ASSERTE(hModule != NULL);
PREFAST_ASSUME(hModule != NULL);
pDebuggerRuntimeOffsets->m_raiseExceptionAddr = GetProcAddress(hModule, "RaiseException");
@@ -1060,14 +1047,8 @@ void DebuggerRCThread::RightSideDetach(void)
{
_ASSERTE( m_fDetachRightSide == false );
m_fDetachRightSide = true;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
- {
-#endif
- CloseIPCHandles();
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ CloseIPCHandles();
#endif // !FEATURE_DBGIPC_TRANSPORT_VM
}
@@ -1127,53 +1108,40 @@ bool DebuggerRCThread::HandleRSEA()
LOG((LF_CORDB,LL_INFO10000, "RSEA from out of process (right side)\n"));
DebuggerIPCEvent * e;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
- {
-#endif
- // Make room for any Right Side event on the stack.
- BYTE buffer[CorDBIPC_BUFFER_SIZE];
- e = (DebuggerIPCEvent *) buffer;
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // Make room for any Right Side event on the stack.
+ BYTE buffer[CorDBIPC_BUFFER_SIZE];
+ e = (DebuggerIPCEvent *) buffer;
- // If the RSEA is signaled, then handle the event from the Right Side.
- memcpy(e, GetIPCEventReceiveBuffer(), CorDBIPC_BUFFER_SIZE);
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
- else
- {
- // Be sure to fetch the event into the official receive buffer since some event handlers assume it's there
- // regardless of the the event buffer pointer passed to them.
- e = GetIPCEventReceiveBuffer();
- g_pDbgTransport->GetNextEvent(e, CorDBIPC_BUFFER_SIZE);
- }
+ // If the RSEA is signaled, then handle the event from the Right Side.
+ memcpy(e, GetIPCEventReceiveBuffer(), CorDBIPC_BUFFER_SIZE);
+#else
+ // Be sure to fetch the event into the official receive buffer since some event handlers assume it's there
+ // regardless of the the event buffer pointer passed to them.
+ e = GetIPCEventReceiveBuffer();
+ g_pDbgTransport->GetNextEvent(e, CorDBIPC_BUFFER_SIZE);
#endif // !FEATURE_DBGIPC_TRANSPOPRT
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- if(!useTransport)
- {
-#endif
- // If no reply is required, then let the Right Side go since we've got a copy of the event now.
- _ASSERTE(!e->asyncSend || !e->replyRequired);
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // If no reply is required, then let the Right Side go since we've got a copy of the event now.
+ _ASSERTE(!e->asyncSend || !e->replyRequired);
- if (!e->replyRequired && !e->asyncSend)
- {
- LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: no reply required, letting Right Side go.\n"));
+ if (!e->replyRequired && !e->asyncSend)
+ {
+ LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: no reply required, letting Right Side go.\n"));
- BOOL succ = SetEvent(m_pDCB->m_rightSideEventRead);
+ BOOL succ = SetEvent(m_pDCB->m_rightSideEventRead);
- if (!succ)
- CORDBDebuggerSetUnrecoverableWin32Error(m_debugger, 0, true);
- }
+ if (!succ)
+ CORDBDebuggerSetUnrecoverableWin32Error(m_debugger, 0, true);
+ }
#ifdef LOGGING
- else if (e->asyncSend)
- LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: async send.\n"));
- else
- LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: reply required, holding Right Side...\n"));
+ else if (e->asyncSend)
+ LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: async send.\n"));
+ else
+ LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: reply required, holding Right Side...\n"));
#endif
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
+#endif // !FEATURE_DBGIPC_TRANSPORT_VM
// Pass the event to the debugger for handling. Returns true if the event was a Continue event and we can
// stop looking for stragglers. We wrap this whole thing in an exception handler to help us debug faults.
@@ -1227,18 +1195,10 @@ void DebuggerRCThread::MainLoop()
DWORD dwWaitTimeout = INFINITE;
rghWaitSet[DRCT_CONTROL_EVENT] = m_threadControlEvent;
rghWaitSet[DRCT_FAVORAVAIL] = GetFavorAvailableEvent();
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
- {
-#endif // !FEATURE_DBGIPC_TRANSPORT_VM
- rghWaitSet[DRCT_RSEA] = m_pDCB->m_rightSideEventAvailable;
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
- else
- {
- rghWaitSet[DRCT_RSEA] = g_pDbgTransport->GetIPCEventReadyEvent();
- }
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ rghWaitSet[DRCT_RSEA] = m_pDCB->m_rightSideEventAvailable;
+#else
+ rghWaitSet[DRCT_RSEA] = g_pDbgTransport->GetIPCEventReadyEvent();
#endif // !FEATURE_DBGIPC_TRANSPORT_VM
CONTRACT_VIOLATION(ThrowsViolation);// HndCreateHandle throws, and this loop is not backstopped by any EH
@@ -1251,38 +1211,28 @@ void DebuggerRCThread::MainLoop()
{
LOG((LF_CORDB, LL_INFO1000, "DRCT::ML: waiting for event.\n"));
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ // If there is a debugger attached, wait on its handle, too...
+ if ((cWaitCount == DRCT_COUNT_INITIAL) &&
+ m_pDCB->m_rightSideProcessHandle.ImportToLocalProcess() != NULL)
{
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
- // If there is a debugger attached, wait on its handle, too...
- if ((cWaitCount == DRCT_COUNT_INITIAL) &&
- m_pDCB->m_rightSideProcessHandle.ImportToLocalProcess() != NULL)
- {
- _ASSERTE((cWaitCount + 1) == DRCT_COUNT_FINAL);
- rghWaitSet[DRCT_DEBUGGER_EVENT] = m_pDCB->m_rightSideProcessHandle;
- cWaitCount = DRCT_COUNT_FINAL;
- }
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
+ _ASSERTE((cWaitCount + 1) == DRCT_COUNT_FINAL);
+ rghWaitSet[DRCT_DEBUGGER_EVENT] = m_pDCB->m_rightSideProcessHandle;
+ cWaitCount = DRCT_COUNT_FINAL;
}
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
+#endif // !FEATURE_DBGIPC_TRANSPORT_VM
+
if (m_fDetachRightSide)
{
m_fDetachRightSide = false;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- if(!useTransport)
- {
-#endif
- _ASSERTE(cWaitCount == DRCT_COUNT_FINAL);
- _ASSERTE((cWaitCount - 1) == DRCT_COUNT_INITIAL);
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ _ASSERTE(cWaitCount == DRCT_COUNT_FINAL);
+ _ASSERTE((cWaitCount - 1) == DRCT_COUNT_INITIAL);
- rghWaitSet[DRCT_DEBUGGER_EVENT] = NULL;
- cWaitCount = DRCT_COUNT_INITIAL;
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- }
+ rghWaitSet[DRCT_DEBUGGER_EVENT] = NULL;
+ cWaitCount = DRCT_COUNT_INITIAL;
#endif // !FEATURE_DBGIPC_TRANSPORT_VM
}
@@ -1491,18 +1441,10 @@ void DebuggerRCThread::TemporaryHelperThreadMainLoop()
DWORD dwWaitTimeout = INFINITE;
rghWaitSet[DRCT_CONTROL_EVENT] = m_threadControlEvent;
rghWaitSet[DRCT_FAVORAVAIL] = GetFavorAvailableEvent();
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
- {
-#endif
- rghWaitSet[DRCT_RSEA] = m_pDCB->m_rightSideEventAvailable;
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
- }
- else
- {
- rghWaitSet[DRCT_RSEA] = g_pDbgTransport->GetIPCEventReadyEvent();
- }
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ rghWaitSet[DRCT_RSEA] = m_pDCB->m_rightSideEventAvailable;
+#else //FEATURE_DBGIPC_TRANSPORT_VM
+ rghWaitSet[DRCT_RSEA] = g_pDbgTransport->GetIPCEventReadyEvent();
#endif // !FEATURE_DBGIPC_TRANSPORT_VM
CONTRACT_VIOLATION(ThrowsViolation);// HndCreateHandle throws, and this loop is not backstopped by any EH
@@ -2153,31 +2095,23 @@ HRESULT DebuggerRCThread::SendIPCReply()
IPCENames::GetName(event->type)));
#endif
-#if defined(FEATURE_DBGIPC_TRANSPORT_VM)
- DWORD useTransport = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_DbgUseTransport);
- if(!useTransport)
+#if !defined(FEATURE_DBGIPC_TRANSPORT_VM)
+ BOOL succ = SetEvent(m_pDCB->m_rightSideEventRead);
+ if (!succ)
{
-#endif
- BOOL succ = SetEvent(m_pDCB->m_rightSideEventRead);
- if (!succ)
- {
- hr = CORDBDebuggerSetUnrecoverableWin32Error(m_debugger, 0, false);
- }
-#ifdef FEATURE_DBGIPC_TRANSPORT_VM
+ hr = CORDBDebuggerSetUnrecoverableWin32Error(m_debugger, 0, false);
}
- else
+#else // !FEATURE_DBGIPC_TRANSPORT_VM
+ hr = g_pDbgTransport->SendEvent(GetIPCEventReceiveBuffer());
+ if (FAILED(hr))
{
- hr = g_pDbgTransport->SendEvent(GetIPCEventReceiveBuffer());
- if (FAILED(hr))
- {
- m_debugger->UnrecoverableError(hr,
- 0,
- __FILE__,
- __LINE__,
- false);
- }
+ m_debugger->UnrecoverableError(hr,
+ 0,
+ __FILE__,
+ __LINE__,
+ false);
}
-#endif // FEATURE_DBGIPC_TRANSPORT_VM
+#endif // !FEATURE_DBGIPC_TRANSPORT_VM
return hr;
}