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 |