Rediger

DacpSyncBlockData Structure

Defines a transport buffer for sync block information.

Note

This API was originally designed for internal use in the runtime. Although it is now supported for 3rd party use, we recommend working with ICorDebug and ICorProfiler APIs when possible.

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

Member Description
Object The address of the object associated with the sync block.
bFree A value that indicates whether the sync block is free. If this member is set, no other fields are useful.
SyncBlockPointer The address of the sync block.
COMFlags Flags that describe COM interop data associated with the sync block.
MonitorHeld The number of times the monitor is held.
Recursion The monitor recursion count.
HoldingThread The address of the thread that holds the monitor.
AdditionalThreadCount The number of additional threads associated with the sync block.
appDomainPtr The address of the application domain associated with the sync block.
SyncBlockCount The number of sync blocks. Sync blocks can be requested from 1 through this value.
Request Populates the structure by calling ISOSDacInterface::GetSyncBlockData.

Remarks

This structure lives inside the runtime and is not exposed through any headers or library files. To use it, define the structure as specified above.

Requirements

Platforms: See System Requirements.
Header: None
Library: None
.NET Framework Versions: Available since 4.7

See also