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 |