Función ReadLogRecord (clfsw32.h)

Inicia una secuencia de lecturas de un número de secuencia de registro (LSN) especificado en uno de tres modos y devuelve el primero de los registros especificados y un contexto de lectura. Un cliente puede leer los registros posteriores en el modo designado pasando el contexto de lectura a ReadNextLogRecord.

Sintaxis

CLFSUSER_API BOOL ReadLogRecord(
  [in]                PVOID             pvMarshal,
  [in]                PCLFS_LSN         plsnFirst,
  [in]                CLFS_CONTEXT_MODE eContextMode,
  [out]               PVOID             *ppvReadBuffer,
  [out]               PULONG            pcbReadBuffer,
  [out]               PCLFS_RECORD_TYPE peRecordType,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PVOID             *ppvReadContext,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

Parámetros

[in] pvMarshal

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

[in] plsnFirst

Puntero a una estructura de CLFS_LSN que especifica el número de secuencia de registro (LSN) del registro donde se debe iniciar la operación de lectura.

Este valor debe ser un LSN de un registro válido en el intervalo activo del registro.

[in] eContextMode

Modo del contexto de lectura que se devuelve en *ppvReadContext.

En la tabla siguiente se identifican los tres modos de lectura mutuamente excluyentes.

Valor Significado
ClfsContextPrevious
Lee el registro vinculado a plsnPrevious.
ClfsContextUndoNext
Lee la cadena de registros vinculada a por plsnUndoNext.
ClfsContextForward
Lee el registro con el LSN que sigue inmediatamente al LSN actual en el contexto de lectura.

[out] ppvReadBuffer

Puntero a una variable que recibe un puntero al registro de destino en el bloque de E/S de registro.

[out] pcbReadBuffer

Puntero a una variable que recibe el tamaño de los datos que se devuelven en *ppvReadBuffer, en bytes.

[out] peRecordType

Puntero a una variable que recibe el tipo de registro leído.

Este parámetro es una de las CLFS_RECORD_TYPE Constantes.

[out] plsnUndoNext

Puntero a una estructura de CLFS_LSN que recibe el LSN del siguiente registro en la cadena de registros deshacer.

[out] plsnPrevious

Puntero a una estructura de CLFS_LSN que recibe el LSN del siguiente registro de la cadena de registros anterior.

[out] ppvReadContext

Puntero a una variable que recibe un puntero a un contexto de lectura asignado por el sistema cuando una lectura se realiza correctamente.

Si la función aplaza la finalización de una operación, devuelve un puntero de contexto de lectura válido y un estado de error de ERROR_IO_PENDING. En todos los demás errores, el puntero de contexto de lectura es NULL. Para obtener más información sobre cómo controlar la finalización diferida de la función, vea la sección Comentarios de este tema.

Después de obtener todos los registros de registro solicitados, el cliente debe pasar el contexto de lectura a TerminateReadLog para liberar la memoria asociada. Si no lo hace, se produce una pérdida de memoria.

Nota Los contextos de lectura comunes del Sistema de archivos de registro (CLFS) no son seguros para subprocesos. No deben usarse en más de un subproceso a la vez o pasarse a más de una lectura asincrónica a la vez.
 

[in, out, optional] pOverlapped

Puntero a una estructura SUPERPUESTA , que es necesaria para la operación asincrónica.

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 de error extendida, llame a GetLastError.

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

Comentarios

El mensaje de error ERROR_LOG_BLOCK_INCOMPLETE se devuelve si el tamaño del bloque de registro especificado por CreateLogMarshallingArea no es lo suficientemente grande como para contener un bloque de registro completo.

Si se llama a ReadLogRecord 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 .

Si intenta abrir más contextos de lectura que los búferes de números especificados en una llamada anterior a CreateLogMarshallingArea, se devuelve ERROR_LOG_BLOCK_EXHAUSTED.

Para completar una copia de registro de registro, el cliente debe sincronizar primero su ejecución con la finalización diferida de la operación de E/S superpuesta mediante 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.

Una vez que ReadLogRecord se completa de forma asincrónica, el registro solicitado se lee desde el disco, pero no se resuelve en un puntero de *ppvReadBuffer.

Para completar la lectura solicitada y obtener un puntero válido al registro de registro, el cliente debe llamar a ReadNextLogRecord, que pasa el puntero de contexto de lectura que ReadLogRecord devuelve.

Nota Los contextos de lectura comunes del Sistema de archivos de registro (CLFS) no son seguros para subprocesos. No deben ser utilizados por más de un subproceso a la vez.

Los contextos de lectura de CLFS no deben pasarse a más de una lectura asincrónica a la vez o se produce un error en la función con ERROR_BUSY.

 

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_CONTEXT_MODE

CLFS_LSN

CLFS_RECORD_TYPE

Funciones comunes del sistema de archivos de registro

CreateLogMarshallingArea

OVERLAPPED

ReadNextLogRecord

TerminateReadLog