共用方式為


呼叫擴充元件和擴充功能函式

若要載入延伸模組連結庫(或取得已載入擴充連結庫的句柄),請使用 AddExtension。 擴充連結庫可以使用 removeExtension 卸除。

您可以使用 CallExtension呼叫擴充命令。

擴充功能函式

延伸模組函式 是延伸模組連結庫所導出的函式。 它們可以使用任何函式原型,並使用 C 函式指標直接呼叫。

它們不是擴充命令,而且無法透過調試程式命令使用。 無法從遠端呼叫擴充函式;必須直接呼叫它們。 因此,無法從偵錯用戶端使用它們。 只有在客戶端對象位於主機引擎內時,才能呼叫它們 - 未從遠端偵錯或使用智慧型用戶端時。

擴展函數是透過名稱前加上「_EFN_」來識別在擴展庫內。

若要取得擴充函式的指標,請使用 GetExtensionFunction。 此函式指標的類型應該符合擴充函式的原型。 擴充函式現在可以如同 C 中的任何其他函式指標一樣呼叫。

範例

如果在延伸程式庫中包含下列擴充功能函式,並載入除錯器引擎:

HRESULT CALLBACK
_EFN_GetObject(IDebugClient * client, SomeObject * obj);

可以用來:

typedef ULONG (CALLBACK * GET_OBJECT)(IDebugClient * client, SomeObject * obj);



HRESULT status = S_OK;
GET_OBJECT extFn = NULL;
SomeObject myObj;

if (g_DebugControl->
        GetExtensionFunction(0,
                             "GetObject",
                             (FARPROC *) &extFn ) == S_OK &&
    extFn)
{
    status = (*extFn)(client, &myObj);
}