Funzione ReadNextLogRecord (clfsw32.h)
Legge il record successivo in una sequenza avviata da una chiamata a ReadLogRecord o ReadLogRestartArea. Usando ReadNextLogRecord iterativamente, un client può leggere tutti i record di un tipo specificato in un log. La direzione dell'enumerazione è determinata specificando la modalità di contesto quando si inizia la sequenza di lettura.
Sintassi
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
);
Parametri
[in, out] pvReadContext
Puntatore a un contesto di lettura allocato dal sistema e creato durante una chiamata riuscita a ReadLogRecord o ReadLogRestartArea.
Se la funzione defererà il completamento di un'operazione, restituisce un puntatore a un contesto di lettura valido e uno stato di errore di ERROR_IO_PENDING. Per informazioni sulla gestione del completamento asincrono, vedere la sezione Osservazioni di questo argomento.
[out] ppvBuffer
Puntatore a una variabile che riceve un puntatore ai dati di lettura.
[out] pcbBuffer
Puntatore a una variabile che riceve le dimensioni dei dati di lettura restituiti in ppvReadBuffer, in byte.
[in, out] peRecordType
Puntatore che, in input, specifica il filtro del tipo di record del record successivo letto e nell'output specifica il tipo di record restituito.
I client possono specificare uno dei tipi di record seguenti.
[in, optional] plsnUser
Puntatore a una struttura CLFS_LSN che specifica il client di log per leggere questo numero di sequenza di log (LSN) come LSN successivo anziché leggere il record successivo, leggere l'LSN precedente o leggere l'LSN successivo.
Questo parametro offre ai client di log la possibilità di eseguire il cursore tramite catene LSN definite dall'utente nei buffer client. La relazione di questo parametro con l'LSN corrente mantenuta dal contesto di lettura deve essere coerente con la modalità di contesto, ecxMode, specificata nei punti di ingresso ReadLogRecord ; in caso contrario, viene restituito un codice di errore di ERROR_INVALID_PARAMETER .
[out] plsnUndoNext
Puntatore a una struttura CLFS_LSN che riceve l'LSN del record successivo in una catena di record annulla.
[out] plsnPrevious
Puntatore a una struttura CLFS_LSN che riceve l'LSN del record successivo nella catena di record precedente.
[out] plsnRecord
Puntatore a una struttura CLFS_LSN che riceve l'LSN del record corrente letto nel contesto di lettura.
[in, out, optional] pOverlapped
Puntatore a una struttura OVERLAPPED necessaria per l'operazione asincrona.
Questo parametro può essere NULL se l'operazione asincrona non viene usata.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
L'elenco seguente identifica i possibili codici di errore:
Commenti
Se ReadNextLogRecord restituisce con un codice di stato di ERROR_IO_PENDING, il client deve sincronizzarne l'esecuzione con il completamento posticipato dell'operazione di I/O sovrapposta usando GetOverlappedResult o una delle funzioni di attesa di sincronizzazione. Per altre informazioni, vedere Sincronizzazione e output sovrapposti.
Dopo aver completato ReadNextLogRecord in modo asincrono, il record richiesto viene letto dal disco, ma non viene risolto in un puntatore in *ppvReadBuffer. Per ottenere un puntatore valido al record, il client deve chiamare ReadNextLogRecord una seconda volta.
I contesti di lettura CLFS non devono essere passati a più di una lettura asincrona alla volta oppure la funzione non riesce con ERROR_READ.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2003 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | clfsw32.h |
Libreria | Clfsw32.lib |
DLL | Clfsw32.dll |