DacpSyncBlockData 结构

定义同步块信息的传输缓冲区。

Note

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

Syntax

struct DacpSyncBlockData : ZeroInit<DacpSyncBlockData>
{        
    CLRDATA_ADDRESS Object;
    BOOL            bFree; // if set, no other fields are useful
    
    // fields below provide data from this, so it's just for display
    CLRDATA_ADDRESS SyncBlockPointer;
    DWORD           COMFlags;
    UINT            MonitorHeld;
    UINT            Recursion;
    CLRDATA_ADDRESS HoldingThread;
    UINT            AdditionalThreadCount;
    CLRDATA_ADDRESS appDomainPtr;
    
    // SyncBlockCount will always be filled in with the number of SyncBlocks.
    // SyncBlocks may be requested from [1,SyncBlockCount]
    UINT            SyncBlockCount;

    // SyncBlockNumber must be from [1,SyncBlockCount]    
    // If there are no SyncBlocks, a call to Request with SyncBlockCount = 1
    // will return E_FAIL.
    HRESULT Request(ISOSDacInterface *sos, UINT SyncBlockNumber)
    {
        return sos->GetSyncBlockData(SyncBlockNumber, this);
    }
};

Members

成员 说明
Object 与同步块关联的对象的地址。
bFree 一个值,该值指示同步块是否可用。 如果设置了此成员,则没有其他字段很有用。
SyncBlockPointer 同步块的地址。
COMFlags 描述与同步块关联的 COM 互操作数据的标志。
MonitorHeld 监视的保留次数。
Recursion 监视器递归计数。
HoldingThread 保存监视器的线程的地址。
AdditionalThreadCount 与同步块关联的其他线程数。
appDomainPtr 与同步块关联的应用程序域的地址。
SyncBlockCount 同步块数。 可以通过此值从 1 请求同步块。
Request 通过调用 ISOSDacInterface::GetSyncBlockData填充结构。

Remarks

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

要求

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

另见