IDL Interfaces Reference

Visual Studio’s extensibility APIs are defined in Interface Definition Language (IDL) files. This reference covers the key interface families.

IDL File Categories

CategoryFilesPurpose
Core Shellvsshell*.idlMain VS Shell interfaces
Text/Editorstextmgr*.idlText buffer/view management
Debuggingmsdbg*.idlDebug engine interfaces
Symbol Providerssh.idl, ee.idlSymbol handlers, expression evaluators
Source ControlIVsSccManager*.idlSCC integration

IVs* Interface Family

Hierarchy & Projects

InterfacePurpose
IVsHierarchyBase hierarchy interface for projects and items
IVsProjectProject management
IVsProjectFactoryProject creation
IVsHierarchyEventsHierarchy change notifications

Windows & UI

InterfacePurpose
IVsWindowFrameTool/document window frame
IVsWindowFrameNotifyWindow notifications
IVsUIShellUI shell services
IVsUIHierWinClipboardHelperClipboard operations

Text/Editor

InterfacePurpose
IVsTextBufferText storage
IVsTextViewText display/editing
IVsCodeWindowCode editor window
IVsColorizerSyntax highlighting
IVsLanguageInfoLanguage service info

Selection

InterfacePurpose
IVsMonitorSelectionSelection tracking
IVsMultiItemSelectMulti-selection support

Persistence

InterfacePurpose
IVsPersistSolutionOptsSolution options persistence
IVsPersistSolutionPropsSolution properties persistence
IVsSolutionPersistenceSolution save/load

IDebug* Interface Family

Core

InterfacePurpose
IDebugCoreServer2/3Debug server
IDebugSession2/3Debug session
IDebugEventCallback2Debug event notifications

Engine

InterfacePurpose
IDebugEngine2/3Debug engine

Process/Program

InterfacePurpose
IDebugProcess2Process management
IDebugProgram2Program debugging
IDebugProgramNode2Program tree node

Execution

InterfacePurpose
IDebugThread2/3Thread debugging
IDebugStackFrame2Stack frame inspection
IDebugCodeContext2Code location

Breakpoints

InterfacePurpose
IDebugBoundBreakpoint2Active breakpoint
IDebugPendingBreakpoint2Pending breakpoint
IDebugErrorBreakpoint2Failed breakpoint

VSITEMID Architecture

Special Item IDs

VSITEMID_NIL        = ((DWORD)-1)  // No nodes
VSITEMID_ROOT       = ((DWORD)-2)  // Hierarchy root
VSITEMID_SELECTION  = ((DWORD)-3)  // Selected items

Nodes are identified by VSITEMID + IVsHierarchy interface pairs. Nodes are NOT COM objects themselves - they use opaque cookies.

Language GUIDs

guidCLang          // C language
guidCPPLang        // C++ language
guidVBLang         // VB.NET language
guidCSharpLang     // C# language (implicit)
guidFSharpLang     // F# language
guidSQLLang        // SQL language
guidJScriptLang    // JScript language
guidVBScriptLang   // VBScript language

Debug Engine GUIDs

guidNativeOnlyEng           // Native-only engine
guidCOMPlusOnlyEng          // Managed-only engine
guidCOMPlusNativeEng        // Mixed-mode engine
guidScriptEng               // Script engine
guidSQLEng                  // SQL engine
guidCoreSystemClrEng        // Core CLR engine

Property Filters (IDebugProperty2)

guidFilterLocals              // Local variables
guidFilterAllLocals           // All locals
guidFilterArgs                // Function arguments
guidFilterLocalsPlusArgs      // Locals and arguments
guidFilterRegisters           // CPU registers
guidFilterThis                // 'this' pointer

Error Codes

Edit & Continue

CodeName
0x80044001E_ENC_REBUILD_FAIL
0x80044002E_ENC_COMMIT_FAIL
0x80044003E_ENC_APPLY_FAIL
0x80044004E_ENC_INTERNAL_ERROR

Text Buffer

CodeName
0x80044001BUFFER_E_READONLY
0x80044002BUFFER_E_READONLY_REGION
0x80044003BUFFER_E_TIMEOUT
0x80044004BUFFER_E_LOCKED
0x80044005BUFFER_E_SCC_READONLY

Text View

CodeName
0x80044201VIEW_E_NO_BOOKMARKS
0x80044202VIEW_E_NO_DEBUGGER
0x80044204VIEW_E_USERREADONLY
0x80044205VIEW_E_LOCATION_HIDDEN

Version Numbering

IDL files use version numbers mapping to VS releases:

VersionVisual Studio
80VS 2005
90VS 2008
100VS 2010
110VS 2012
120VS 2013
140VS 2015
150VS 2017
160VS 2019
170VS 2022