ClfsWriteRestartArea-Funktion (wdm.h)
Die ClfsWriteRestartArea routinemäßig fügt einen neuen Neustartdatensatz an einen CLFS-Stream an, löscht den Neustartdatensatz auf stabilen Speicher und aktualisiert optional den Basis-LSN des Datenstroms.
Syntax
CLFSUSER_API NTSTATUS ClfsWriteRestartArea(
[in, out] PVOID pvMarshalContext,
[in] PVOID pvRestartBuffer,
[in] ULONG cbRestartBuffer,
[in, optional] PCLFS_LSN plsnBase,
[in] ULONG fFlags,
[out, optional] PULONG pcbWritten,
[out, optional] PCLFS_LSN plsnNext
);
Parameter
[in, out] pvMarshalContext
Ein Zeiger auf einen undurchsichtigen Kontext, der einen Marshallingbereich darstellt, der einem CLFS-Stream zugeordnet ist. Der Aufrufer hat diesen Zeiger zuvor durch Aufrufen ClfsCreateMarshallingAreaabgerufen.
[in] pvRestartBuffer
Ein Zeiger auf einen Puffer, der die Daten für den Neustartdatensatz enthält.
[in] cbRestartBuffer
Die Größe des Puffers in Bytes, auf den pvRestartBufferverweist. Dies ist die Größe der Neustartdaten.
[in, optional] plsnBase
Ein Zeiger auf eine CLFS_LSN-Struktur, die einen neuen Basis-LSN für den Datenstrom angibt. Wenn dieser Parameter NULL-ist, wird der Basis-LSN nicht geändert.
[in] fFlags
Dieser Parameter muss einen der folgenden Werte aufweisen.
Wert | Bedeutung |
---|---|
0 | Der Neustartdatensatz wird in einem E/A-Block in neu zugewiesenen Speicherplatz platziert. Die Anzahl der reservierten Datensätze im Marshallbereich wird nicht geändert. |
CLFS_FLAG_USE_RESERVATION | Der Neustartdatensatz wird in einem E/A-Block im zuvor reservierten Bereich platziert. Die Anzahl der reservierten Datensätze im Marshallbereich wird um eins reduziert. |
[out, optional] pcbWritten
Ein Zeiger auf eine ULONG-Typvariable, die die Anzahl der Bytes empfängt, die tatsächlich zum stabilen Speicher gezwungen wurden. Dieser Parameter kann NULL-sein.
[out, optional] plsnNext
Ein Zeiger auf eine CLFS_LSN-Struktur, die den LSN des neu geschriebenen Neustartdatensatzes empfängt.
Rückgabewert
ClfsWriteRestartArea gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist; andernfalls wird eine der fehlercodes zurückgegeben, die in Ntstatus.h definiert sind.
Bemerkungen
In der Regel wird ClfsWriteRestartArea als letzter Akt eines Clientprüfpunkts aufgerufen.
ClfsWriteRestartArea ist ein relativ kostspieliger Vorgang, da es dazu führt, dass alle Datensätze, die sich derzeit im Marshalling-Bereich befinden, zusammen mit einer Leeren von Datenstrom- und Protokollmetadaten geleert werden.
Gleichzeitig sollte nur ein Marshallbereich verwendet werden, um Daten in einen Datenstrom zu schreiben. Wenn zwei Marshallingbereiche in den Datenstrom geschrieben werden, kann dies zu Einer Beschädigung des Datenstroms führen.
Wenn Sie nur den Basis-LSN eines Datenstroms festlegen möchten, verwenden Sie ClfsAdvanceLogBase, wodurch keine Daten in stabilen Speicher geleert werden.
Eine Erläuterung der CLFS-Konzepte und -Terminologie finden Sie unter Common Log File System.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Server 2003 R2, Windows Vista und höheren Versionen von Windows. |
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h) |
Library | Clfs.lib |
DLL- | Clfs.sys |
IRQL- | <= APC_LEVEL |