Condividi tramite


Funzione ClfsWriteRestartArea (wdm.h)

La routine ClfsWriteRestartArea aggiunge atomicamente un nuovo record di riavvio a un flusso CLFS, scarica il record di riavvio in una risorsa di archiviazione stabile e, facoltativamente, aggiorna l'LSN di base del flusso.

Sintassi

CLFSUSER_API NTSTATUS ClfsWriteRestartArea(
  [in, out]       PVOID     pvMarshalContext,
  [in]            PVOID     pvRestartBuffer,
  [in]            ULONG     cbRestartBuffer,
  [in, optional]  PCLFS_LSN plsnBase,
  [in]            ULONG     fFlags,
  [out, optional] PULONG    pcbWritten,
  [out, optional] PCLFS_LSN plsnNext
);

Parametri

[in, out] pvMarshalContext

Puntatore a un contesto opaco che rappresenta un'area di marshalling associata a un flusso CLFS. Il chiamante ha ottenuto in precedenza questo puntatore chiamando ClfsCreateMarshallingArea.

[in] pvRestartBuffer

Puntatore a un buffer contenente i dati per il record di riavvio.

[in] cbRestartBuffer

Dimensioni, in byte, del buffer a cui punta pvRestartBuffer. Si tratta delle dimensioni dei dati di riavvio.

[in, optional] plsnBase

Puntatore a una struttura CLFS_LSN che specifica un nuovo LSN di base per il flusso. Se questo parametro è NULL, l'LSN di base non viene modificato.

[in] fFlags

Questo parametro deve essere uno dei valori seguenti.

Valore Significato
0 Il record di riavvio viene inserito nello spazio appena allocato in un blocco di I/O. Il numero di record riservati nell'area di marshalling non viene modificato.
CLFS_FLAG_USE_RESERVATION Il record di riavvio viene inserito in uno spazio precedentemente riservato in un blocco di I/O. Il numero di record riservati nell'area di marshalling viene ridotto di uno.

[out, optional] pcbWritten

Puntatore a una variabile tipizzata ULONG che riceve il numero di byte effettivamente costretti a una risorsa di archiviazione stabile. Questo parametro può essere NULL.

[out, optional] plsnNext

Puntatore a una struttura di CLFS_LSN che riceve l'LSN del record di riavvio appena scritto.

Valore restituito

ClfsWriteRestartArea restituisce STATUS_SUCCESS se ha esito positivo; in caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.

Commenti

In genere ClfsWriteRestartArea viene chiamato come ultimo atto di un checkpoint client.

ClfsWriteRestartArea è un'operazione relativamente costosa perché causa uno scaricamento di tutti i record attualmente nell'area di marshalling insieme a uno scaricamento di metadati di flusso e log.

In qualsiasi momento, deve essere usata una sola area di marshalling per scrivere dati in un flusso. La scrittura di due aree di marshalling nel flusso potrebbe causare un danneggiamento del flusso.

Se si vuole solo impostare l'LSN di base di un flusso, usare ClfsAdvanceLogBase, che non scarica necessariamente dati in una risorsa di archiviazione stabile.

Per una spiegazione dei concetti e della terminologia di CLFS, vedere Common Log File System.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Server 2003 R2, Windows Vista e versioni successive di Windows.
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h)
Libreria Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

Vedi anche

CLFS_LSN

ClfsAdvanceLogBase

ClfsCreateMarshallingArea

ClfsReadPreviousRestartArea

ClfsReadRestartArea