Freigeben über


ReadLogRestartArea-Funktion (clfsw32.h)

Gibt den letzten Neustartbereich zurück, der erfolgreich in das Protokoll geschrieben wurde, das dem Marshallingbereich von WriteLogRestartArea zugeordnet ist. Die Funktion gibt auch einen Lesekontext zurück, der es dem Aufrufer ermöglicht, einen Cursor rückwärts oder vorwärts durch ein Protokoll aus dem Neustartdatensatz zu bewegen.

Dieser Lesekontext ist nützlich, wenn Sie vorherige Neustartbereiche vor dem aktuellen durch Aufrufen von ReadPreviousLogRestartArea durchsuchen.

Syntax

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

Parameter

[in] pvMarshal

Ein Zeiger auf einen Marshallingkontext, der mithilfe der CreateLogMarshallingArea-Funktion zugeordnet wird.

[out] ppvRestartBuffer

Ein Zeiger auf eine Variable, die einen Zeiger auf die Neustartdaten im Protokoll-E/A-Block empfängt.

[out] pcbRestartBuffer

Ein Zeiger auf eine Variable, die die Menge der Neustartdaten empfängt.

[out] plsn

Ein Zeiger auf eine CLFS_LSN Struktur, die die Protokollsequenznummer (Log Sequence Number, LSN) des Neustartbereichs empfängt.

[out] ppvContext

Ein Zeiger auf eine Variable, die einen Zeiger auf einen systemseitig zugeordneten Lesekontext empfängt, wenn ein Lesevorgang erfolgreich ist.

Wenn die Funktion den Abschluss eines Vorgangs zurücksetzt, gibt sie einen gültigen Lesekontextzeiger und einen Fehler status ERROR_IO_PENDING zurück. Bei allen anderen Fehlern ist der Lesekontextzeiger NULL. Weitere Informationen zur Behandlung der verzögerten Vervollständigung der Funktion finden Sie im Abschnitt Hinweise dieses Themas.

Nach dem Abrufen aller angeforderten Protokolldatensätze muss der Client den Lesekontext an TerminateReadLog übergeben, um den zugeordneten Arbeitsspeicher freizugeben. Andernfalls führt dies zu Speicherverlusten.

Hinweis Allgemeine CLFS-Lesekontexte (Log File System) sind nicht threadsicher. Sie sollten nicht von mehr als einem Thread gleichzeitig verwendet oder an mehrere asynchrone Lesevorgänge gleichzeitig übergeben werden.
 

[in, out, optional] pOverlapped

Ein Zeiger auf eine OVERLAPPED-Struktur , die für asynchrone Vorgänge erforderlich ist.

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 GetLastError auf.

Die folgende Liste identifiziert die möglichen Fehlercodes:

Hinweise

Die Fehlermeldung ERROR_LOG_BLOCK_INCOMPLETE wird zurückgegeben, wenn die von CreateLogMarshallingArea angegebene Protokollblockgröße nicht groß genug ist, um einen vollständigen Protokollblock zu speichern.

In der Regel wird ReadLogRestartArea nur während des Neustarts des Clients verwendet, entweder nach einem Absturz oder nach einem normalen Herunterfahren.

Wenn kein Neustartbereich im Protokoll vorhanden ist, schlägt ReadLogRestartArea mit dem Code ERROR_LOG_NO_RESTART fehl.

Wenn ReadLogRestartArea mit dem Fehlercode ERROR_IO_PENDING fehlschlägt, 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 zuerst seine Ausführung mit dem verzögerten Abschluss des überlappenden E/A-Vorgangs synchronisieren, indem GetOverlappedResult oder eine der Synchronisierungswartefunktionen aufgerufen wird. Weitere Informationen finden Sie unter Synchronisierung und überlappende Eingabe und Ausgabe.

Nachdem ReadLogRestartArea asynchron abgeschlossen wurde, wird der angeforderte Neustartbereich vom Datenträger gelesen, aber ein gültiger Zeiger darauf wird nicht in *ppvRestartBuffer platziert.

Um einen gültigen Zeiger zu erhalten, muss der Client ReadPreviousLogRestartArea aufrufen, der den von ReadLogRestartArea zurückgegebenen Lesekontextzeiger übergibt.

Hinweis Allgemeine CLFS-Lesekontexte (Log File System) sind nicht threadsicher. Sie sollten nicht von mehreren Threads gleichzeitig verwendet werden.

CLFS-Lesekontexte sollten nicht an mehrere asynchrone Lesevorgänge gleichzeitig übergeben werden, oder die Funktion schlägt mit ERROR_BUSY fehl.

 

Anforderungen

   
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

CLFS_LSN

Allgemeine Protokolldateifunktionen

CreateLogFile

OVERLAPPED

ReadPreviousLogRestartArea

Synchronisierung und überlappende Eingabe und Ausgabe

WriteLogRestartArea