Compartir a través de


Función ClfsCreateMarshallingArea (wdm.h)

La rutina ClfsCreateMarshallingArea crea un área de serialización para una secuencia CLFS y devuelve un puntero a un contexto opaco que representa el nuevo área de serialización.

Sintaxis

CLFSUSER_API NTSTATUS ClfsCreateMarshallingArea(
  [in]           PLOG_FILE_OBJECT   plfoLog,
  [in]           POOL_TYPE          ePoolType,
  [in, optional] PALLOCATE_FUNCTION pfnAllocBuffer,
  [in, optional] PFREE_FUNCTION     pfnFreeBuffer,
  [in]           ULONG              cbMarshallingBuffer,
  [in]           ULONG              cMaxWriteBuffers,
  [in]           ULONG              cMaxReadBuffers,
  [out]          PVOID              *ppvMarshalContext
);

Parámetros

[in] plfoLog

Puntero a una estructura de LOG_FILE_OBJECT que representa una secuencia CLFS. El autor de la llamada obtuvo este puntero llamando a ClfsCreateLogFile.

[in] ePoolType

Valor de POOL_TYPE que especifica el tipo de memoria (paginado, no paginado, por ejemplo) que usará el nuevo área de serialización para sus bloques de E/S de registro.

[in, optional] pfnAllocBuffer

NULL o un puntero a una función proporcionada por el autor de la llamada que asigna un bloque de E/S de registro para el área de serialización. La función de asignación tiene el siguiente prototipo:

PVOID
(*PALLOCATE_FUNCTION) (
    IN POOL_TYPE PoolType,
    IN SIZE_T NumberOfBytes,
    IN ULONG Tag
    );

El valor devuelto de la función de asignación es un puntero al bloque de E/S de registro recién asignado.

[in, optional] pfnFreeBuffer

NULL o un puntero a una función proporcionada por el autor de la llamada que libera un bloque de E/S de registro asignado previamente por pfnAllocBuffer. La función tiene el siguiente prototipo:

VOID
(*PFREE_FUNCTION) (
    IN PVOID Buffer
    );

[in] cbMarshallingBuffer

Tamaño, en bytes, de los bloques de E/S de registro individuales que usa el nuevo área de serialización. Debe ser un múltiplo del tamaño del sector en el medio de almacenamiento estable. El tamaño del sector es el valor lpBytesPerSector devuelto de GetDiskFreeSpace.

[in] cMaxWriteBuffers

Número máximo de bloques de E/S que se pueden asignar al mismo tiempo para las operaciones de escritura. Este parámetro afecta a la frecuencia de vaciados de datos. Si no necesita controlar la frecuencia de vaciado de datos, establezca este parámetro en INFINITE.

[in] cMaxReadBuffers

Número máximo de bloques de E/S de registro que se pueden asignar al mismo tiempo para las operaciones de lectura.

[out] ppvMarshalContext

Puntero a una variable que recibe un puntero a un contexto opaco que representa el nuevo área de serialización.

Valor devuelto

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

Comentarios

Los parámetros pfnAllocBuffer y pfnFreeBuffer deben apuntar a funciones asignadas por el autor de la llamada o ambas deben ser NULL. Si son NULL, CLFS proporciona funciones predeterminadas para asignar y liberar bloques de E/S de registro.

Antes de llamar a ClfsCreateMarshallingArea, debe agregar al menos dos contenedores al registro subyacente llamando a ClfsAddLogContainer o ClfsAddLogContainerSet.

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

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h)
Library Clfs.lib
Archivo DLL Clfs.sys
IRQL IRQL <= APC_LEVEL

Consulte también

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE