Condividi tramite


Funzione ClfsReserveAndAppendLogAligned (wdm.h)

La routine ClfsReserveAndAppendLogAligned riserva spazio in un'area di marshalling o aggiunge un record a un'area di marshalling o esegue entrambe le operazioni atomiche. I dati del record sono allineati ai limiti specificati.

Sintassi

CLFSUSER_API NTSTATUS ClfsReserveAndAppendLogAligned(
  [in]            PVOID             pvMarshalContext,
  [in, optional]  PCLFS_WRITE_ENTRY rgWriteEntries,
  [in]            ULONG             cWriteEntries,
  [in]            ULONG             cbEntryAlignment,
  [in, optional]  PCLFS_LSN         plsnUndoNext,
  [in, optional]  PCLFS_LSN         plsnPrevious,
  [in]            ULONG             cReserveRecords,
  [in, out]       PLONGLONG         rgcbReservation,
  [in]            ULONG             fFlags,
  [out, optional] PCLFS_LSN         plsn
);

Parametri

[in] 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, optional] rgWriteEntries

Puntatore a una matrice di strutture CLFS_WRITE_ENTRY , ognuna delle quali contiene un puntatore a un buffer di dati che diventerà parte del record aggiunto al log. Questo parametro può essere NULL se cWriteEntries è zero.

[in] cWriteEntries

Numero di elementi nella matrice puntati da rgWriteEntries. Questo parametro deve essere zero se rgWriteEntries è NULL.

[in] cbEntryAlignment

Allineamento di byte delle voci di dati a cui puntano le voci di rgWriteEntries man mano che vengono marshallate in un singolo record. Un valore di uno specifica una concatenazione semplice (vedere ClfsReserveAndAppendLog). Un valore maggiore di uno può comportare zero inseriti tra voci nel record. Il valore di questo parametro deve essere maggiore di zero.

[in, optional] plsnUndoNext

Puntatore a una struttura CLFS_LSN che fornisce l'LSN di annullamento successivo del record da aggiungere.

[in, optional] plsnPrevious

Puntatore a una struttura CLFS_LSN che fornisce l'LSN precedente del record da aggiungere.

[in] cReserveRecords

Numero di elementi nella matrice a cui punta rgcbReservation. Questo parametro deve essere zero se rgcbReservation è NULL o il flag CLFS_FLAG_USE_RESERVATION di fFlags è impostato.

[in, out] rgcbReservation

Puntatore a una matrice di variabili tipizzata LONGLONG. Il chiamante imposta ogni elemento della matrice alle dimensioni, in byte, di un record che deve avere una riserva di spazio. In caso di ritorno, ogni elemento della matrice riceve la dimensione effettiva dello spazio riservato per il record. Questo include lo spazio necessario per le intestazioni e l'allineamento. Se il valore della prenotazione è negativo, verrà liberato un record riservato che corrisponde quasi al valore assoluto del valore negativo specificato. Questo parametro può essere NULL se cReserveRecords è zero e deve essere NULL se il flag CLFS_FLAG_USE_RESERVATION di fFlags è impostato.

[in] fFlags

Questo parametro può essere qualsiasi combinazione dei flag seguenti.

Contrassegno Significato
CLFS_FLAG_FORCE_APPEND Dopo aver aggiunto il record corrente a un blocco di I/O log, il blocco viene accodato, nella sequenza LSN, all'archiviazione stabile. Questo flag non garantisce che il record sia costretto a archiviare stabile (vedere CLFS_FLAG_FORCE_FLUSH).
CLFS_FLAG_FORCE_FLUSH Dopo l'aggiunta del record corrente a un blocco di I/O del log, il blocco viene forzato all'archiviazione stabile.
CLFS_FLAG_USE_RESERVATION Il record corrente viene inserito nello spazio riservato in un blocco di I/O. Il numero di record riservati nell'area di marshalling è ridotto di uno. Se questo flag è impostato, cReserveRecords deve essere zero e rgcbReservation deve essere NULL.

[out, optional] plsn

Puntatore a una struttura CLFS_LSN che riceve l'LSN del record aggiunto. Questo parametro può essere NULL se cWriteEntries è zero.

Valore restituito

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

Commenti

La routine ClfsReserveAndAppendLogAligned modifica il comportamento fondamentale in base alla presenza di parametri facoltativi e allo stato del flag di CLFS_USE_RESERVATION. La tabella seguente riepiloga gli scenari comuni.

Valori di parametro e flag Azioni eseguite
cWriteEntries = 0.

rgWriteEntries = NULL.

plsn = NULL.

Riserva spazio per un set di record, ma non aggiunge i record all'area di marshalling. Il parametro rgcbReservation fornisce le dimensioni della parte dati di ogni record che necessita di spazio riservato.
cWriteEntries > 0.

rgWriteEntries non è NULL.

plsn non è NULL.

cReserveRecords = 0.

rgcbReservation è NULL.

CLFS_USE_RESERVATION è impostato.

Aggiunge un record all'area di marshalling usando lo spazio già riservato. Riduce il numero di spazi di record riservati per uno.
cWriteEntries > 0.

rgWriteEntries non è NULL.

plsn non è NULL.

cReserveRecords = 0.

rgcbReservation è NULL.

CLFS_USE_RESERVATION è stato cancellato.

Aggiunge un record all'area di marshalling riservando nuovo spazio. Lascia invariato il numero di spazi di record riservati.
cWriteEntries > 0.

rgWriteEntries non è NULL.

plsn non è NULL.

cReserveRecords> 0.

rgcbReservation non è NULL.

CLFS_USE_RESERVATION flag è deselezionato.

Aggiunge un record all'area di marshalling riservando nuovo spazio. Riserva anche spazio per un set di record che non vengono accodati in questo momento. Il parametro rgcbReservation fornisce le dimensioni di ogni record che necessita di spazio riservato. Aumenta il numero di spazi di record riservati in base al valore di cReserveRecords.
 

Per una spiegazione dei concetti e della terminologia 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

CLFS_WRITE_ENTRY

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog