Freigeben über


ClfsReserveAndAppendLogAligned-Funktion (wdm.h)

Die ClfsReserveAndAppendLogAligned-Routine reserviert Speicherplatz in einem Marshallbereich oder fügt einen Datensatz an einen Marshallingbereich an oder führt beides atomar aus. Die Daten des Datensatzes werden an den angegebenen Grenzen ausgerichtet.

Syntax

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
);

Parameter

[in] pvMarshalContext

Ein Zeiger auf einen undurchsichtigen Kontext, der einen Marshallingbereich darstellt, der einem CLFS-Stream zugeordnet ist. Der Aufrufer hat diesen Zeiger zuvor durch Aufrufen von ClfsCreateMarshallingArea abgerufen.

[in, optional] rgWriteEntries

Ein Zeiger auf ein Array von CLFS_WRITE_ENTRY Strukturen, von denen jede einen Zeiger auf einen Datenpuffer enthält, der Teil des Datensatzes wird, der an das Protokoll angefügt wird. Dieser Parameter kann NULL sein, wenn cWriteEntries null ist.

[in] cWriteEntries

Die Anzahl der Elemente im Array, auf die von rgWriteEntries verwiesen wird. Dieser Parameter muss null sein, wenn rgWriteEntriesNULL ist.

[in] cbEntryAlignment

Die Byteausrichtung der Dateneinträge, auf die rgWriteEntries verweist, wenn sie in einen einzelnen Datensatz gemarshallt werden. Ein Wert von 1 gibt eine einfache Verkettung an (siehe ClfsReserveAndAppendLog). Ein Wert, der größer als ein Wert ist, kann dazu führen, dass Nullen zwischen Einträgen im Datensatz platziert werden. Der Wert dieses Parameters muss größer als 0 sein.

[in, optional] plsnUndoNext

Ein Zeiger auf eine CLFS_LSN-Struktur , die die rückgängig-nächste LSN des anzufügenden Datensatzes bereitstellt.

[in, optional] plsnPrevious

Ein Zeiger auf eine CLFS_LSN-Struktur, die die vorherige LSN des anzufügenden Datensatzes bereitstellt.

[in] cReserveRecords

Die Anzahl der Elemente im Array, auf die rgcbReservation verweist. Dieser Parameter muss null sein, wenn rgcbReservationNULL ist oder das CLFS_FLAG_USE_RESERVATION Flag von fFlags festgelegt ist.

[in, out] rgcbReservation

Ein Zeiger auf ein Array von LONGLONG-typisierten Variablen. Der Aufrufer legt jedes Element des Arrays auf die Größe (in Byte) eines Datensatzes fest, der über eine Speicherplatzreserve verfügen muss. Bei der Rückgabe erhält jedes Arrayelement die tatsächliche Größe des für den Datensatz reservierten Speicherplatzes. Dies schließt den für Header und Ausrichtung erforderlichen Speicherplatz ein. Wenn der Reservierungswert negativ ist, wird ein reservierter Datensatz, der am ehesten mit dem absoluten Wert des angegebenen negativen Werts übereinstimmt, freigegeben. Dieser Parameter kann NULL sein, wenn cReserveRecords null ist und NULL sein muss, wenn das CLFS_FLAG_USE_RESERVATION-Flag von fFlags festgelegt ist.

[in] fFlags

Dieser Parameter kann eine beliebige Kombination der folgenden Flags sein.

Flag Bedeutung
CLFS_FLAG_FORCE_APPEND Nachdem der aktuelle Datensatz an einen Protokoll-E/A-Block angefügt wurde, wird der Block in der LSN-Sequenz in eine stabile Speicherwarteschlange eingereiht. Dieses Flag bietet keine Garantie dafür, dass der Datensatz in einen stabilen Speicher gezwungen wird (siehe CLFS_FLAG_FORCE_FLUSH).
CLFS_FLAG_FORCE_FLUSH Nachdem der aktuelle Datensatz an einen Protokoll-E/A-Block angefügt wurde, wird der Block in einen stabilen Speicher gezwungen.
CLFS_FLAG_USE_RESERVATION Der aktuelle Datensatz wird in einem E/A-Block im reservierten Bereich platziert. Die Anzahl der reservierten Datensätze im Marshallingbereich wird um 1 reduziert. Wenn dieses Flag festgelegt ist, muss cReserveRecords null und rgcbReservationnull sein.

[out, optional] plsn

Ein Zeiger auf eine CLFS_LSN-Struktur , die die LSN des angefügten Datensatzes empfängt. Dieser Parameter kann NULL sein, wenn cWriteEntries null ist.

Rückgabewert

ClfsReserveAndAppendLogAligned gibt bei Erfolg STATUS_SUCCESS zurück. Andernfalls wird einer der in "Ntstatus.h" definierten Fehlercodes zurückgegeben.

Hinweise

Die ClfsReserveAndAppendLogAligned-Routine ändert ihr grundlegendes Verhalten basierend auf dem Vorhandensein optionaler Parameter und dem Status des flags CLFS_USE_RESERVATION. In der folgenden Tabelle sind allgemeine Szenarien zusammengefasst.

Parameter- und Flagwerte Ausgeführte Aktionen
cWriteEntries = 0.

rgWriteEntries = NULL.

plsn = NULL.

Reserviert Speicherplatz für eine Reihe von Datensätzen, fügt die Datensätze jedoch nicht an den Marshallingbereich an. Der Parameter rgcbReservation gibt die Größe des Datenteils jedes Datensatzes an, für den reservierter Speicherplatz erforderlich ist.
cWriteEntries > 0.

rgWriteEntries ist nicht NULL.

plsn ist nicht NULL.

cReserveRecords = 0.

rgcbReservation ist NULL.

CLFS_USE_RESERVATION ist festgelegt.

Fügt einen Datensatz unter Verwendung von bereits reserviertem Speicherplatz an den Marshallingbereich an. Reduziert die Anzahl der reservierten Datensatzplätze um eins.
cWriteEntries > 0.

rgWriteEntries ist nicht NULL.

plsn ist nicht NULL.

cReserveRecords = 0.

rgcbReservation ist NULL.

CLFS_USE_RESERVATION wird gelöscht.

Fügt einen Datensatz an den Marshallingbereich an, indem neuer Speicherplatz reserviert wird. Die Anzahl der reservierten Datensatzplätze bleibt unverändert.
cWriteEntries > 0.

rgWriteEntries ist nicht NULL.

plsn ist nicht NULL.

cReserveRecords> 0.

rgcbReservation ist nicht NULL.

CLFS_USE_RESERVATION Flag ist deaktiviert.

Fügt einen Datensatz an den Marshallingbereich an, indem neuer Speicherplatz reserviert wird. Reserviert außerdem Speicherplatz für eine Reihe von Datensätzen, die zu diesem Zeitpunkt nicht angefügt werden. Der Parameter rgcbReservation gibt die Größe jedes Datensatzes an, für den reservierter Speicherplatz erforderlich ist. Erhöht die Anzahl der reservierten Datensatzplätze um den Wert von cReserveRecords.
 

Eine Erläuterung der CLFS-Konzepte und -Terminologie finden Sie unter Common Log File System( Common Log File System).

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Server 2003 R2, Windows Vista und höheren Versionen von Windows.
Zielplattform Desktop
Kopfzeile wdm.h (wdm.h einschließen)
Bibliothek Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

Weitere Informationen

CLFS_LSN

CLFS_WRITE_ENTRY

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog