Funzione ReserveAndAppendLog (clfsw32.h)
Riserva spazio per i buffer di log o aggiunge un record di log al log oppure esegue entrambi. La funzione è atomica.
Sintassi
CLFSUSER_API BOOL ReserveAndAppendLog(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parametri
[in] pvMarshal
Puntatore a un contesto di marshalling allocato usando la funzione CreateLogMarshallingArea .
[in, optional] rgWriteEntries
Puntatore a una matrice di buffer CLFS_WRITE_ENTRY da eseguire il marshalling in un record.
Questo parametro viene ignorato se il parametro cWriteEntries è zero.
[in] cWriteEntries
Numero di voci di scrittura nella matrice rgWriteEntries .
Se questo valore è diverso da zero, è necessario specificare un buffer nel parametro rgWriteEntries .
[in, optional] plsnUndoNext
Puntatore a una struttura CLFS_LSN che specifica il numero di sequenza di log (LSN) del record successivo nella catena di annullamento.
[in, optional] plsnPrevious
Puntatore a una struttura CLFS_LSN che specifica l'LSN del record precedente nella catena precedente.
[in] cReserveRecords
Numero di dimensioni dei record nella matrice rgcbReservation .
[in, out, optional] rgcbReservation
Puntatore a una matrice di dimensioni della prenotazione per ogni record specificato dal parametro cReserveRecords .
Questo parametro viene ignorato se il parametro cReserveRecords è zero. Se una dimensione della prenotazione è negativa, viene rilasciata una prenotazione di tale dimensione.
Lo spazio effettivo riservato per ogni record, incluso il sovraccarico richiesto, viene restituito nei singoli elementi della matrice al completamento corretto. Questi valori possono essere passati alla funzione FreeReservedLog per regolare lo spazio riservato nell'area di marshalling.
[in] fFlags
Flag che specificano il comportamento di questa funzione.
È possibile combinare uno o più dei valori seguenti.
[out, optional] plsn
Puntatore a una struttura CLFS_LSN che riceve l'LSN del record aggiunto.
[in, out, optional] pOverlapped
Puntatore a una struttura OVERLAPPED .
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 ottenere informazioni sull'errore estese, chiamare la funzione GetLastError .
L'elenco seguente identifica i possibili codici di errore:
Commenti
LSN restituito dalla funzione ReserveAndAppendLog non è necessariamente l'LSN successivo usato. LSN restituito è una stima dell'LSN successiva e varia in base ai flag specificati dal parametro fFlags . LSN restituito può essere usato quando si sposta la coda di base. Questa LSN non è valida dalla chiamata successiva a questa funzione.
Se la funzione ReserveAndAppendLog restituisce ERROR_LOG_FILE_FULL, non esiste più spazio nel log. Questo può essere risolto in uno dei modi seguenti:
- Liberare tutte le prenotazioni non autorizzate.
- Avanzare l'LSN di base o la coda di archiviazione del log o entrambi per riciclare i contenitori.
- Aggiungere contenitori al log.
Se la funzione ReserveAndAppendLog viene chiamata con una struttura pOverlapped valida e l'handle di log viene creato con l'opzione sovrapposta, se una chiamata a questa funzione non riesce con un codice di errore di ERROR_IO_PENDING, un puntatore a un contesto di lettura valido viene inserito nella variabile a cui punta 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 usando la funzione GetOverlappedResult o una delle funzioni di attesa di sincronizzazione. Per altre informazioni, vedere Sincronizzazione e output sovrapposti.
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 |