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 |