Click to Rate and Give Feedback

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
Visual Studio SDK
IDebugProgramProvider2

Updated: November 2007

This registered interface allows the session debug manager (SDM) to obtain information about programs that have been "published" through the IDebugProgramPublisher2 interface.

IDebugProgramProvider2 : IUnknown

The debug engine (DE) implements this interface to provide information about programs being debugged. This interface is registered in the DE section of the registry using the metric metricProgramProvider, as described in Debugger SDK Helpers.

Call COM's CoCreateInstance function with the CLSID of the program provider that is obtained from the registry. See the Example.

Method

Description

IDebugProgramProvider2::GetProviderProcessData

Obtains information about programs running, filtered in a variety of ways.

IDebugProgramProvider2::GetProviderProgramNode

Gets a program node, given a specific process ID.

IDebugProgramProvider2::WatchForProviderEvents

Establishes a callback to watch for provider events associated with specific kinds of processes.

IDebugProgramProvider2::SetLocale

Establishes a locale for any language-specific resources needed by the DE.

Normally, a process uses this interface to find out about the programs running in that process.

Header: msdbg.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Visual C++
IDebugProgramProvider2 *GetProgramProvider(GUID *pDebugEngineGuid)
{
    // This is typically defined globally.  For this example, it is
    // defined here.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
    IDebugProgramProvider2 *pProvider = NULL;
    if (pDebugEngineGuid != NULL) {
        CLSID clsidProvider = { 0 };
        ::GetMetric(NULL,
                    metrictypeEngine,
                    *pDebugEngineGuid,
                    metricProgramProvider,
                    &clsidProvider,
                    strRegistrationRoot);
        if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
            CComPtr<IDebugProgramProvider2> spProgramProvider;
            spProgramProvider.CoCreateInstance(clsidProvider);
            if (spProgramProvider != NULL) {
                pProvider = spProgramProvider.Detach();
            }
        }
    }
    return(pProvider);
}
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker