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

若要載入延伸模組程式庫 (或取得已載入延伸模組程式庫) 的控制碼,請使用 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);
}