Draft
Conversation
Contributor
|
Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag |
…ignature Co-authored-by: rcj1 <77995559+rcj1@users.noreply.github.com>
…tCCWData from existing APIs Co-authored-by: rcj1 <77995559+rcj1@users.noreply.github.com>
…n GetCCWInterfaces Co-authored-by: rcj1 <77995559+rcj1@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Implement cDAC SosDac API GetCCWData
Implement cDAC SosDac API GetCCWData
Mar 7, 2026
…CCW APIs Co-authored-by: rcj1 <77995559+rcj1@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements
ISOSDacInterface::GetCCWDatain the cDAC managed layer. The contract surface exposes fine-grained CCW predicates;SOSDacImplassemblesDacpCCWDataby composing them directly rather than delegating to a single aggregate contract method.Contract surface (
IBuiltInCOM/BuiltInCOM_1)New predicate methods (grouped with
GetRefCount/IsHandleWeak):IsNeutered—CLEANUP_SENTINELbit in raw ref countIsExtendsCOMObject—IsExtendsComflag onSimpleComCallWrapperIsAggregated—IsAggregatedflag onSimpleComCallWrapperNew scalar accessors:
GetCCWAddress(ccw)— navigates to start wrapper viaSimpleWrapper→MainWrapper(mirrors C++GetStartWrapper); any wrapper in the chain is acceptedGetCCWHandle(ccw)— GC object handle (m_ppThis) from the start wrapperGetOuterIUnknown(ccw)— outerIUnknown(m_pOuter) from the sharedSimpleComCallWrapperGetCCWInterfacesreuses the sameNavigateToStartWrapperhelper.Data descriptors
Two new fields exposed via
cdac_data<>,datadescriptor.inc, and managedData/classes:ComCallWrapper.Handle(m_ppThis)SimpleComCallWrapper.OuterIUnknown(m_pOuter)Legacy layer (
SOSDacImpl)GetCCWDatasignature changed fromvoid* datato typedDacpCCWData* data. Implementation composes the struct from individual contract calls:Tests
IsNeutered,IsAggregated,IsExtendsCOMObject,GetCCWAddress(including non-start wrapper navigation),GetCCWHandle(value and null),GetOuterIUnknown(value and zero)SOSDacImpl.GetCCWDatapath against live CCWs🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.