Freigeben über


ReadNextLogRecord-Funktion (clfsw32.h)

Liest den nächsten Datensatz in einer Sequenz, die durch einen Aufruf von ReadLogRecord oder ReadLogRestartArea initiiert wird. Durch die iterative Verwendung von ReadNextLogRecord kann ein Client alle Datensätze eines angegebenen Typs in einem Protokoll lesen. Die Richtung der Enumeration wird durch Angabe des Kontextmodus beim Start 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 ReadLogRestartArea zuordnet und erstellt.

Wenn die Funktion den Abschluss eines Vorgangs zurücksetzt, gibt sie einen Zeiger auf einen gültigen Lesekontext und einen Fehler status von ERROR_IO_PENDING zurück. Informationen zur Behandlung der asynchronen Vervollständigung finden Sie im Abschnitt Hinweise zu diesem Thema.

[out] ppvBuffer

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

[out] pcbBuffer

Ein Zeiger auf eine Variable, die die Größe der in ppvReadBuffer zurückgegebenen Lesedaten in Bytes empfängt.

[in, out] peRecordType

Ein Zeiger, der bei der Eingabe den Datensatztypfilter des nächsten Datensatzlesevorgangs angibt und bei der Ausgabe den zurückgegebenen Datensatztyp angibt.

Clients können einen der folgenden Datensatztypen angeben.

Wert Bedeutung
ClfsDataRecord
Es werden nur Benutzerdatensätze gelesen.
ClfsRestartRecord
Es werden nur Neustartdatensätze gelesen.
ClfsClientRecord
Alle Neustart- 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ächste LSN zu lesen, anstatt an den nächsten Datensatz weiterzulesen, den vorherigen LSN zu lesen oder die nächste Rückgängig-LSN zu lesen.

Dieser Parameter ermöglicht Protokollclients den Cursor durch benutzerdefinierte LSN-Ketten in Clientpuffern. Die Beziehung dieses Parameters zum aktuellen LSN des Lesekontexts muss mit dem Kontextmodus ecxMode konsistent sein, der in den ReadLogRecord-Einstiegspunkten 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 Undo-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 eingelesen wird.

[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.

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

Hinweise

Wenn ReadNextLogRecord mit einem status Code von ERROR_IO_PENDING zurückgibt, sollte der Client seine Ausführung mit dem verzögerten Abschluss des überlappenden E/A-Vorgangs mithilfe von GetOverlappedResult oder einer der Synchronisierungswartefunktionen synchronisieren. 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 *ppvReadBuffer aufgelöst. Um einen gültigen Zeiger auf den Datensatz zu erhalten, muss der Client ReadNextLogRecord ein zweites Mal aufrufen.

Hinweis CLFS-Lesekontexte (Common Log File System) sind nicht threadsicher. Sie sollten nicht von mehr als einem Thread gleichzeitig verwendet werden.

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

 

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

CLFS_LSN

CLFS_RECORD_TYPE

Allgemeine Protokolldateisystemfunktionen

OVERLAPPED

ReadLogRecord

ReadLogRestartArea

Synchronisierung und überlappende Eingabe und Ausgabe