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