Partager via


ClfsCreateMarshallingArea, fonction (wdm.h)

La routine ClfsCreateMarshallingArea crée une zone de marshaling pour un flux CLFS et retourne un pointeur vers un contexte opaque qui représente la nouvelle zone de marshaling.

Syntaxe

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

Paramètres

[in] plfoLog

Pointeur vers une structure LOG_FILE_OBJECT qui représente un flux CLFS. L’appelant a obtenu précédemment ce pointeur en appelant ClfsCreateLogFile.

[in] ePoolType

Valeur POOL_TYPE qui spécifie le type de mémoire (paginée, non paginée, par exemple) que la nouvelle zone de marshaling utilisera pour ses blocs d’E/S de journal.

[in, optional] pfnAllocBuffer

NULL ou un pointeur vers une fonction fournie par l’appelant qui alloue un bloc d’E/S de journal pour la zone de marshaling. La fonction d’allocation a le prototype suivant :

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

La valeur de retour de la fonction d’allocation est un pointeur vers le bloc d’E/S du journal nouvellement alloué.

[in, optional] pfnFreeBuffer

Soit NULL, soit un pointeur vers une fonction fournie par l’appelant qui libère un bloc d’E/S de journal qui a été précédemment alloué par pfnAllocBuffer. La fonction a le prototype suivant :

VOID
(*PFREE_FUNCTION) (
    IN PVOID Buffer
    );

[in] cbMarshallingBuffer

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

[in] cMaxWriteBuffers

Nombre maximal de blocs d’E/S qui peuvent être alloués à la fois pour les opérations d’écriture. Ce paramètre affecte la fréquence des vidages de données. Si vous n’avez pas besoin de contrôler la fréquence des vidages de données, définissez ce paramètre sur INFINITE.

[in] cMaxReadBuffers

Nombre maximal de blocs d’E/S de journal qui peuvent être alloués à la fois pour les opérations de lecture.

[out] ppvMarshalContext

Pointeur vers une variable qui reçoit un pointeur vers un contexte opaque qui représente la nouvelle zone de marshaling.

Valeur de retour

ClfsCreateMarshallingArea retourne STATUS_SUCCESS si elle réussit ; sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

Les paramètres pfnAllocBuffer et pfnFreeBuffer doivent tous deux pointer vers des fonctions allouées par l’appelant, ou ils doivent être NULL. S’ils sont tous les deux NULL, CLFS fournit des fonctions par défaut pour allouer et libérer des blocs d’E/S de journal.

Avant d’appeler ClfsCreateMarshallingArea, vous devez ajouter au moins deux conteneurs au journal sous-jacent en appelant ClfsAddLogContainer ou ClfsAddLogContainerSet.

Pour obtenir une explication des concepts et de la terminologie CLFS, consultez Common Log File System.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête wdm.h (include Wdm.h)
bibliothèque Clfs.lib
DLL Clfs.sys
IRQL IRQL <= APC_LEVEL

Voir aussi

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE