Compartir a través de


Función ClfsCreateMarshallingArea (wdm.h)

El ClfsCreateMarshallingArea rutina crea un área de serialización para un flujo 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 LOG_FILE_OBJECT que representa una secuencia CLFS. El autor de la llamada obtuvo anteriormente 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 de 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 vaciado 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.

Observaciones

El pfnAllocBuffer de y parámetros pfnFreeBuffer deben apuntar a funciones asignadas por el autor de la llamada o ambas deben ser NULL. Si ambos 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 Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (incluya Wdm.h)
biblioteca de Clfs.lib
DLL de Clfs.sys
irQL IRQL <= APC_LEVEL

Consulte también

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE