Função ClfsCreateMarshallingArea (wdm.h)
A rotina ClfsCreateMarshallingArea cria uma área de marshalling para um fluxo CLFS e retorna um ponteiro para um contexto opaco que representa a nova área de marshalling.
Sintaxe
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
Um ponteiro para uma estrutura LOG_FILE_OBJECT que representa um fluxo CLFS. O chamador obteve esse ponteiro anteriormente chamando ClfsCreateLogFile.
[in] ePoolType
Um valor POOL_TYPE que especifica o tipo de memória (paginado, não paginado, por exemplo) que a nova área de marshalling usará para seus blocos de E/S de log.
[in, optional] pfnAllocBuffer
NULL ou um ponteiro para uma função fornecida pelo chamador que aloca um bloco de E/S de log para a área de marshalling. A função de alocação tem o seguinte protótipo:
PVOID
(*PALLOCATE_FUNCTION) (
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag
);
O valor retornado da função de alocação é um ponteiro para o bloco de E/S de log recém-alocado.
[in, optional] pfnFreeBuffer
NULL ou um ponteiro para uma função fornecida pelo chamador que libera um bloco de E/S de log que foi alocado anteriormente por pfnAllocBuffer. A função tem o seguinte protótipo:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
[in] cbMarshallingBuffer
O tamanho, em bytes, dos blocos de E/S de log individuais que a nova área de marshalling usa. Esse deve ser um múltiplo do tamanho do setor no meio de armazenamento estável. O tamanho do setor é o valor lpBytesPerSector retornado de GetDiskFreeSpace.
[in] cMaxWriteBuffers
O número máximo de blocos de E/S que podem ser alocados ao mesmo tempo para operações de gravação. Esse parâmetro afeta a frequência de liberações de dados. Se você não precisar controlar a frequência de liberações de dados, defina esse parâmetro como INFINITE.
[in] cMaxReadBuffers
O número máximo de blocos de E/S de log que podem ser alocados ao mesmo tempo para operações de leitura.
[out] ppvMarshalContext
Um ponteiro para uma variável que recebe um ponteiro para um contexto opaco que representa a nova área de marshalling.
Retornar valor
ClfsCreateMarshallingArea retornará STATUS_SUCCESS se tiver êxito; caso contrário, retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
Os parâmetros pfnAllocBuffer e pfnFreeBuffer devem apontar para funções alocadas pelo chamador ou ambas devem ser NULL. Se ambos forem NULL, o CLFS fornecerá funções padrão para alocar e liberar blocos de E/S de log.
Antes de chamar ClfsCreateMarshallingArea, você deve adicionar pelo menos dois contêineres ao log subjacente chamando ClfsAddLogContainer ou ClfsAddLogContainerSet.
Para obter uma explicação dos conceitos e terminologia do CLFS, consulte Common Log File System.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | wdm.h (inclua Wdm.h) |
Biblioteca | Clfs.lib |
DLL | Clfs.sys |
IRQL | IRQL <= APC_LEVEL |