Delen via


Het gebruiken van WdbgExts Extension Callbacks

Wanneer u een WdbgExts-extensie-DLL schrijft, kunt u bepaalde functies exporteren:

  • U moet een functie met de naam WinDbgExtensionDllInit exporteren. Wanneer het foutopsporingsprogramma uw extensie-DLL laadt, roept het eerst WinDbgExtensionDllInit aan en geeft het drie argumenten door.

    • Een aanwijzer naar een WINDBG_EXTENSION_APIS64 structuur, die aanwijzers bevat naar functies die worden geïmplementeerd door het foutopsporingsprogramma en die zijn gedeclareerd in Wdbgexts.h. U moet de hele structuur kopiëren naar een globale variabele die u in uw DLL maakt.
    • Een hoofdversienummer. U moet het primaire versienummer kopiëren naar een globale variabele die u in uw DLL maakt.
    • Een klein versienummer. U moet het secundaire versienummer kopiëren naar een globale variabele die u in uw DLL maakt.

    U kunt bijvoorbeeld globale variabelen maken met de naam ExtensionApis, SavedMajorVersion en SavedMinorVersion, zoals wordt weergegeven in het volgende voorbeeld.

    WINDBG_EXTENSION_APIS64 ExtensionApis;
    USHORT SavedMajorVersion;
    USHORT SavedMinorVersion;
    
    VOID WinDbgExtensionDllInit(PWINDBG_EXTENSION_APIS64 lpExtensionApis,
        USHORT MajorVersion, USHORT MinorVersion)
    {
       ExtensionApis = *lpExtensionApis;
       SavedMajorVersion = MajorVersion;
       SavedMinorVersion = MinorVersion;
        ...
    }
    
  • U moet een functie met de naam ExtensionApiVersion exporteren. Het foutopsporingsprogramma roept deze functie aan en verwacht een aanwijzer terug naar een EXT_API_VERSION-structuur die het versienummer van de extensie-DLL bevat. Het foutopsporingsprogramma gebruikt dit versienummer bij het uitvoeren van opdrachten zoals .chain en versie die het versienummer van de extensie weergeven.

  • U kunt desgewenst een functie met de naam CheckVersion exporteren. Het foutopsporingsprogramma roept deze routine aan telkens wanneer u een extensieopdracht gebruikt. U kunt dit gebruiken om waarschuwingen voor niet-overeenkomende versies af te drukken wanneer uw DLL een iets andere versie heeft dan het foutopsporingsprogramma, maar niet anders genoeg om te voorkomen dat deze wordt uitgevoerd.