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 |