Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
SetupAPI-loggning stöder en mekanism som upprättar en loggkontext för en tråd. Den här kontexten upprättas genom att ange en loggtoken för tråden. SetupAPI tillhandahåller den här mekanismen så att kod som anropas av en tråd kan skriva loggposter till loggkontexten för den anropande tråden.
En tråd kan till exempel ange en loggtoken för loggkontexten innan den anropar ett klassinstallationsprogram eller ett saminstallationsprogram. Installationsprogrammet kan i sin tur hämta den anropande trådens loggtoken och använda den token för att skriva loggposter i textloggen och avsnittet som är associerat med den anropande trådens loggkontext.
Ange en loggtoken för en tråd
Funktionen SetupSetThreadLogToken ställer in en loggtoken för den tråd som funktionen anropades från. Loggtoken kan antingen vara en systemdefinierad loggtoken eller en loggtoken som hämtades genom att anropa SetupGetThreadLogToken.
Följande är exempel på hur en loggkontext kan upprättas för en tråd:
Ett installationsprogram kan anropa SetupSetThreadLogToken för att upprätta en loggkontext för annan installationskod som körs i samma tråd. När den upprättar loggkontexten för tråden bör programmet använda en systemdefinierad loggtoken, till exempel LOGTOKEN_SETUPAPI_APPLOG, i anropet till SetupSetThreadLogToken.
Obs! Om loggkontexten anges med hjälp av en systemdefinierad loggtoken skriver efterföljande anrop till en SetupAPI-loggfunktion som görs från den loggkontexten loggposter till installationstextloggen, som inte ingår i ett textloggavsnitt.
Om ett klassinstallationsprogram eller saminstallationsprogram startar en ny tråd kan installationsprogrammet ange att loggkontexten för tråden ska vara samma som den överordnade tråden. Detta görs på följande sätt:
- Innan den överordnade tråden startar den nya tråden hämtas den aktuella loggtoken genom att anropa SetupGetThreadLogToken.
- Den överordnade tråden startar den nya tråden och skickar den aktuella loggtoken via en implementeringsspecifik metod, till exempel att spara token i en global variabel.
- Den nya tråden anropar SetupSetThreadLogToken med den aktuella loggtoken. Därför "ärver" den nya tråden loggkontexten för den överordnade tråden.
Obs! Om en tråd i ett klassinstallationsprogram eller saminstallationsprogram anger loggkontexten med den här metoden anropas efterföljande anrop till en SetupAPI-loggfunktion som görs från loggkontextens skrivloggposter till installationstextloggen som kan ingå i ett textloggavsnitt. Detta inträffar bara om ett textloggavsnitt har upprättats av installationsåtgärden SetupAPI som anropade installationsprogrammet.
Följande är ett exempel på ett anrop till SetupSetThreadLogToken som anger loggkontexten för den aktuella tråden till enhetsinstallationens textlogg (SetupAPI.app.log) genom att ange den systemdefinierade loggtoken för LOGTOKEN_SETUPAPI_APPLOG. Ett efterföljande anrop till en SetupAPI-loggfunktion som använder den här loggkontexten skulle skriva loggposten till enhetsinstallationens textlogg, men inte som en del av ett textloggavsnitt.
SP_LOG_TOKEN LogToken = LOGTOKEN_SETUPAPI_APPLOG;
SetupSetThreadLogToken(LogToken);
Hämta en loggtoken för en tråd
Funktionen SetupGetThreadLogToken hämtar en loggtoken för den tråd som den här funktionen anropades från.
Ett klassinstallationsprogram kan till exempel anropa SetupGetThreadLogToken för att hämta loggtoken som gäller för den SetupAPI-åtgärd som kallade klassinstallationsprogrammet. Klassinstallationsprogrammet kan sedan använda den här hämtade loggtoken för att logga poster i textloggen som gäller för motsvarande SetupAPI-åtgärd.
Obs! Om loggkontexten för en tråd inte tidigare har angetts av ett anrop till SetupSetThreadLogToken returnerar ett anrop till SetupGetThreadLogToken en loggtoken med värdet LOGTOKEN_UNSPECIFIED.
Följande är ett exempel på ett anrop till SetupGetThreadLogToken som hämtar loggtoken för den aktuella tråden.
SP_LOG_TOKEN LogToken = SetupGetThreadLogToken();