呼叫擴充元件和擴充功能函式
若要載入延伸模組連結庫(或取得已載入擴充連結庫的句柄),請使用 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);
}