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 |