Dela via


Arbeta med transaktioner

Programutvecklare kan göra mindre ändringar i källkoden för att lägga till transaktions- och registeroperationer med hjälp av Kernel Transaction Manager (KTM). Detta innebär vanligtvis att du skapar en transaktion och skickar handtaget till andra funktioner som tillhandahålls av transaktionsresurser som Transactional NTFS- och Transacted Registry.

KTM tillhandahåller mekanismer för att ditt program ska kunna delta i transaktioner samt för att skriva en egen transaktionsresurshanterare. Det finns funktioner som gör att du kan skapa, hantera och arbeta med fyra klasser av kernelobjekt: transaktioner, transaktionshanterare, resurshanterare och listor. Om du bara använder transaktioner behöver du bara arbeta med transaktionsobjekt och använda följande funktioner:

Anta aldrig att en transaktion är aktiv. Transaktioner kan återställas av många orsaker och när som helst.

Windows exponerar ett handtagsbaserat gränssnitt för systemresurser. För att arbeta med ett operativsystemobjekt begär programmet först ett handtag till objektet och använder sedan det här handtaget i efterföljande funktionsanrop för att komma åt eller ändra objektet. Ett handtag kan vanligtvis öppnas i olika lägen. det angivna läget påverkar semantiken för efterföljande funktionsanrop. Till exempel kan en filreferens som öppnas av ett anrop till CreateFile med flaggan dwDesiredAccess inställd på GENERIC_READ inte användas i anrop som ändrar filen.

Du kan samordna med Distributed Transaction Coordinator resurser i användarläge, till exempel SQL eller MSMQ, och med resurser i kernelläge som använder KTM. Skapa först en DTC-transaktion eller ett System.Transactions-objekt och anropa sedan objektet IKernelTransaction som du kan hämta KTM-handtaget från. Objektet IKernelTransaction skapar en KTM-transaktion som är underordnad DTC-transaktionen. Med det här handtaget kan du skapa dina transaktionsobjekt, men signalera resultatet av transaktionen med hjälp av DTC eller System.Transactions.