Freigeben über


Dedizierte CLFS-Protokolle

Ein CLFS-Protokoll (Common Log File System) kann entweder dediziert oder multiplext sein. Ein dediziertes Protokoll dient als stabiler Speicher für einen einzelnen Stream. Ein multiplexiertes Protokoll dient als stabiler Speicher für mehrere Datenströme. In diesem Thema werden dedizierte Protokolle erläutert. Informationen zu multiplexten Protokollen finden Sie unter Multiplex-CLFS-Protokolle.

Führen Sie zum Erstellen eines dedizierten Protokolls die folgenden Schritte aus.

  1. Rufen Sie ClfsCreateLogFile auf, um einen Zeiger auf eine LOG_FILE_OBJECT-Struktur abzurufen. Legen Sie den puszLogFileName-Parameter auf eine Zeichenfolge des Formulars "log:<log name>" fest, wobei <der Protokollname> ein gültiger Pfad im zugrunde liegenden Dateisystem ist. Wenn Sie beispielsweise puszLogFileName auf "log:c:\ClfsLogs\myLog" festlegen, wird die Basisprotokolldatei myLog.blf im Verzeichnis c:\ClfsLogs erstellt. Das Verzeichnis c:\ClfsLogs dient auch als Standardspeicherort für Container, die Sie später dem Protokoll hinzufügen.

    Hinweis Es ist die Form der in puszLogFileName übergebenen Zeichenfolge, die bestimmt, ob CLFS ein dediziertes oder multiplextes Protokoll erstellt. Wenn die Zeichenfolge einen Doppelpunkt (::) nach dem Protokollnamen erstellt CLFS ein Multiplexprotokoll. Im hier angegebenen Beispiel weist "log:c\ClfsLogs\myLogs" keinen Doppelpunkt auf, sodass CLFS ein dediziertes Protokoll erstellt.

Der vonClfsCreateLogFile zurückgegebene LOG_FILE_OBJECT-Zeiger stellt eine offene instance des einzigen Datenstroms des dedizierten Protokolls dar.

  1. Übergeben Sie den LOG_FILE_OBJECT Zeiger, den Sie von ClfsCreateLogFile erhalten haben, an ClfsAddLogContainer , um einen Container (zusammenhängende physische Ausdehnung) im stabilen Speicher zu erstellen, der Protokolldatensätze enthält. Geben Sie die Größe des Containers an (der auf ein Vielfaches von 512 KB aufgerundet wird), indem Sie den pcbContainer-Parameter festlegen. Legen Sie den parameter puszContainerPath fest, um einen Pfadnamen für den Container anzugeben. Der Pfadname kann absolut oder relativ zum Verzeichnis sein, das die Basisprotokolldatei enthält.

    Sie können zusätzliche Container für Ihr Protokoll erstellen, indem Sie ClfsAddLogContainer erneut aufrufen. Beachten Sie, dass alle Container für ein bestimmtes Protokoll die gleiche Größe aufweisen müssen. Alternativ zum mehrmalsen Aufrufen von ClfsAddLogContainer können Sie ClfsAddLogContainerSet aufrufen, um mehrere Container gleichzeitig zu erstellen.

  2. Übergeben Sie den LOG_FILE_OBJECT Zeiger, den Sie aus ClfsCreateLogFile erhalten haben, an ClfsCreateMarshallingArea , um einen Zeiger auf einen Marshallbereich zu erhalten, mit dem Sie Protokolldatensätze lesen und in Ihren Stream schreiben können. Geben Sie die Größe der Protokoll-E/A-Blöcke an, die der Marshallbereich verwenden soll, indem Sie den cbMarshallingBuffer-Parameter festlegen. Es gibt mehrere weitere Parameter, mit denen Sie verschiedene Eigenschaften des Marshallbereichs festlegen können.

    Wenn Sie zusätzliche Marshallbereiche benötigen, übergeben Sie denselben LOG_FILE_OBJECT-Zeiger erneut an ClfsCreateMarshallingArea , einmal für jeden zusätzlichen Marshallingbereich, den Sie benötigen.

Nachdem Ihrem Stream nun mindestens ein Marshallingbereich zugeordnet ist, können Sie Datensätze in diese Marshallingbereiche schreiben, indem Sie die folgenden Funktionen aufrufen.

ClfsReserveAndAppendLog

ClfsReserveAndAppendLogAligned

ClfsWriteRestartArea

Jedes Mal, wenn Sie einen Datensatz schreiben, erhalten Sie eine Protokollsequenznummer (LSN), die den Datensatz identifiziert. Der einem Datensatz zugewiesene LSN ist immer größer als der LSN, der dem zuvor geschriebenen Datensatz zugewiesen wurde, unabhängig davon, welcher Marshallbereich zum Schreiben des Datensatzes verwendet wurde.