Función ClfsReserveAndAppendLogAligned (wdm.h)

La rutina ClfsReserveAndAppendLogAligned reserva espacio en un área de serialización o anexa un registro a un área de serialización o realiza ambos de forma atómica. Los datos del registro se alinean en los límites especificados.

Sintaxis

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
);

Parámetros

[in] pvMarshalContext

Puntero a un contexto opaco que representa un área de serialización asociada a una secuencia CLFS. El autor de la llamada obtuvo anteriormente este puntero llamando a ClfsCreateMarshallingArea.

[in, optional] rgWriteEntries

Puntero a una matriz de estructuras de CLFS_WRITE_ENTRY , cada una de las cuales contiene un puntero a un búfer de datos que se convertirá en parte del registro que se anexa al registro. Este parámetro puede ser NULL si cWriteEntries es cero.

[in] cWriteEntries

Número de elementos de la matriz a los que apunta rgWriteEntries. Este parámetro debe ser cero si rgWriteEntries es NULL.

[in] cbEntryAlignment

Alineación de bytes de las entradas de datos a las que apunta rgWriteEntries a medida que se serializa en un único registro. Un valor de uno especifica la concatenación simple (vea ClfsReserveAndAppendLog). Un valor mayor que uno puede dar lugar a ceros que se colocan entre las entradas del registro. El valor de este parámetro debe ser mayor que cero.

[in, optional] plsnUndoNext

Puntero a una estructura CLFS_LSN que proporciona el LSN de deshacer siguiente del registro que se va a anexar.

[in, optional] plsnPrevious

Puntero a una estructura de CLFS_LSN que proporciona el LSN anterior del registro que se va a anexar.

[in] cReserveRecords

Número de elementos de la matriz a los que apunta rgcbReservation. Este parámetro debe ser cero si rgcbReservation es NULL o se establece la marca CLFS_FLAG_USE_RESERVATION de fFlags .

[in, out] rgcbReservation

Puntero a una matriz de variables con tipo LONGLONG. El autor de la llamada establece cada elemento de la matriz en el tamaño, en bytes, de un registro que debe tener espacio reservado para ella. Al devolver, cada elemento de matriz recibe ese tamaño real del espacio reservado para el registro. Esto incluye el espacio necesario para los encabezados y la alineación. Si el valor de reserva es negativo, se liberará un registro reservado que casi coincide con el valor absoluto del valor negativo proporcionado. Este parámetro puede ser NULL si cReserveRecords es cero y debe ser NULL si se establece la marca CLFS_FLAG_USE_RESERVATION de fFlags .

[in] fFlags

Este parámetro puede ser cualquier combinación de las marcas siguientes.

Marca Significado
CLFS_FLAG_FORCE_APPEND Después de anexar el registro actual a un bloque de E/S de registro, el bloque se pone en cola, en secuencia LSN, en almacenamiento estable. Esta marca no proporciona ninguna garantía de que el registro esté forzado a un almacenamiento estable (consulte CLFS_FLAG_FORCE_FLUSH).
CLFS_FLAG_FORCE_FLUSH Después de anexar el registro actual a un bloque de E/S de registro, el bloque se fuerza al almacenamiento estable.
CLFS_FLAG_USE_RESERVATION El registro actual se coloca en espacio reservado en un bloque de E/S. El número de registros reservados en el área de serialización se reduce en uno. Si se establece esta marca, cReserveRecords debe ser cero y rgcbReservation debe ser NULL.

[out, optional] plsn

Puntero a una estructura CLFS_LSN que recibe el LSN del registro anexado. Este parámetro puede ser NULL si cWriteEntries es cero.

Valor devuelto

ClfsReserveAndAppendLogAligned devuelve STATUS_SUCCESS si se realiza correctamente; de lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.

Comentarios

La rutina ClfsReserveAndAppendLogAligned cambia su comportamiento fundamental en función de la presencia de parámetros opcionales y del estado de la marca CLFS_USE_RESERVATION. En la tabla siguiente se resumen los escenarios comunes.

Parámetros y valores de marca Acciones realizadas
cWriteEntries = 0.

rgWriteEntries = NULL.

plsn = NULL.

Reserva espacio para un conjunto de registros, pero no anexa los registros al área de serialización. El parámetro rgcbReservation proporciona el tamaño de la parte de datos de cada registro que necesita espacio reservado.
cWriteEntries > 0.

rgWriteEntries no es NULL.

plsn no es NULL.

cReserveRecords = 0.

rgcbReservation es NULL.

CLFS_USE_RESERVATION se establece.

Anexa un registro al área de serialización mediante el espacio que ya se ha reservado. Reduce el número de espacios de registro reservados en uno.
cWriteEntries > 0.

rgWriteEntries no es NULL.

plsn no es NULL.

cReserveRecords = 0.

rgcbReservation es NULL.

CLFS_USE_RESERVATION se borra.

Anexa un registro al área de serialización reservando un nuevo espacio. Deja sin cambios el número de espacios de registro reservados.
cWriteEntries > 0.

rgWriteEntries no es NULL.

plsn no es NULL.

cReserveRecords> 0.

rgcbReservation no es NULL.

CLFS_USE_RESERVATION marca está desactivada.

Anexa un registro al área de serialización reservando un nuevo espacio. También reserva espacio para un conjunto de registros que no se anexan en este momento. El parámetro rgcbReservation proporciona el tamaño de cada registro que necesita espacio reservado. Aumenta el número de espacios de registros reservados por el valor de cReserveRecords.
 

Para obtener una explicación de los conceptos y la terminología de CLFS, consulte Common Log File System.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Server 2003 R2, Windows Vista y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h)
Library Clfs.lib
Archivo DLL Clfs.sys
IRQL <= APC_LEVEL

Consulte también

CLFS_LSN

CLFS_WRITE_ENTRY

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog