DacpRCWData 结构

为运行时可调用包装器(RCW)信息定义传输缓冲区。

Note

此 API 最初旨在供运行时内部使用。 尽管现在支持第三方使用,但我们建议尽量使用 ICorDebugICorProfiler API。

Syntax

struct DacpRCWData : ZeroInit<DacpRCWData>
{
    CLRDATA_ADDRESS identityPointer;
    CLRDATA_ADDRESS unknownPointer;
    CLRDATA_ADDRESS managedObject;
    CLRDATA_ADDRESS jupiterObject;
    CLRDATA_ADDRESS vtablePtr;
    CLRDATA_ADDRESS creatorThread;
    CLRDATA_ADDRESS ctxCookie;
    
    LONG refCount;
    LONG interfaceCount;

    BOOL isJupiterObject;
    BOOL supportsIInspectable;
    BOOL isAggregated;
    BOOL isContained;
    BOOL isFreeThreaded;
    BOOL isDisconnected;
    
    HRESULT Request(ISOSDacInterface *sos, CLRDATA_ADDRESS rcw)
    {
        return sos->GetRCWData(rcw, this);
    }

    HRESULT IsDCOMProxy(ISOSDacInterface *sos, CLRDATA_ADDRESS rcw, BOOL* isDCOMProxy)
    {
        ISOSDacInterface2 *pSOS2 = nullptr;
        HRESULT hr = sos->QueryInterface(__uuidof(ISOSDacInterface2), reinterpret_cast<LPVOID*>(&pSOS2));
        if (SUCCEEDED(hr))
        {
            hr = pSOS2->IsRCWDCOMProxy(rcw, isDCOMProxy);
            pSOS2->Release();
        }

        return hr;
    }
};

Members

成员 说明
identityPointer COM 标识指针的地址。
unknownPointer 指针的 IUnknown 地址。
managedObject 与 RCW 关联的托管对象的地址。
jupiterObject 关联的木星对象的地址。
vtablePtr vtable 指针的地址。
creatorThread 创建 RCW 的线程的地址。
ctxCookie RCW 的上下文 Cookie。
refCount RCW 的引用计数。
interfaceCount 与 RCW 关联的接口数。
isJupiterObject 一个值,该值指示 RCW 是否表示木星对象。
supportsIInspectable 一个值,该值指示 RCW 是否支持 IInspectable
isAggregated 一个值,该值指示 RCW 是否聚合。
isContained 一个值,该值指示是否包含 RCW。
isFreeThreaded 一个值,该值指示 RCW 是否为自由线程。
isDisconnected 一个值,该值指示 RCW 是否已断开连接。
Request 通过调用 ISOSDacInterface::GetRCWData填充结构。
IsDCOMProxy 当该接口可用时,确定 RCW 是否是 ISOSDacInterface2::IsRCWDCOMProxyDCOM 代理。

Remarks

此结构位于运行时内,不会通过任何标头或库文件公开。 若要使用它,请定义上面指定的结构。

要求

平台:请参阅系统要求
页眉: 没有
图书馆: 没有
.NET Framework 版本:自 4.7 起可用

另见