Fonction ReserveAndAppendLogAligned (clfsw32.h)
Réserve de l’espace pour les mémoires tampons de journal ou ajoute un enregistrement de journal au journal, ou aux deux. Cette fonction est semblable à la fonction ReserveAndAppendLog , mais ReserveAndAppendLogAligned aligne les entrées d’écriture de l’enregistrement sur l’alignement d’octets spécifié.
Syntaxe
CLFSUSER_API BOOL ReserveAndAppendLogAligned(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in] ULONG cbEntryAlignment,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Paramètres
[in] pvMarshal
Pointeur vers un contexte de marshaling alloué à l’aide de la fonction CreateLogMarshallingArea .
[in, optional] rgWriteEntries
Pointeur vers un tableau de mémoires tampons CLFS_WRITE_ENTRY à marshaler en un seul enregistrement.
Ce paramètre est ignoré si le paramètre cWriteEntries est égal à zéro.
[in] cWriteEntries
Nombre d’entrées d’écriture dans le tableau rgWriteEntries .
Si cette valeur est différente de zéro, vous devez spécifier une mémoire tampon dans le paramètre rgWriteEntries .
[in] cbEntryAlignment
Alignement d’octets pour chaque entrée d’écriture dans le paramètre rgWriteEntries .
Spécifiez 1 (un) pour une concaténation simple. Le paramètre cbWriteEntryAlignment doit être différent de zéro.
[in, optional] plsnUndoNext
Pointeur vers une structure de CLFS_LSN qui spécifie le numéro de séquence de journal (LSN) de l’enregistrement suivant dans la chaîne d’annulation.
[in, optional] plsnPrevious
Pointeur vers une structure de CLFS_LSN qui spécifie le LSN de l’enregistrement précédent dans la chaîne précédente.
[in] cReserveRecords
Nombre de tailles d’enregistrement dans le tableau rgcbReservation .
[in, out, optional] rgcbReservation
Pointeur vers un tableau de tailles de réservation pour chaque enregistrement spécifié par le paramètre cReserveRecords .
Ce paramètre est ignoré si le paramètre cReserveRecords est égal à zéro. Si une taille de réservation est négative, une réservation de cette taille est libérée.
L’espace réel réservé à chaque enregistrement, y compris la surcharge requise, est retourné dans les éléments de tableau individuels en cas d’achèvement réussi. Ces valeurs peuvent être passées à la fonction FreeReservedLog pour ajuster l’espace réservé dans la zone de marshaling.
[in] fFlags
Indicateurs qui spécifient le comportement de cette fonction.
Une ou plusieurs des valeurs suivantes peuvent être combinées.
[out, optional] plsn
Pointeur vers une structure CLFS_LSN qui reçoit le LSN de l’enregistrement ajouté.
[in, out, optional] pOverlapped
Pointeur vers une structure OVERLAPPED.
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 la fonction GetLastError. La liste suivante identifie les codes d’erreur possibles :
Notes
Le LSN retourné par la fonction ReserveAndAppendLogAligned n’est pas nécessairement le LSN suivant utilisé. Le LSN retourné est une estimation du LSN suivant, et il varie en fonction des indicateurs spécifiés par le paramètre fFlags . Le LSN retourné peut être utilisé lors du déplacement de la queue de base. Ce LSN est invalidé par l’appel suivant à cette fonction.
Si la fonction ReserveAndAppendLogAligned retourne ERROR_LOG_FILE_FULL, il n’y a plus d’espace dans le journal. Cela peut être résolu de l’une des manières suivantes :
- Libérez toutes les réservations inutiles.
- Avancez le LSN de base ou la queue de l’archive de journal, ou les deux, pour recycler les conteneurs.
- Ajoutez des conteneurs au journal.
Si la fonction ReserveAndAppendLogAligned est appelée avec une structure de chevauchement valide et que le handle de journal est créé avec l’option qui se chevauche, si un appel à cette fonction échoue avec un code d’erreur de ERROR_IO_PENDING, un pointeur vers un contexte de lecture valide est placé dans la variable pointée par le paramètre ppvReadContext .
Pour terminer la copie d’enregistrement 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 à l’aide de la fonction GetOverlappedResult ou de l’une des fonctions d’attente de synchronisation. Pour plus d’informations, consultez Synchronisation et entrées et sorties qui se chevauchent.
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 |