註冊自訂的偵錯引擎
偵錯引擎必須將自己註冊為類別處理站,遵循 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);
}