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 |