ClfsReserveAndAppendLogAligned, fonction (wdm.h)
Le ClfsReserveAndAppendLogAligned réserve de l’espace dans une zone de marshaling ou ajoute un enregistrement à une zone de marshaling ou effectue les deux atomiquement. Les données de l’enregistrement sont alignées sur les limites spécifiées.
Syntaxe
CLFSUSER_API NTSTATUS ClfsReserveAndAppendLogAligned(
[in] PVOID pvMarshalContext,
[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] PLONGLONG rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn
);
Paramètres
[in] pvMarshalContext
Pointeur vers un contexte opaque qui représente une zone de marshaling associée à un flux CLFS. L’appelant a obtenu précédemment ce pointeur en appelant ClfsCreateMarshallingArea.
[in, optional] rgWriteEntries
Pointeur vers un tableau de structures CLFS_WRITE_ENTRY, chacun contenant un pointeur vers une mémoire tampon de données qui fera partie de l’enregistrement ajouté au journal. Ce paramètre peut être null si cWriteEntries est égal à zéro.
[in] cWriteEntries
Nombre d’éléments du tableau pointé par rgWriteEntries. Ce paramètre doit être égal à zéro si rgWriteEntries est NULL.
[in] cbEntryAlignment
Alignement d’octets des entrées de données pointées par rgWriteEntries car elles sont marshalées dans un seul enregistrement. Une valeur d’un spécifie une concaténation simple (voir ClfsReserveAndAppendLog). Une valeur supérieure à une valeur peut entraîner l’insertion de zéros entre les entrées de l’enregistrement. La valeur de ce paramètre doit être supérieure à zéro.
[in, optional] plsnUndoNext
Pointeur vers une structure CLFS_LSN qui fournit l’undo-next LSN de l’enregistrement à ajouter.
[in, optional] plsnPrevious
Pointeur vers une structure CLFS_LSN qui fournit le LSN précédent de l’enregistrement à ajouter.
[in] cReserveRecords
Nombre d’éléments du tableau pointé par rgcbReservation. Ce paramètre doit être égal à zéro si rgcbReservation est NULL ou si l’indicateur CLFS_FLAG_USE_RESERVATION de fFlags est défini.
[in, out] rgcbReservation
Pointeur vers un tableau de variables typées LONGLONG. L’appelant définit chaque élément du tableau sur la taille, en octets, d’un enregistrement qui doit avoir une réserve d’espace pour celle-ci. En retour, chaque élément de tableau reçoit cette taille réelle de l’espace réservé pour l’enregistrement. Cela inclut l’espace requis pour les en-têtes et l’alignement. Si la valeur de réservation est négative, un enregistrement réservé qui correspond presque à la valeur absolue de la valeur négative fournie sera libéré. Ce paramètre peut être NULL si cReserveRecords est égal à zéro et doit être NULL si l’indicateur de CLFS_FLAG_USE_RESERVATION de fFlags est défini.
[in] fFlags
Ce paramètre peut être n’importe quelle combinaison des indicateurs suivants.
Drapeau | Signification |
---|---|
CLFS_FLAG_FORCE_APPEND | Une fois l’enregistrement actif ajouté à un bloc d’E/S de journal, le bloc est mis en file d’attente, dans la séquence LSN, dans un stockage stable. Cet indicateur ne garantit pas que l’enregistrement est forcé d’effectuer un stockage stable (voir CLFS_FLAG_FORCE_FLUSH). |
CLFS_FLAG_FORCE_FLUSH | Une fois l’enregistrement actif ajouté à un bloc d’E/S de journal, le bloc est forcé à un stockage stable. |
CLFS_FLAG_USE_RESERVATION | L’enregistrement actif est placé dans un espace réservé dans un bloc d’E/S. Le nombre d’enregistrements réservés dans la zone de marshalling est réduit d’un. Si cet indicateur est défini, cReserveRecords doit être égal à zéro et rgcbReservation doit être NULL. |
[out, optional] plsn
Pointeur vers une structure CLFS_LSN qui reçoit le LSN de l’enregistrement ajouté. Ce paramètre peut être null si cWriteEntries est égal à zéro.
Valeur de retour
ClfsReserveAndAppendLogAligned retourne STATUS_SUCCESS si elle réussit ; sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
L'ClfsReserveAndAppendLogAligned routine modifie son comportement fondamental en fonction de la présence de paramètres facultatifs et de l’état de l’indicateur CLFS_USE_RESERVATION. Le tableau suivant récapitule les scénarios courants.
Valeurs de paramètre et d’indicateur | Actions effectuées |
---|---|
cWriteEntries = 0.
rgWriteEntries = NULL. plsn = NULL . |
Réserve de l’espace pour un ensemble d’enregistrements, mais n’ajoute pas les enregistrements à la zone de marshaling. Le paramètre rgcbReservation donne la taille de la partie de données de chaque enregistrement qui a besoin d’espace réservé. |
cWriteEntries > 0.
rgWriteEntries n’est pas NULL . plsn n’est pas NULL. cReserveRecords = 0. rgcbReservation est NULL . CLFS_USE_RESERVATION est définie. |
Ajoute un enregistrement à la zone de marshaling à l’aide de l’espace qui a déjà été réservé. Réduit le nombre d’espaces d’enregistrement réservés par un. |
cWriteEntries > 0.
rgWriteEntries n’est pas NULL . plsn n’est pas NULL. cReserveRecords = 0. rgcbReservation est NULL . CLFS_USE_RESERVATION est effacé. |
Ajoute un enregistrement à la zone de marshalling en réservant un nouvel espace. Laisse le nombre d’espaces d’enregistrement réservés inchangés. |
cWriteEntries > 0.
rgWriteEntries n’est pas NULL . plsn n’est pas NULL. cReserveRecords> 0. rgcbReservation n’est pas NULL . CLFS_USE_RESERVATION indicateur est effacé. |
Ajoute un enregistrement à la zone de marshalling en réservant un nouvel espace. Réserve également de l’espace pour un ensemble d’enregistrements qui ne sont pas ajoutés pour l’instant. Le paramètre rgcbReservation donne la taille de chaque enregistrement qui a besoin d’espace réservé. Augmente le nombre d’espaces d’enregistrement réservés par la valeur de cReserveRecords. |
Pour obtenir une explication des concepts et de la terminologie CLFS, consultez Common Log File System.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows Server 2003 R2, Windows Vista et versions ultérieures de Windows. |
plateforme cible | Bureau |
d’en-tête | wdm.h (include Wdm.h) |
bibliothèque | Clfs.lib |
DLL | Clfs.sys |
IRQL | <= APC_LEVEL |