Función ReserveAndAppendLog (clfsw32.h)

Reserva espacio para los búferes de registro, o anexa un registro al registro, o bien ambos. La función es atómica.

Sintaxis

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

Parámetros

[in] pvMarshal

Puntero a un contexto de serialización asignado mediante la función CreateLogMarshallingArea .

[in, optional] rgWriteEntries

Puntero a una matriz de CLFS_WRITE_ENTRY búferes que se van a serializar en un registro.

Este parámetro se omite si el parámetro cWriteEntries es cero.

[in] cWriteEntries

Número de entradas de escritura en la matriz rgWriteEntries .

Si este valor es distinto de cero, debe especificar un búfer en el parámetro rgWriteEntries .

[in, optional] plsnUndoNext

Puntero a una estructura de CLFS_LSN que especifica el número de secuencia de registro (LSN) del siguiente registro de la cadena de deshacer.

[in, optional] plsnPrevious

Puntero a una estructura de CLFS_LSN que especifica el LSN del registro anterior en la cadena anterior.

[in] cReserveRecords

Número de tamaños de registro en la matriz rgcbReservation .

[in, out, optional] rgcbReservation

Puntero a una matriz de tamaños de reserva para cada registro que especifica el parámetro cReserveRecords .

Este parámetro se omite si el parámetro cReserveRecords es cero. Si un tamaño de reserva es negativo, se libera una reserva de ese tamaño.

El espacio real reservado para cada registro, incluida la sobrecarga necesaria, se devuelve en los elementos de matriz individuales cuando se completa correctamente. Estos valores se pueden pasar a la función FreeReservedLog para ajustar el espacio reservado en el área de cálculo de referencias.

[in] fFlags

Marcas que especifican el comportamiento de esta función.

Se pueden combinar uno o varios de los valores siguientes.

Valor Significado
CLFS_FLAG_FORCE_APPEND
Asigna una ubicación física para todos los registros anexados de un registro que no se ha asignado previamente a una ubicación física.

Todos estos registros están disponibles para su lectura desde otros contextos de cálculo de referencias.

CLFS_FLAG_FORCE_FLUSH
Asigna una ubicación física para todos los registros anexados de un registro que no se ha asignado previamente a una ubicación física.

Todos estos registros están disponibles para su lectura desde otros contextos de cálculo de referencias. A continuación, los registros se vacían en el disco.

CLFS_FLAG_NO_FLAGS
No asigna ninguna marca.
CLFS_FLAG_USE_RESERVATION
Anexa el registro actual mediante el espacio reservado en el área de cálculo de referencias.

[out, optional] plsn

Puntero a una estructura CLFS_LSN que recibe el LSN del registro anexado.

[in, out, optional] pOverlapped

Puntero a una estructura OVERLAPPED.

Este parámetro puede ser NULL si no se usa la operación asincrónica.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información ampliada de los errores, llame a la función GetLastError.

En la lista siguiente se identifican los posibles códigos de error:

Comentarios

El LSN devuelto por la función ReserveAndAppendLog no es necesariamente el siguiente LSN que se usa. El LSN que se devuelve es una estimación del siguiente LSN y varía en función de las marcas especificadas por el parámetro fFlags . El LSN que se devuelve se puede usar al mover la cola base. La siguiente llamada a esta función invalida este LSN.

Si la función ReserveAndAppendLog devuelve ERROR_LOG_FILE_FULL, no hay más espacio en el registro. Esto se puede resolver de una de las maneras siguientes:

  • Libere las reservas innecesarias.
  • Avance el LSN base o el final del archivo de registro, o ambos, para reciclar los contenedores.
  • Agregue contenedores al registro.
La API de administración de CLFS también proporciona una manera de controlar escenarios que implican registros completos.

Si se llama a la función ReserveAndAppendLog con una estructura pOverlapped válida y el identificador de registro se crea con la opción superpuesta, si se produce un error en una llamada a esta función con un código de error de ERROR_IO_PENDING, se coloca un puntero a un contexto de lectura válido en la variable a la que apunta el parámetro ppvReadContext .

Para completar la copia del registro, el cliente debe sincronizar primero su ejecución con la finalización diferida de la operación de E/S superpuesta mediante la función GetOverlappedResult o una de las funciones de espera de sincronización. Para obtener más información, vea Sincronización y entrada y salida superpuestas.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado clfsw32.h
Library Clfsw32.lib
Archivo DLL Clfsw32.dll

Consulte también

CLFS_LSN

CLFS_WRITE_ENTRY

Funciones comunes del sistema de archivos de registro

OVERLAPPED