ReserveAndAppendLog-Funktion (clfsw32.h)
Reserviert Speicherplatz für Protokollpuffer oder fügt einen Protokolldatensatz an das Protokoll an, oder tut beides. Die Funktion ist atomar.
Syntax
CLFSUSER_API BOOL ReserveAndAppendLog(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parameter
[in] pvMarshal
Ein Zeiger auf einen Marshallkontext, der mithilfe der CreateLogMarshallingArea-Funktion zugeordnet wird.
[in, optional] rgWriteEntries
Ein Zeiger auf ein Array von CLFS_WRITE_ENTRY Puffern, die in einem Datensatz gemarst werden sollen.
Dieser Parameter wird ignoriert, wenn der Parameter cWriteEntries 0 ist.
[in] cWriteEntries
Die Anzahl der Schreibeinträge im rgWriteEntries-Array .
Wenn dieser Wert nichtzero ist, müssen Sie einen Puffer im Parameter rgWriteEntries angeben.
[in, optional] plsnUndoNext
Ein Zeiger auf eine CLFS_LSN-Struktur , die die Protokollsequenznummer (LSN) des nächsten Datensatzes in der Undo-Kette angibt.
[in, optional] plsnPrevious
Ein Zeiger auf eine CLFS_LSN-Struktur , die den LSN des vorherigen Datensatzes in der vorherigen Kette angibt.
[in] cReserveRecords
Die Anzahl der Datensatzgrößen im rgcbReservation-Array .
[in, out, optional] rgcbReservation
Ein Zeiger auf ein Array von Reservierungsgrößen für jeden Datensatz, den der Parameter cReserveRecords angibt.
Dieser Parameter wird ignoriert, wenn der cReserveRecords-Parameter 0 ist. Wenn eine Reservierungsgröße negativ ist, wird eine Reservierung dieser Größe freigegeben.
Der tatsächliche Speicherplatz, der für jeden Datensatz reserviert ist, einschließlich des erforderlichen Mehraufwands, wird bei erfolgreicher Fertigstellung in den einzelnen Arrayelementen zurückgegeben. Diese Werte können an die FreeReservedLog-Funktion übergeben werden, um den im Marshallbereich reservierten Speicherplatz anzupassen.
[in] fFlags
Die Flags, die das Verhalten dieser Funktion angeben.
Ein oder mehrere der folgenden Werte können kombiniert werden.
[out, optional] plsn
Ein Zeiger auf eine CLFS_LSN Struktur, die den LSN des angefügten Datensatzes empfängt.
[in, out, optional] pOverlapped
Ein Zeiger auf eine Struktur OVERLAPPED.
Dieser Parameter kann NULL sein, wenn kein asynchroner Vorgang verwendet wird.
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 die GetLastError-Funktion auf.
In der folgenden Liste werden die möglichen Fehlercodes identifiziert:
Hinweise
Der von der ReserveAndAppendLog-Funktion zurückgegebene LSN ist nicht unbedingt der nächste LSN, der verwendet wird. Der zurückgegebene LSN ist eine Schätzung des nächsten LSN und variiert je nachdem, welche Flags durch den fFlags-Parameter angegeben werden. Der zurückgegebene LSN kann beim Verschieben des Basisschwanzs verwendet werden. Dieser LSN wird durch den nächsten Aufruf dieser Funktion ungültig.
Wenn die ReserveAndAppendLog-FunktionERROR_LOG_FILE_FULL zurückgibt, ist im Protokoll kein Speicherplatz mehr vorhanden. Dies kann auf eine der folgenden Arten aufgelöst werden:
- Kostenlos alle nicht benötigten Reservierungen.
- Verschieben Sie den Basis-LSN oder den Protokollarchivschwund oder beides, um Container zu recyceln.
- Fügen Sie dem Protokoll Container hinzu.
Wenn die ReserveAndAppendLog-Funktion mit einer gültigen pOverlapped-Struktur aufgerufen wird und das Protokollhandle mit der Option überlappend erstellt wird ERROR_IO_PENDING, wird ein Zeiger auf einen gültigen Lesekontext in der Variablen platziert, auf die der ppvReadContext-Parameter verweist.
Um die Protokolldatensatzkopie abzuschließen, sollte der Client zunächst seine Ausführung mit verzögertem Abschluss des überlappenden E/A-Vorgangs synchronisieren, indem er die GetOverlappedResult-Funktion oder eine der Synchronisierungswartefunktionen verwendet. Weitere Informationen finden Sie unter Synchronisierung und überlappende Eingabe und Ausgabe.
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 |