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 |
---|---|
|
Es werden nur Benutzerdatensätze gelesen. |
|
Es werden nur Neustartdatensätze gelesen. |
|
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.
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 |