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.

Valore Significato
ClfsDataRecord
Vengono letti solo i record di dati utente.
ClfsRestartRecord
Vengono letti solo i record di riavvio.
ClfsClientRecord
Tutti i record di riavvio e dati vengono letti.

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

Nota I contesti di lettura CLFS (Common Log File System) non sono thread-safe. Non devono essere usati da più thread alla 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

Vedi anche

CLFS_LSN

CLFS_RECORD_TYPE

Funzioni comuni del file system di log

SOVRAPPOSTA

ReadLogRecord

ReadLogRestartArea

Sincronizzazione e sovrapposizione di input e output