Freigeben über


ReadNextLogRecord-Funktion (clfsw32.h)

Liest den nächsten Datensatz in einer Sequenz, die durch einen Aufruf von ReadLogRecord oder ReadLogRestartAreainitiiert wird. Mithilfe von ReadNextLogRecord iterativ kann ein Client alle Datensätze eines angegebenen Typs in einem Protokoll lesen. Die Richtung der Aufzählung wird durch Angeben des Kontextmodus beim Starten der Lesesequenz bestimmt.

Syntax

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

Parameter

[in, out] pvReadContext

Ein Zeiger auf einen Lesekontext, den das System während eines erfolgreichen Aufrufs von ReadLogRecord oder ReadLogRestartAreazuweist und erstellt.

Wenn die Funktion den Abschluss eines Vorgangs zurückgibt, gibt sie einen Zeiger auf einen gültigen Lesekontext und einen Fehlerstatus von ERROR_IO_PENDINGzurück. Informationen zum Behandeln des asynchronen Abschlusses finden Sie im Abschnitt "Hinweise" dieses Themas.

[out] ppvBuffer

Ein Zeiger auf eine Variable, die einen Zeiger auf die Lesedaten empfängt.

[out] pcbBuffer

Ein Zeiger auf eine Variable, die die Größe der lesedaten empfängt, die in ppvReadBuffer-in Byte zurückgegeben werden.

[in, out] peRecordType

Ein Zeiger, der bei Eingaben den Datensatztypfilter des nächsten Datensatzlesevorgangs angibt, und in der Ausgabe wird der zurückgegebene Datensatztyp angegeben.

Clients können einen der folgenden Datensatztypen angeben.

Wert Bedeutung
ClfsDataRecord-
Nur Benutzerdatensätze werden gelesen.
ClfsRestartRecord-
Nur Neustartdatensätze werden gelesen.
ClfsClientRecord-
Alle Neustarts und Datensätze werden gelesen.

[in, optional] plsnUser

Ein Zeiger auf eine CLFS_LSN-Struktur, die den Protokollclient angibt, um diese Protokollsequenznummer (LSN) als nächstes LSN zu lesen, anstatt vorwärts zum nächsten Datensatz zu lesen, den vorherigen LSN zu lesen oder den nächsten Rückgängig-LSN zu lesen.

Dieser Parameter bietet Protokollclients die Möglichkeit, über benutzerdefinierte LSN-Ketten in Clientpuffern cursorn zu können. Die Beziehung dieses Parameters zum aktuellen LSN des Lesekontexts muss mit dem Kontextmodus konsistent sein, ecxMode, der in der ReadLogRecord Einstiegspunkte angegeben ist; andernfalls wird ein Fehlercode von ERROR_INVALID_PARAMETER zurückgegeben.

[out] plsnUndoNext

Ein Zeiger auf eine CLFS_LSN-Struktur, die den LSN des nächsten Datensatzes in einer Rückgängig-Datensatzkette empfängt.

[out] plsnPrevious

Ein Zeiger auf eine CLFS_LSN Struktur, die den LSN des nächsten Datensatzes in der vorherigen Datensatzkette empfängt.

[out] plsnRecord

Ein Zeiger auf eine CLFS_LSN Struktur, die den LSN des aktuellen Datensatzes empfängt, der in den Lesekontext gelesen wird.

[in, out, optional] pOverlapped

Ein Zeiger auf eine ÜBERLAPPENDE Struktur, die für asynchronen Vorgang erforderlich ist.

Dieser Parameter kann NULL- werden, wenn kein asynchroner Vorgang verwendet wird.

Rückgabewert

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

Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Die folgende Liste identifiziert die möglichen Fehlercodes:

Bemerkungen

Wenn ReadNextLogRecord mit einem Statuscode von ERROR_IO_PENDINGzurückgibt, sollte der Client seine Ausführung mit verzögertem Abschluss des überlappenden E/A-Vorgangs mithilfe GetOverlappedResult-oder einer der Synchronisierung Wait Functionssynchronisieren. Weitere Informationen finden Sie unter Synchronisierung und überlappende Eingabe- und Ausgabe-.

Nachdem ReadNextLogRecord asynchron abgeschlossen wurde, wird der angeforderte Datensatz vom Datenträger gelesen, aber nicht in einen Zeiger in *ppvReadBufferaufgelöst. Um einen gültigen Zeiger auf den Datensatz abzurufen, muss der Client ReadNextLogRecord ein zweites Mal aufrufen.

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

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

 

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 R2 [nur Desktop-Apps]
Zielplattform- Fenster
Header- clfsw32.h
Library Clfsw32.lib
DLL- Clfsw32.dll

Siehe auch

CLFS_LSN

CLFS_RECORD_TYPE

common Log File System Functions

ÜBERLAPPENDE

ReadLogRecord-

ReadLogRestartArea-

Synchronisierung und überlappende Eingabe- und Ausgabe-