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 |