Condividi tramite


Funzione ClfsCreateMarshallingArea (wdm.h)

La routine ClfsCreateMarshallingArea crea un'area di marshalling per un flusso CLFS e restituisce un puntatore a un contesto opaco che rappresenta la nuova area di marshalling.

Sintassi

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
);

Parametri

[in] plfoLog

Puntatore a una struttura LOG_FILE_OBJECT che rappresenta un flusso CLFS. Il chiamante ha ottenuto in precedenza questo puntatore chiamando ClfsCreateLogFile.

[in] ePoolType

Valore POOL_TYPE che specifica il tipo di memoria (paging, non di paging, ad esempio) che la nuova area di marshalling userà per i blocchi di I/O del log.

[in, optional] pfnAllocBuffer

Null o un puntatore a una funzione fornita dal chiamante che alloca un blocco di I/O del log per l'area di marshalling. La funzione di allocazione ha il prototipo seguente:

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

Il valore restituito della funzione di allocazione è un puntatore al blocco di I/O del log appena allocato.

[in, optional] pfnFreeBuffer

Null o un puntatore a una funzione fornita dal chiamante che libera un blocco di I/O del log allocato in precedenza da pfnAllocBuffer. La funzione ha il prototipo seguente:

VOID
(*PFREE_FUNCTION) (
    IN PVOID Buffer
    );

[in] cbMarshallingBuffer

Dimensioni, in byte, dei singoli blocchi di I/O del log usati dalla nuova area di marshalling. Deve trattarsi di un multiplo delle dimensioni del settore nel supporto di archiviazione stabile. Le dimensioni del settore sono il valore lpBytesPerSector restituito da GetDiskFreeSpace.

[in] cMaxWriteBuffers

Numero massimo di blocchi di I/O che possono essere allocati contemporaneamente per le operazioni di scrittura. Questo parametro influisce sulla frequenza degli scaricamenti dei dati. Se non è necessario controllare la frequenza degli scaricamenti di dati, impostare questo parametro su INFINITE.

[in] cMaxReadBuffers

Numero massimo di blocchi di I/O del log che possono essere allocati contemporaneamente per le operazioni di lettura.

[out] ppvMarshalContext

Puntatore a una variabile che riceve un puntatore a un contesto opaco che rappresenta la nuova area di marshalling.

Valore restituito

ClfsCreateMarshallingArea restituisce STATUS_SUCCESS se ha esito positivo; in caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.

Commenti

I parametri pfnAllocBuffer e pfnFreeBuffer devono puntare entrambe alle funzioni allocate dal chiamante oppure devono essere entrambi NULL. Se sono entrambi NULL, CLFS fornisce funzioni predefinite per l'allocazione e la liberazione di blocchi di I/O del log.

Prima di chiamare ClfsCreateMarshallingArea, è necessario aggiungere almeno due contenitori al log sottostante chiamando ClfsAddLogContainer o ClfsAddLogContainerSet.

Per una spiegazione dei concetti e della terminologia di CLFS, vedere Common Log File System.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h)
Libreria Clfs.lib
DLL Clfs.sys
IRQL IRQL <= APC_LEVEL

Vedi anche

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE