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 précédemment obtenu 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 du journal.

[in, optional] pfnAllocBuffer

NULL ou 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 qui vient d’être alloué.

[in, optional] pfnFreeBuffer

NULL ou pointeur vers une fonction fournie par l’appelant qui libère un bloc d’E/S de journal 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 de secteur est la valeur lpBytesPerSector retournée par GetDiskFreeSpace.

[in] cMaxWriteBuffers

Nombre maximal de blocs d’E/S pouvant ê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 pouvant être alloués en une seule 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 retournée

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 à l’appelant, ou ils doivent tous deux avoir la valeur NULL. S’ils sont tous les deux NULL, CLFS fournit des fonctions par défaut pour l’allocation et la libération des blocs d’E/S du 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.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
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