Skip to content

Document ISOSDacInterface private DAC APIs used by ClrMD - #55194

Open
leculver wants to merge 3 commits into
dotnet:mainfrom
leculver:docs/clrmd-dac-private-apis
Open

Document ISOSDacInterface private DAC APIs used by ClrMD#55194
leculver wants to merge 3 commits into
dotnet:mainfrom
leculver:docs/clrmd-dac-private-apis

Conversation

@leculver

@leculver leculver commented Jul 30, 2026

Copy link
Copy Markdown

Adds reference documentation for the private DAC (mscordacwks.dll) APIs that ClrMD consumes on the desktop .NET Framework surface, so that consumers of ClrMD can be assured every API it takes a dependency on is either documented, or open source.

All new pages follow the existing IXCLRData* style, include the prefer-ICorDebug (DBI) recommended note, and carry ai-usage: ai-assisted frontmatter per repo guidance.


Internal previews

Toggle expand/collapse
File Preview link
docs/framework/unmanaged-api/debugging/dacpappdomaindata-structure.md docs/framework/unmanaged-api/debugging/dacpappdomaindata-structure
docs/framework/unmanaged-api/debugging/dacpappdomainstoredata-structure.md docs/framework/unmanaged-api/debugging/dacpappdomainstoredata-structure
docs/framework/unmanaged-api/debugging/dacpassemblydata-structure.md docs/framework/unmanaged-api/debugging/dacpassemblydata-structure
docs/framework/unmanaged-api/debugging/dacpccwdata-structure.md docs/framework/unmanaged-api/debugging/dacpccwdata-structure
docs/framework/unmanaged-api/debugging/dacpcodeheaderdata-structure.md docs/framework/unmanaged-api/debugging/dacpcodeheaderdata-structure
docs/framework/unmanaged-api/debugging/dacpcominterfacepointerdata-structure.md docs/framework/unmanaged-api/debugging/dacpcominterfacepointerdata-structure
docs/framework/unmanaged-api/debugging/dacpdomainlocalmoduledata-structure.md docs/framework/unmanaged-api/debugging/dacpdomainlocalmoduledata-structure
docs/framework/unmanaged-api/debugging/dacpfielddescdata-structure.md docs/framework/unmanaged-api/debugging/dacpfielddescdata-structure
docs/framework/unmanaged-api/debugging/dacpgcheapanalyzedata-structure.md docs/framework/unmanaged-api/debugging/dacpgcheapanalyzedata-structure
docs/framework/unmanaged-api/debugging/dacpgcheapdata-structure.md docs/framework/unmanaged-api/debugging/dacpgcheapdata-structure
docs/framework/unmanaged-api/debugging/dacpgcheapdetails-structure.md docs/framework/unmanaged-api/debugging/dacpgcheapdetails-structure
docs/framework/unmanaged-api/debugging/dacpgenerationdata-structure.md docs/framework/unmanaged-api/debugging/dacpgenerationdata-structure
docs/framework/unmanaged-api/debugging/dacpheapsegmentdata-structure.md docs/framework/unmanaged-api/debugging/dacpheapsegmentdata-structure
docs/framework/unmanaged-api/debugging/dacpjitcodeheapinfo-structure.md docs/framework/unmanaged-api/debugging/dacpjitcodeheapinfo-structure
docs/framework/unmanaged-api/debugging/dacpjitmanagerinfo-structure.md docs/framework/unmanaged-api/debugging/dacpjitmanagerinfo-structure
docs/framework/unmanaged-api/debugging/dacpmethodtabledata-structure.md docs/framework/unmanaged-api/debugging/dacpmethodtabledata-structure
docs/framework/unmanaged-api/debugging/dacpmethodtablefielddata-structure.md docs/framework/unmanaged-api/debugging/dacpmethodtablefielddata-structure
docs/framework/unmanaged-api/debugging/dacpobjectdata-structure.md docs/framework/unmanaged-api/debugging/dacpobjectdata-structure
docs/framework/unmanaged-api/debugging/dacpobjecttype-enumeration.md docs/framework/unmanaged-api/debugging/dacpobjecttype-enumeration
docs/framework/unmanaged-api/debugging/dacpoomdata-structure.md docs/framework/unmanaged-api/debugging/dacpoomdata-structure
docs/framework/unmanaged-api/debugging/dacprcwdata-structure.md docs/framework/unmanaged-api/debugging/dacprcwdata-structure
docs/framework/unmanaged-api/debugging/dacpsyncblockcleanupdata-structure.md docs/framework/unmanaged-api/debugging/dacpsyncblockcleanupdata-structure
docs/framework/unmanaged-api/debugging/dacpsyncblockdata-structure.md docs/framework/unmanaged-api/debugging/dacpsyncblockdata-structure
docs/framework/unmanaged-api/debugging/dacpthreaddata-structure.md docs/framework/unmanaged-api/debugging/dacpthreaddata-structure
docs/framework/unmanaged-api/debugging/dacpthreadlocalmoduledata-structure.md docs/framework/unmanaged-api/debugging/dacpthreadlocalmoduledata-structure
docs/framework/unmanaged-api/debugging/dacpthreadpooldata-structure.md docs/framework/unmanaged-api/debugging/dacpthreadpooldata-structure
docs/framework/unmanaged-api/debugging/dacpthreadstoredata-structure.md docs/framework/unmanaged-api/debugging/dacpthreadstoredata-structure
docs/framework/unmanaged-api/debugging/dacpusefulglobalsdata-structure.md docs/framework/unmanaged-api/debugging/dacpusefulglobalsdata-structure
docs/framework/unmanaged-api/debugging/dacpworkrequestdata-structure.md docs/framework/unmanaged-api/debugging/dacpworkrequestdata-structure
docs/framework/unmanaged-api/debugging/debugging-enumerations.md docs/framework/unmanaged-api/debugging/debugging-enumerations

Note

This table shows the first 30 preview links (sorted alphabetically by file path) found in the OPS build report. For the full list, select OpenPublishing.Build Details within checks.

Adds reference documentation for the private DAC (mscordacwks.dll) APIs that
ClrMD consumes on the desktop .NET Framework surface, so that consumers such as
Visual Studio can rely on documented interfaces.

- 52 new ISOSDacInterface method pages (the subset ClrMD calls)
- 28 new Dacp* structure pages and 3 enumeration pages referenced by those methods
- Fills 3 IXCLRData* gaps missed by dotnet#41675: IXCLRDataProcess::Flush,
  IXCLRDataModule::GetName, IXCLRDataStackWalk::GetContext
- Expands the ISOSDacInterface interface method table, updates the debugging
  structures/enumerations indexes and the affected IXCLRData* interface pages,
  and registers every new page in toc.yml

All new pages follow the existing IXCLRData* style, include the
prefer-ICorDebug (DBI) recommended note, and carry ai-usage: ai-assisted
frontmatter per repo guidance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 81f6c22d-7539-4637-9117-2454688f8441
Copilot AI review requested due to automatic review settings July 30, 2026 16:25
@leculver
leculver requested a review from a team as a code owner July 30, 2026 16:25
@dotnetrepoman dotnetrepoman Bot added this to the July 2026 milestone Jul 30, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new unmanaged debugging API reference documentation for additional SOS DAC (ISOSDacInterface) methods and related transport structures/enumerations, and wires them into the debugging docs navigation.

Changes:

  • Added new API reference pages for multiple ISOSDacInterface, IXCLRDataProcess, IXCLRDataModule, and IXCLRDataStackWalk methods.
  • Added new DAC transport structures/enumerations docs (for GC, threads, domain/module data, RCW/CCW, etc.).
  • Updated TOC and enumeration/structure index pages to include the new topics.
Show a summary per file
File Description
docs/framework/unmanaged-api/debugging/toc.yml Adds TOC entries for the newly documented methods/structures/enumerations.
docs/framework/unmanaged-api/debugging/isosdacinterface-interface.md Expands method listing to link to newly added method reference pages.
docs/framework/unmanaged-api/debugging/debugging-structures.md Adds links/descriptions for newly added DAC transport structures.
docs/framework/unmanaged-api/debugging/debugging-enumerations.md Adds links/descriptions for newly added enumerations.
docs/framework/unmanaged-api/debugging/*.md (new) Adds per-method / per-structure / per-enumeration API reference pages.

Copilot's findings

Comments suppressed due to low confidence (3)

docs/framework/unmanaged-api/debugging/vcsheaptype-enumeration.md:1

  • The C/C++ enum typedef syntax is invalid as written (it’s missing the typedef name after the closing brace). Update the snippet to a valid form, e.g. typedef enum VCSHeapType { ... } VCSHeapType; or enum VCSHeapType { ... };, so readers can compile it as instructed.
    docs/framework/unmanaged-api/debugging/modulemaptype-enumeration.md:1
  • This typedef enum declaration is also invalid C/C++ syntax (missing the typedef name after the closing brace). Please change it to a compilable declaration (same options as above) to match the guidance “define the enumeration as specified above.”
    docs/framework/unmanaged-api/debugging/ixclrdatastackwalk-getcontext-method.md:1
  • Front-matter metadata keys are inconsistent across the new docs in this PR: some pages use api_name / api_location / api_type and f1_keywords / helpviewer_keywords, while these method pages use dotted keys like api.name and f1.keywords. Align these keys with the schema used elsewhere in this doc set to avoid broken indexing/search/validation during doc build.
  • Files reviewed: 93/93 changed files
  • Comments generated: 5

Comment thread docs/framework/unmanaged-api/debugging/dacpthreadlocalmoduledata-structure.md Outdated
Comment thread docs/framework/unmanaged-api/debugging/dacpfielddescdata-structure.md Outdated
Comment thread docs/framework/unmanaged-api/debugging/dacpgcheapdetails-structure.md Outdated
Comment thread docs/framework/unmanaged-api/debugging/dacpthreadpooldata-structure.md Outdated
leculver and others added 2 commits July 30, 2026 13:02
- Resolve markdownlint failures (MD012 multiple blank lines, MD010 hard tabs)
- Fix invalid C++ enum syntax in modulemaptype/vcsheaptype (add trailing typedef name)
- Correct copied source-comment issues: "disply"->"display" (DacpFieldDescData),
  "DacpGcHeapDat"->"DacpGcHeapData" (DacpGcHeapDetails), remove internal TODO
  (DacpThreadpoolData), reconcile Request-helper comments (DacpThreadLocalModuleData,
  DacpDomainLocalModuleData)
- Document ISOSDacInterface::GetDomainLocalModuleData (referenced by DacpDomainLocalModuleData's
  Request helper) and wire it into the interface table and TOC

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 81f6c22d-7539-4637-9117-2454688f8441
…e pages

Adds "See also" cross-links between sibling methods within the same API family
(MethodDesc, MethodTable, AppDomain/Assembly, Thread, Module, GC heap, OOM,
heap-analyze, JIT/code, thread pool, domain/thread-local storage, RCW/CCW,
handles/roots, sync block, loader heaps, and the IXCLRDataStackWalk/Module
gap-fill methods), matching the prevailing convention in the existing
IXCLRData* documentation. 126 cross-links across 50 pages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 81f6c22d-7539-4637-9117-2454688f8441

@tommcdon tommcdon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants