如需與調試程式引擎互動中客戶端物件角色的概觀,請參閱 客戶端物件。
一般而言,用戶端的方法只能從建立用戶端的線程呼叫。 一般而言,從錯誤線程呼叫的方法會立即失敗。 此規則值得注意的例外狀況是 CreateClient 方法;這個方法可以從任何線程呼叫,並傳回可在呼叫該線程的線程中使用的新用戶端。 參考區段中會記錄其他例外狀況。
描述客戶端物件的字串是由 GetIdentity 方法傳回,或者可以使用 OutputIdentity 寫入引擎的輸出數據流。
COM 介面
偵錯引擎 API 包含數個類似 COM 的介面,它們會實作 IUnknown 介面。
用戶端會實作偵錯 引擎介面 一節中所述的介面(但不一定是在最新版本)。 您可以使用 COM 方法 IUnknown::QueryInterface ,從任何其他介面取得這些介面。
用戶端會實作 IUnknown COM 介面,並使用它來維護參考計數和介面選取。 不過,用戶端不是已註冊的 COM 物件。 IUnknown::AddRef 方法用來遞增對象的參考計數,而 IUnknown::Release 方法則用來遞減參考計數。 呼叫 IUnknown::QueryInterface 時,會遞增參考計數,因此當不再需要用戶端介面指標時,應該呼叫 IUnknown::Release 來遞減參考計數。
當使用 DebugCreate 或 DebugConnect建立客戶端物件時,參考計數將會初始化為一個。
如需何時應遞增和遞減參考計數的詳細資訊,請參閱平臺 SDK。
IUnknown::QueryInterface、 DebugCreate 和 DebugConnect 會採用介面標識符作為其其中一個自變數。 您可以使用 __uuidof 運算符來取得此介面識別碼。 例如:
IDebugClient * debugClient;
HRESULT Hr = DebugCreate( __uuidof(IDebugClient), (void **)&debugClient );
重要 IDebug* 介面,例如 IDebugEventCallbacks 介面,雖然 COM 類似,但不是適當的 COM API。 從受控程式碼呼叫這些介面是不受支援的情況。 使用 Managed 程式代碼呼叫介面時,如垃圾收集與線程擁有權等問題,會導致系統不穩定。