Freigeben über


CLFS-Marshallgebiete

Ein Common Log File System (CLFS)-Client fügt Protokolldatensätze an einen Marshallbereich im veränderlichen Speicher an, und CLFS schreibt diese Datensätze in regelmäßigen Abständen in stabilen Speicher. Ein Marshalling-Bereich ist eine Sammlung von Protokoll-E/A-Puffern, von denen jeder mehrere Protokolldatensätze enthalten kann. Log-E/A-Puffer enthalten Datensätze, die kürzlich in einen Datenstrom geschrieben wurden, aber möglicherweise noch nicht auf den stabilen Speicher übertragen wurden, sowie Datensätze, die kürzlich aus dem Datenstrom gelesen wurden.

Sie erstellen einen Marshallingbereich durch Aufrufen von ClfsCreateMarshallingArea, wobei Sie die Größe der von dem Marshallingbereich verwendeten Protokoll-E/A-Puffer angeben müssen und ob sich diese Puffer im ausgelagerten oder nicht ausgelagerten Pool befinden. Alle Protokoll-IO-Puffer in einem Marshalling-Bereich haben die gleiche Größe, CLFS stellt sicher, dass die Größe ein Vielfaches der Sektorgröße auf dem zugrunde liegenden stabilen Speichermedium ist. Das heißt, CLFS nimmt Ihre angeforderte Größe auf und rundet sie bei Bedarf auf, um Ihre E/A-Puffer mit dem stabilen Speichermedium kompatibel zu machen.

CLFS weist Protokoll-E/A-Puffer nach Bedarf zu und gibt diese frei. Sie haben jedoch die Möglichkeit, die maximale Anzahl von E/A-Puffern festzulegen, die gleichzeitig zugewiesen werden können. Sie haben auch die Möglichkeit, Ihre eigenen Pufferzuweisungs- und Deallocation-Funktionen bereitzustellen.

Um die maximale Anzahl von Protokoll-E/A-Puffern anzugeben, die gleichzeitig zum Schreiben von Protokolldatensätzen zugeordnet werden können, legen Sie den cMaxWriteBuffers-Parameter der ClfsCreateMarshallingArea-Funktion fest. Das Einschränken der Anzahl von Puffern wirkt sich auf die Häufigkeit der Leerungen auf einen stabilen Speicher aus; Mit weniger Puffern müssen Protokolldatensätze häufiger in stabilen Speicher geschrieben werden. Wenn Sie die Leerfrequenz nicht steuern müssen, legen Sie cMaxWriteBuffers auf INFINITE fest (definiert in Winbase.h).

Um die maximale Anzahl von Protokoll-E/A-Puffern anzugeben, die gleichzeitig zum Lesen von Protokolldatensätzen zugeordnet werden können, legen Sie den cMaxReadBuffers-Parameter der ClfsCreateMarshallingArea-Funktion fest. Wenn Sie die Anzahl der zugeordneten Lesepuffer nicht steuern müssen, legen Sie cMaxReadBuffers auf INFINITE fest.

Wenn Sie ihre eigene Speicherzuordnung für Protokoll-E/A-Puffer ausführen möchten, legen Sie die Parameter pfnAllocBuffer und pfnFreeBuffer der ClfsCreateMarshallingArea-Funktion so fest, dass sie auf Ihre eigenen Zuordnungs- und Deallocation-Funktionen verweisen. Anschließend ruft CLFS Ihre Funktionen auf, damit es die tatsächliche Speicherzuweisung und -freigabe ausführen kann, wenn CLFS Protokoll-E/A-Puffer erstellen oder freigeben muss.

In einigen Fällen sollten Sie im Voraus Platz in einem Marshalling-Bereich reservieren. Möglicherweise wissen Sie beispielsweise, dass Sie eine Gruppe von 10 Protokolleinträgen schreiben möchten, und Sie möchten sicherstellen, dass genügend Platz im Marshallingbereich für den gesamten Satz vorhanden ist. Um Platz für die 10 Datensätze zu reservieren, erstellen Sie ein 10-Elementarray, das die Größe der Datensätze enthält, und übergeben Sie das Array dann an die ClfsReserveAndAppendLog-Funktion im rgcbReservation-Parameter . ClfsReserveAndAppendLog ist eine mehrzweckige Funktion, die Platz in einem Marshalling-Bereich reserviert oder Protokolldatensätze an einen Datenstrom anhängt oder beides atomar ausführt. Indem Sie die Parameter entsprechend festlegen, können Sie ClfsReserveAndAppendLog aufrufen, um Platz für die zukünftige Verwendung zu reservieren, ohne tatsächlich Datensätze an den Datenstrom anzufügen.

Siehe auch

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog

Sammelplatz