共用方式為


註冊自訂的偵錯引擎

偵錯引擎必須將自己註冊為類別處理站,遵循 COM 慣例,以及透過 Visual Studio 登錄子機碼向 Visual Studio 註冊。

注意

您可以在 TextInterpreter 範例中找到如何註冊偵錯引擎的範例,這已建置為教學課程:使用 ATL COM 建置偵錯引擎的一部分。

DLL 伺服器流程

偵錯引擎通常會在自己的 DLL 中設定為 COM 伺服器。 因此,偵錯引擎必須先向 COM 註冊其類別處理站的 CLSID,Visual Studio 才能存取它。 然後,偵錯引擎必須向 Visual Studio 註冊它自己,才能建立偵錯引擎所支援的任何屬性 (也稱為計量)。 寫入 Visual Studio 登錄子機碼的計量選擇取決於偵錯引擎支援的功能。

適用於偵錯的 SDK 協助程式不僅描述註冊偵錯引擎所需的登錄位置;也會描述 dbgmetric.lib 程式庫,其中包含一些適用於 C++ 開發人員的實用函式和宣告,讓操作登錄變得更容易。

範例

下列範例 (來自 TextInterpreter 範例) 說明如何使用 SetMetric 函式 (來自 dbgmetric.lib),向 Visual Studio 註冊偵錯引擎。 傳遞的計量也會定義在 dbgmetric.lib 中。

注意

TextInterpreter 是基本的偵錯引擎;它未設定 (因此不會註冊) 任何其他功能。 更完整的偵錯引擎會有 SetMetric 呼叫或其對等項的完整清單,對於偵錯引擎支援的每個功能各有一個。

// Define base registry subkey to Visual Studio.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0";

HRESULT CTextInterpreterModule::RegisterServer(BOOL bRegTypeLib, const CLSID * pCLSID)
{
    SetMetric(metrictypeEngine, __uuidof(Engine), metricName, L"Text File", false, strRegistrationRoot);
    SetMetric(metrictypeEngine, __uuidof(Engine), metricCLSID, CLSID_Engine, false, strRegistrationRoot);
    SetMetric(metrictypeEngine, __uuidof(Engine), metricProgramProvider, CLSID_MsProgramProvider, false, strRegistrationRoot);

    return base::RegisterServer(bRegTypeLib, pCLSID);
}