CreateLogMarshallingArea, fonction (clfsw32.h)

Crée une zone de marshaling pour un journal et, en cas de réussite, retourne un contexte de marshaling. Avant de créer une zone de marshaling, le journal doit avoir au moins un conteneur.

Le contexte de marshaling est utilisé pour ajouter des enregistrements à ou lire des enregistrements à partir d’un journal. Étant donné que les enregistrements sont toujours stockés dans des blocs de journal, ils doivent passer par le contexte de marshaling.

Les enregistrements de journal sont écrits en appelant ReserveAndAppendLog.

Syntaxe

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

Paramètres

[in] hLog

Handle du journal obtenu à partir de CreateLogFile.

Le handle de journal peut faire référence à un journal dédié ou multiplexé.

[in, optional] pfnAllocBuffer

Fonction de rappel qui alloue de la mémoire pour les blocs de journal.

Si ce paramètre a la valeur NULL, le système CLFS (Common Log File System) fournit une fonction d’allocation de blocs par défaut. Ce paramètre ne peut pas être NULL si un rappel sans bloc est spécifié à l’aide du paramètre pfnFreeBuffer .

L’exemple suivant identifie la syntaxe de la fonction de rappel d’allocation de blocs :

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

[in, optional] pfnFreeBuffer

Fonction de rappel qui libère les blocs de journal alloués par pfnAllocBuffer.

Si ce paramètre a la valeur NULL, CLFS fournit une fonction de désallocation de bloc par défaut. Ce paramètre ne peut pas être NULL si un rappel d’allocation de blocs est spécifié à l’aide du paramètre pfnAllocBuffer .

L’exemple suivant identifie la syntaxe de la fonction de rappel sans bloc :

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

Le paramètre de mémoire tampon de « ClfsBlockDeallocProc » doit pointer vers un bloc alloué à l’aide du rappel pointé par pfnAllocBuffer.

[in, optional] pvBlockAllocContext

Pointeur vers une mémoire tampon qui est passée en tant que contexte utilisateur aux routines d’allocation et de désallocation de blocs, si une mémoire tampon est spécifiée.

Si pfnAllocBuffer a la valeur NULL, ce paramètre est ignoré.

[in] cbMarshallingBuffer

Taille, en octets, des blocs d’E/S du journal individuels qui seront utilisés par la nouvelle zone de marshaling. Il doit s’agir d’un multiple de la taille du secteur sur le support de stockage stable. La taille de secteur est la valeur retournée dans le paramètre lpBytesPerSector de la fonction GetDiskFreeSpace .

Les enregistrements ne peuvent pas être ajoutés ou lus s’ils sont plus longs que cette valeur.

[in] cMaxWriteBuffers

Nombre maximal de blocs pouvant être alloués à tout moment pour les opérations d’écriture.

Cette valeur peut affecter la fréquence des vidages de données. Si vous n’avez pas besoin de spécifier une limite pour contrôler la fréquence du cycle de vidage des données, spécifiez INFINITE.

[in] cMaxReadBuffers

Nombre maximal de blocs pouvant être alloués à tout moment pour les opérations de lecture.

Les contextes de lecture utilisent au moins un bloc de lecture.

[out] ppvMarshal

Pointeur vers le contexte de marshaling que CLFS alloue lorsque CreateLogMarshallingArea se termine correctement.

Ce contexte doit être utilisé avec toutes les opérations de lecture, d’ajout, d’écriture et de vidage pour journaliser les zones de marshaling. Toutes les opérations qui accèdent aux zones de marshaling à l’aide d’un contexte de marshaling sont thread-safe. Ce paramètre a la valeur NULL si l’opération ne réussit pas.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

La liste suivante identifie les codes d’erreur possibles :

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête clfsw32.h
Bibliothèque Clfsw32.lib
DLL Clfsw32.dll

Voir aussi

Fonctions courantes du système de fichiers journaux

CreateLogFile

DeleteLogMarshallingArea