共用方式為


使用 WdbgExts 擴充功能回呼

當您撰寫 WdbgExts 擴充 DLL 時,可以匯出特定函式:

  • 您必須匯出名為 WinDbgExtensionDllInit 的函式。 當偵錯工具載入擴充 DLL 時,它會先呼叫 WinDbgExtensionDllInit ,並傳遞三個引數。

    • WINDBG_EXTENSION_APIS64結構的指標,其中包含偵錯工具實作並在 Wdbgexts.h 中宣告之函式的指標。 您必須將整個結構複製到您在 DLL 中建立的全域變數。
    • 主要版本號碼。 您必須將主要版本號碼複製到您在 DLL 中建立的全域變數。
    • 次要版本號碼。 您必須將次要版本號碼複製到您在 DLL 中建立的全域變數。

    例如,您可以建立名為 ExtensionApis、SavedMajorVersion 和 SavedMinorVersion 的全域變數,如下列範例所示。

    WINDBG_EXTENSION_APIS64 ExtensionApis;
    USHORT SavedMajorVersion;
    USHORT SavedMinorVersion;
    
    VOID WinDbgExtensionDllInit(PWINDBG_EXTENSION_APIS64 lpExtensionApis,
        USHORT MajorVersion, USHORT MinorVersion)
    {
       ExtensionApis = *lpExtensionApis;
       SavedMajorVersion = MajorVersion;
       SavedMinorVersion = MinorVersion;
        ...
    }
    
  • 您必須匯出名為 ExtensionApiVersion 的函式。 偵錯工具會呼叫此函式,並預期會傳回包含擴充 DLL 版本號碼 之EXT_API_VERSION 結構的指標。 偵錯工具在執行 .chain 和顯示擴充功能 版本 號碼的命令時,會使用此版本號碼。

  • 您可以選擇性地匯出名為 CheckVersion的函式。 每次您使用擴充功能命令時,偵錯工具都會呼叫這個常式。 當您的 DLL 版本與偵錯工具稍有不同,但不足以防止它執行時,您可以使用這個方法列印出版本不相符的警告。