Fonction ReadNextLogRecord (clfsw32.h)

Lit l’enregistrement suivant dans une séquence lancée par un appel à ReadLogRecord ou ReadLogRestartArea. En utilisant ReadNextLogRecord de manière itérative, un client peut lire tous les enregistrements d’un type spécifié dans un journal. Le sens de l’énumération est déterminé en spécifiant le mode de contexte au début de la séquence de lecture.

Syntaxe

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

Paramètres

[in, out] pvReadContext

Pointeur vers un contexte de lecture que le système alloue et crée lors d’un appel réussi à ReadLogRecord ou ReadLogRestartArea.

Si la fonction reporte la fin d’une opération, elle retourne un pointeur vers un contexte de lecture valide et une erreur status de ERROR_IO_PENDING. Pour plus d’informations sur la gestion de l’achèvement asynchrone, consultez la section Remarques de cette rubrique.

[out] ppvBuffer

Pointeur vers une variable qui reçoit un pointeur vers les données lues.

[out] pcbBuffer

Pointeur vers une variable qui reçoit la taille des données de lecture retournées en ppvReadBuffer, en octets.

[in, out] peRecordType

Pointeur qui, en entrée, spécifie le filtre de type d’enregistrement de la lecture d’enregistrement suivante, et qui, en sortie, spécifie le type d’enregistrement retourné.

Les clients peuvent spécifier l’un des types d’enregistrements suivants.

Valeur Signification
ClfsDataRecord
Seuls les enregistrements de données utilisateur sont lus.
ClfsRestartRecord
Seuls les enregistrements de redémarrage sont lus.
ClfsClientRecord
Tous les enregistrements de redémarrage et de données sont lus.

[in, optional] plsnUser

Pointeur vers une structure de CLFS_LSN qui spécifie le client de journal pour lire ce numéro de séquence de journal (LSN) en tant que LSN suivant au lieu de lire vers l’enregistrement suivant, de lire le LSN précédent ou de lire le LSN d’annulation suivant.

Ce paramètre permet aux clients de journaux d’effectuer un curseur via des chaînes LSN définies par l’utilisateur dans des mémoires tampons clientes. La relation de ce paramètre au LSN actuel détenu par le contexte de lecture doit être cohérente avec le mode de contexte, ecxMode, qui est spécifié dans les points d’entrée ReadLogRecord ; sinon, un code d’erreur de ERROR_INVALID_PARAMETER est retourné.

[out] plsnUndoNext

Pointeur vers une structure de CLFS_LSN qui reçoit le LSN de l’enregistrement suivant dans une chaîne d’enregistrements d’annulation.

[out] plsnPrevious

Pointeur vers une structure CLFS_LSN qui reçoit le LSN de l’enregistrement suivant dans la chaîne d’enregistrements précédente.

[out] plsnRecord

Pointeur vers une structure CLFS_LSN qui reçoit le LSN de l’enregistrement actif lu dans le contexte de lecture.

[in, out, optional] pOverlapped

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

Ce paramètre peut avoir la valeur NULL si l’opération asynchrone n’est pas 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

Si ReadNextLogRecord retourne avec un code status de ERROR_IO_PENDING, le client doit synchroniser son exécution avec l’achèvement différé de l’opération d’E/S qui se chevauche à l’aide de GetOverlappedResult ou d’une des fonctions d’attente de synchronisation. Pour plus d’informations, consultez Synchronisation et entrées et sorties qui se chevauchent.

Une fois ReadNextLogRecord terminé de manière asynchrone, l’enregistrement demandé est lu à partir du disque, mais n’est pas résolu en pointeur dans *ppvReadBuffer. Pour obtenir un pointeur valide vers l’enregistrement, le client doit appeler ReadNextLogRecord une deuxième fois.

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_READ.

 

Configuration requise

Condition requise Valeur
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

CLFS_RECORD_TYPE

Fonctions courantes du système de fichiers journaux

OVERLAPPED

ReadLogRecord

ReadLogRestartArea

Synchronisation et chevauchement des entrées et sorties