Dela via


CLFS-omlastningsområden

En CLFS-klient (Common Log File System) lägger till loggposter i ett rangeringsområde i flyktigt minne, och CLFS skriver regelbundet dessa poster till stabil lagring. Ett område för marshalling är en samling logg-I/O-buffertar som var och en kan innehålla flera loggposter. Logg-I/O-buffertar innehåller poster som nyligen skrivits till en dataström (men eventuellt inte tömts till stabil lagring) och poster som nyligen lästs från strömmen.

Du skapar ett marshallat område genom att anropa ClfsCreateMarshallingArea, vid denna tidpunkt måste du ange storleken på logg-I/O-buffer som det marshallade området använder och om dessa buffer finns i den paged eller icke-paged poolen. Alla logg-I/O-buffrar i ett marshallingområde har samma storlek, och CLFS ser till att denna storlek är en multipel av sektorstorleken på det underliggande stabila lagringsmediet. Det innebär att CLFS tar din begärda storlek och avrundar den efter behov för att göra dina I/O-buffertar kompatibla med det stabila lagringsmediet.

CLFS allokerar och frigör logg-I/O-buffertar efter behov, men du har möjlighet att ange det maximala antalet I/O-buffertar som kan allokeras samtidigt. Du har också möjlighet att tillhandahålla egna funktioner för buffertallokering och -frigöring.

Ange det maximala antalet logg-I/O-buffertar som kan allokeras samtidigt för att skriva loggposter genom att ange parametern cMaxWriteBuffers för funktionen ClfsCreateMarshallingArea . Att begränsa antalet buffertar påverkar frekvensen av tömningar till stabil lagring. med färre buffertar måste loggposter skrivas till stabil lagring oftare. Om du inte behöver styra tömningsfrekvensen anger du cMaxWriteBuffers till INFINITE (definierat i Winbase.h).

Ange det maximala antalet logg-I/O-buffertar som kan allokeras samtidigt för att läsa loggposter genom att ange parametern cMaxReadBuffers för funktionen ClfsCreateMarshallingArea . Om du inte behöver styra antalet allokerade läsbuffertar anger du cMaxReadBuffers till INFINITE.

Om du vill göra din egen minnesallokering för logg-I/O-buffertar anger du parametrarna pfnAllocBuffer och pfnFreeBuffer för funktionen ClfsCreateMarshallingArea så att de pekar på dina egna allokerings- och frigöringsfunktioner. Sedan anropar CLFS dina funktioner för att utföra den faktiska minnesallokeringen och frigöringen när den behöver skapa eller frigöra logg-I/O-buffertar.

I vissa fall kanske du vill reservera utrymme på ett marshallingområde i förväg. Du kanske till exempel vet att du håller på att skriva en uppsättning med 10 loggposter, och du vill vara säker på att det finns tillräckligt med utrymme i marshalling-området för hela uppsättningen. Om du vill reservera utrymme för de 10 posterna skapar du en matris med 10 element som innehåller posternas storlekar och skickar sedan matrisen till funktionen ClfsReserveAndAppendLog i parametern rgcbReservation . ClfsReserveAndAppendLog är en funktion för flera syften som reserverar utrymme i ett överföringsområde eller lägger till loggposter i en ström, eller utför båda dessa saker samtidigt. Genom att ange parametrarna på rätt sätt kan du anropa ClfsReserveAndAppendLog för att reservera utrymme för framtida användning utan att faktiskt lägga till några poster i dataströmmen.

Se även

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog

sammanställningsområde