Freigeben über


CreateLogMarshallingArea-Funktion (clfsw32.h)

Erstellt einen Marshallbereich für ein Protokoll und gibt nach erfolgreicher Ausführung einen Marshallkontext zurück. Vor dem Erstellen eines Marshallbereichs muss das Protokoll über mindestens einen Container verfügen.

Der Marshallkontext wird verwendet, um Datensätze an ein Protokoll anzufügen oder aus diesem zu lesen. Da Datensätze immer in Protokollblöcken gespeichert werden, müssen sie den Marshallkontext durchlaufen.

Protokolldatensätze werden geschrieben, indem ReserveAndAppendLog aufgerufen wird.

Syntax

CLFSUSER_API BOOL CreateLogMarshallingArea(
  [in]           HANDLE                  hLog,
  [in, optional] CLFS_BLOCK_ALLOCATION   pfnAllocBuffer,
  [in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
  [in, optional] PVOID                   pvBlockAllocContext,
  [in]           ULONG                   cbMarshallingBuffer,
  [in]           ULONG                   cMaxWriteBuffers,
  [in]           ULONG                   cMaxReadBuffers,
  [out]          PVOID                   *ppvMarshal
);

Parameter

[in] hLog

Ein Handle für das Protokoll, das aus CreateLogFile abgerufen wird.

Das Protokollhandle kann auf ein dediziertes oder multiplextes Protokoll verweisen.

[in, optional] pfnAllocBuffer

Die Rückruffunktion, die Arbeitsspeicher für Protokollblöcke ordnet.

Wenn dieser Parameter NULL ist, stellt das Common Log File System (CLFS) eine Standardfunktion für die Blockzuordnung bereit. Dieser Parameter kann nicht NULL sein, wenn ein blockfreier Rückruf mithilfe des pfnFreeBuffer-Parameters angegeben wird.

Im folgenden Beispiel wird die Syntax der Rückruffunktion für die Blockzuordnung identifiziert:

typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);

[in, optional] pfnFreeBuffer

Die Rückruffunktion, die Protokollblöcke freigibt, die von pfnAllocBuffer zugewiesen wurden.

Wenn dieser Parameter NULL ist, stellt CLFS eine Standardmäßige Blockdeallocation-Funktion bereit. Dieser Parameter kann nicht NULL sein, wenn ein Blockzuordnungsrückruf mithilfe des pfnAllocBuffer-Parameters angegeben wird.

Im folgenden Beispiel wird die Syntax der Blockfreisetzungsfunktion identifiziert:

typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);

Der Pufferparameter von "ClfsBlockDeallocProc" muss auf einen Block verweisen, der mithilfe des Rückrufs von pfnAllocBuffer zugeordnet wird.

[in, optional] pvBlockAllocContext

Ein Zeiger auf einen Puffer, der als Benutzerkontext an die Blockzuordnungs- und Deallocationroutinen zurückgegeben wird, wenn ein Puffer angegeben ist.

Wenn pfnAllocBufferNULL ist, wird dieser Parameter ignoriert.

[in] cbMarshallingBuffer

Die Größe der einzelnen Protokoll-E/A-Blöcke in Bytes, die vom neuen Marshallbereich verwendet werden. Dies muss ein Vielfaches der Sektorgröße auf dem stabilen Speichermedium sein. Die Sektorgröße ist der Wert, der im lpBytesPerSector-Parameter der GetDiskFreeSpace-Funktion zurückgegeben wird.

Datensätze können nicht angefügt oder gelesen werden, wenn sie länger als dieser Wert sind.

[in] cMaxWriteBuffers

Die maximale Anzahl von Blöcken, die jederzeit für Schreibvorgänge zugeordnet werden können.

Dieser Wert kann sich auf die Häufigkeit von Datenleerungen auswirken. Wenn Sie kein Limit angeben müssen, um die Häufigkeit des Datenleerzyklus zu steuern, geben Sie INFINITE an.

[in] cMaxReadBuffers

Die maximale Anzahl von Blöcken, die jederzeit für Lesevorgänge zugeordnet werden können.

Lesekontexte verwenden mindestens einen Leseblock.

[out] ppvMarshal

Ein Zeiger auf den Marshallkontext, den CLFS zuordnet, wenn CreateLogMarshallingArea erfolgreich abgeschlossen wurde.

Dieser Kontext muss mit allen Lese-, Anfüge-, Schreib- und Leervorgängen verwendet werden, um Marshallingbereiche zu protokollieren. Alle Vorgänge, die mithilfe eines Marshallkontexts auf Marshallbereiche zugreifen, sind threadsicher. Dieser Parameter ist NULL , wenn der Vorgang nicht erfolgreich ist.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

In der folgenden Liste werden die möglichen Fehlercodes identifiziert:

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile clfsw32.h
Bibliothek Clfsw32.lib
DLL Clfsw32.dll

Weitere Informationen

Allgemeine Protokolldateisystemfunktionen

CreateLogFile

DeleteLogMarshallingArea