Partager via


Fonction ReadLogRestartArea (clfsw32.h)

Retourne la dernière zone de redémarrage qui a été correctement écrite dans le journal associé à la zone de marshaling de WriteLogRestartArea. La fonction retourne également un contexte de lecture qui permet à l’appelant d’effectuer un curseur vers l’arrière ou vers l’avant via un journal à partir de l’enregistrement de redémarrage.

Ce contexte de lecture est utile lors de l’analyse des zones de redémarrage précédentes avant l’actuelle en appelant ReadPreviousLogRestartArea.

Syntaxe

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

Paramètres

[in] pvMarshal

Pointeur vers un contexte de marshaling alloué à l’aide de la fonction CreateLogMarshallingArea .

[out] ppvRestartBuffer

Pointeur vers une variable qui reçoit un pointeur vers les données de redémarrage dans le bloc d’E/S du journal.

[out] pcbRestartBuffer

Pointeur vers une variable qui reçoit la quantité de données de redémarrage.

[out] plsn

Pointeur vers une structure CLFS_LSN qui reçoit le numéro séquentiel du journal (LSN) de la zone de redémarrage.

[out] ppvContext

Pointeur vers une variable qui reçoit un pointeur vers un contexte de lecture alloué par le système lorsqu’une lecture réussit.

Si la fonction diffère l’achèvement d’une opération, elle retourne un pointeur de contexte de lecture valide et une erreur status de ERROR_IO_PENDING. Pour toutes les autres erreurs, le pointeur de contexte de lecture est NULL. Pour plus d’informations sur la gestion de l’achèvement différé de la fonction, consultez la section Remarques de cette rubrique.

Après avoir obtenu tous les enregistrements de journal demandés, le client doit passer le contexte de lecture à TerminateReadLog pour libérer la mémoire associée. Si vous ne le faites pas, cela entraîne une fuite de mémoire.

Note Les contextes de lecture CLFS (Common Log File System) ne sont pas thread-safe. Ils ne doivent pas être utilisés par plusieurs threads à la fois, ou transmis à plusieurs lectures asynchrones à la fois.
 

[in, out, optional] pOverlapped

Pointeur vers une structure CHEVAUCHEMENT requise pour l’opération asynchrone.

Ce paramètre peut être NULL si aucune opération asynchrone n’est utilisée.

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 :

Remarques

Le message d’erreur ERROR_LOG_BLOCK_INCOMPLETE est retourné si la taille de bloc de journal spécifiée par CreateLogMarshallingArea n’est pas suffisamment grande pour contenir un bloc de journal complet.

En règle générale, ReadLogRestartArea est utilisé uniquement pendant le redémarrage du client, soit après un plantage, soit après un arrêt normal.

S’il n’y a pas de zone de redémarrage dans le journal, ReadLogRestartArea échoue avec le code ERROR_LOG_NO_RESTART.

Si ReadLogRestartArea échoue avec un code d’erreur ERROR_IO_PENDING, un pointeur vers un contexte de lecture valide est placé dans la variable vers laquelle pointe le paramètre ppvReadContext .

Pour terminer la copie des enregistrements de journal, le client doit d’abord synchroniser son exécution avec l’achèvement différé de l’opération d’E/S qui se chevauche en appelant GetOverlappedResult, ou l’une des fonctions d’attente de synchronisation. Pour plus d’informations, consultez Synchronisation et entrée et sortie qui se chevauchent.

Une fois ReadLogRestartArea terminé de manière asynchrone, la zone de redémarrage demandée est lue à partir du disque, mais aucun pointeur valide n’est placé dans *ppvRestartBuffer.

Pour obtenir un pointeur valide, le client doit appeler ReadPreviousLogRestartArea, qui transmet le pointeur de contexte de lecture retourné par ReadLogRestartArea.

Note Les contextes de lecture CLFS (Common Log File System) ne sont pas thread-safe. Ils ne doivent pas être utilisés par plusieurs threads à la fois.

Les contextes de lecture CLFS ne doivent pas être passés dans plusieurs lectures asynchrones à la fois, sinon la fonction échoue avec ERROR_BUSY.

 

Configuration requise

   
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

CLFS_LSN

Fonctions courantes du système de fichiers journaux

CreateLogFile

OVERLAPPED

ReadPreviousLogRestartArea

Synchronisation et entrées et sorties qui se chevauchent

WriteLogRestartArea