Funzione CreateLogMarshallingArea (clfsw32.h)

Crea un'area di marshalling per un log e, in caso di esito positivo, restituisce un contesto di marshalling. Prima di creare un'area di marshalling, il log deve avere almeno un contenitore.

Il contesto di marshalling viene usato per accodare o leggere record da un log. Poiché i record vengono sempre archiviati nei blocchi di log, devono passare attraverso il contesto di marshalling.

I record di log vengono scritti chiamando ReserveAndAppendLog.

Sintassi

CLFSUSER_API BOOL CreateLogMarshallingArea(
  [in]           HANDLE                  hLog,
  [in, optional] CLFS_BLOCK_ALLOCATION   pfnAllocBuffer,
  [in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
  [in, optional] PVOID                   pvBlockAllocContext,
  [in]           ULONG                   cbMarshallingBuffer,
  [in]           ULONG                   cMaxWriteBuffers,
  [in]           ULONG                   cMaxReadBuffers,
  [out]          PVOID                   *ppvMarshal
);

Parametri

[in] hLog

Handle per il log ottenuto da CreateLogFile.

L'handle di log può fare riferimento a un log dedicato o multiplexed.

[in, optional] pfnAllocBuffer

Funzione di callback che alloca memoria per i blocchi di log.

Se questo parametro è NULL, Common Log File System (CLFS) fornisce una funzione di allocazione dei blocchi predefinita. Questo parametro non può essere NULL se viene specificato un callback senza blocchi usando il parametro pfnFreeBuffer .

Nell'esempio seguente viene identificata la sintassi della funzione di callback di allocazione dei blocchi:

typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);

[in, optional] pfnFreeBuffer

Funzione di callback che libera i blocchi di log allocati da pfnAllocBuffer.

Se questo parametro è NULL, CLFS fornisce una funzione di deallocazione dei blocchi predefinita. Questo parametro non può essere NULL se viene specificato un callback di allocazione di blocchi usando il parametro pfnAllocBuffer .

Nell'esempio seguente viene identificata la sintassi della funzione di callback senza blocchi:

typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);

Il parametro buffer di "ClfsBlockDeallocProc" deve puntare a un blocco allocato usando il callback a cui punta pfnAllocBuffer.

[in, optional] pvBlockAllocContext

Puntatore a un buffer passato come contesto utente alle routine di allocazione e deallocazione dei blocchi, se viene specificato un buffer.

Se pfnAllocBuffer è NULL, questo parametro viene ignorato.

[in] cbMarshallingBuffer

Dimensioni, in byte, dei singoli blocchi di I/O del log che verranno usati dalla nuova area di marshalling. Deve trattarsi di un multiplo delle dimensioni del settore nel supporto di archiviazione stabile. La dimensione del settore è il valore restituito nel parametro lpBytesPerSector della funzione GetDiskFreeSpace .

I record non possono essere accodati o letti se sono più lunghi di questo valore.

[in] cMaxWriteBuffers

Numero massimo di blocchi che possono essere allocati in qualsiasi momento per le operazioni di scrittura.

Questo valore può influire sulla frequenza degli scaricamenti dei dati. Se non è necessario specificare un limite per controllare la frequenza del ciclo di scaricamento dei dati, specificare INFINITE.

[in] cMaxReadBuffers

Numero massimo di blocchi che possono essere allocati in qualsiasi momento per le operazioni di lettura.

I contesti di lettura usano almeno un blocco di lettura.

[out] ppvMarshal

Puntatore al contesto di marshalling allocato da CLFS al completamento di CreateLogMarshallingArea .

Questo contesto deve essere usato con tutte le operazioni di lettura, aggiunta, scrittura e scaricamento per registrare le aree di marshalling. Tutte le operazioni che accedono alle aree di marshalling tramite un contesto di marshalling sono thread-safe. Questo parametro è NULL se l'operazione non riesce.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

L'elenco seguente identifica i possibili codici di errore:

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione clfsw32.h
Libreria Clfsw32.lib
DLL Clfsw32.dll

Vedi anche

Funzioni comuni del file system di log

CreateLogFile

DeleteLogMarshallingArea