Funzione ReadLogRestartArea (clfsw32.h)
Restituisce l'ultima area di riavvio scritta correttamente nel log associato all'area di marshalling di WriteLogRestartArea. La funzione restituisce anche un contesto di lettura che consente al chiamante di eseguire il cursore indietro o avanti tramite un log dal record di riavvio.
Questo contesto di lettura è utile durante l'analisi delle aree di riavvio precedenti a quella corrente richiamando ReadPreviousLogRestartArea.
Sintassi
CLFSUSER_API BOOL ReadLogRestartArea(
[in] PVOID pvMarshal,
[out] PVOID *ppvRestartBuffer,
[out] PULONG pcbRestartBuffer,
[out] PCLFS_LSN plsn,
[out] PVOID *ppvContext,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parametri
[in] pvMarshal
Puntatore a un contesto di marshalling allocato usando la funzione CreateLogMarshallingArea .
[out] ppvRestartBuffer
Puntatore a una variabile che riceve un puntatore ai dati di riavvio nel blocco di I/O del log.
[out] pcbRestartBuffer
Puntatore a una variabile che riceve la quantità di dati di riavvio.
[out] plsn
Puntatore a una struttura CLFS_LSN che riceve il numero di sequenza di log (LSN) dell'area di riavvio.
[out] ppvContext
Puntatore a una variabile che riceve un puntatore a un contesto di lettura allocato dal sistema quando una lettura ha esito positivo.
Se la funzione defererà il completamento di un'operazione, restituisce un puntatore di contesto di lettura valido e uno stato di errore di ERROR_IO_PENDING. In tutti gli altri errori, il puntatore di contesto di lettura è NULL. Per altre informazioni sulla gestione del completamento posticipato della funzione, vedere la sezione Osservazioni di questo argomento.
Dopo aver ottenuto tutti i record di log richiesti, il client deve passare il contesto di lettura a TerminateReadLog per liberare la memoria associata. In caso contrario, la perdita di memoria comporta una perdita di memoria.
[in, out, optional] pOverlapped
Puntatore a una struttura OVERLAPPED necessaria per l'operazione asincrona.
Questo parametro può essere NULL se non viene utilizzata un'operazione asincrona.
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
Il messaggio di errore ERROR_LOG_BLOCK_INCOMPLETE viene restituito se le dimensioni del blocco di log specificate da CreateLogMarshallingArea non sono sufficienti per contenere un blocco di log completo.
In genere, ReadLogRestartArea viene usato solo durante il riavvio del client, dopo un arresto anomalo o dopo un arresto anomalo.
Se nel log non è presente alcuna area di riavvio, ReadLogRestartArea ha esito negativo con il codice ERROR_LOG_NO_RESTART.
Se ReadLogRestartArea ha esito negativo con un codice di errore di ERROR_IO_PENDING, un puntatore a un contesto di lettura valido viene inserito nella variabile a cui fa riferimento il parametro ppvReadContext .
Per completare la copia del record di log, il client deve prima sincronizzarne l'esecuzione con il completamento posticipato dell'operazione di I/O sovrapposta chiamando GetOverlappedResult o una delle funzioni di attesa di sincronizzazione. Per altre informazioni, vedere Sincronizzazione e output sovrapposti.
Dopo aver completato ReadLogRestartArea in modo asincrono, l'area di riavvio richiesta viene letto dal disco, ma non viene inserito un puntatore valido in *ppvRestartBuffer.
Per ottenere un puntatore valido, il client deve chiamare ReadPreviousLogRestartArea, che passa il puntatore in lettura restituito da ReadLogRestartArea.
I contesti di lettura CLFS non devono essere passati a più di una lettura asincrona alla volta oppure la funzione non riesce con ERROR_BUSY.
Requisiti
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
Funzioni comuni del file system di log