Fungsi ClfsReserveAndAppendLogAligned (wdm.h)

ClfsReserveAndAppendLogAligned ruang cadangan rutin di area marshalling atau menambahkan catatan ke area marshalling atau melakukan keduanya secara atomik. Data rekaman diselaraskan pada batas yang ditentukan.

Sintaksis

C++
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

Penunjuk ke konteks buram yang mewakili area marshalling yang terkait dengan aliran CLFS. Pemanggil sebelumnya mendapatkan pointer ini dengan memanggil ClfsCreateMarshallingArea.

[in, optional] rgWriteEntries

Penunjuk ke array struktur CLFS_WRITE_ENTRY, yang masing-masing menyimpan penunjuk ke buffer data yang akan menjadi bagian dari rekaman yang ditambahkan ke log. Parameter ini dapat NULL jika cWriteEntries adalah nol.

[in] cWriteEntries

Jumlah elemen dalam array yang diarahkan oleh rgWriteEntries. Parameter ini harus nol jika rgWriteEntries NULL.

[in] cbEntryAlignment

Perataan byte entri data yang diarahkan oleh rgWriteEntries saat dinamai menjadi satu rekaman. Nilai satu menentukan perangkaian sederhana (lihat ClfsReserveAndAppendLog). Nilai yang lebih besar dari satu dapat mengakibatkan nol ditempatkan di antara entri dalam rekaman. Nilai parameter ini harus lebih besar dari nol.

[in, optional] plsnUndoNext

Penunjuk ke struktur CLFS_LSN yang memasok LSN berikutnya dari rekaman yang akan ditambahkan.

[in, optional] plsnPrevious

Penunjuk ke struktur CLFS_LSN yang memasok LSN sebelumnya dari rekaman yang akan ditambahkan.

[in] cReserveRecords

Jumlah elemen dalam array yang ditunjukkan oleh rgcbReservation. Parameter ini harus nol jika rgcbReservation NULL atau bendera CLFS_FLAG_USE_RESERVATION fFlags diatur.

[in, out] rgcbReservation

Penunjuk ke array variabel berjenis LONGLONG. Pemanggil mengatur setiap elemen array ke ukuran, dalam byte, dari rekaman yang harus memiliki cadangan ruang untuk itu. Saat dikembalikan, setiap elemen array menerima ukuran aktual ruang yang dicadangkan untuk rekaman. Ini termasuk ruang yang diperlukan untuk header dan perataan. Jika nilai reservasi negatif, catatan cadangan yang paling hampir cocok dengan nilai absolut dari nilai negatif yang disediakan akan dibebaskan. Parameter ini dapat NULL jika cReserveRecords adalah nol dan harus NULL jika bendera CLFS_FLAG_USE_RESERVATION fFlags diatur.

[in] fFlags

Parameter ini dapat berupa kombinasi dari bendera berikut.

Bendera Arti
CLFS_FLAG_FORCE_APPEND Setelah rekaman saat ini ditambahkan ke blok I/O log, blok diantrekan, dalam urutan LSN, ke penyimpanan yang stabil. Bendera ini tidak memberikan jaminan bahwa rekaman dipaksa untuk penyimpanan stabil (lihat CLFS_FLAG_FORCE_FLUSH).
CLFS_FLAG_FORCE_FLUSH Setelah rekaman saat ini ditambahkan ke blok I/O log, blok dipaksa untuk penyimpanan yang stabil.
CLFS_FLAG_USE_RESERVATION Rekaman saat ini ditempatkan dalam ruang yang dipesan di blok I/O. Jumlah catatan yang dipesan di area marshalling berkurang satu. Jika bendera ini diatur, cReserveRecords harus nol dan rgcbReservation harus NULL.

[out, optional] plsn

Penunjuk ke struktur CLFS_LSN yang menerima LSN rekaman yang ditambahkan. Parameter ini dapat NULL jika cWriteEntries adalah nol.

Mengembalikan nilai

ClfsReserveAndAppendLogAligned mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.

Komentar

Rutinitas ClfsReserveAndAppendLogAligned mengubah perilaku dasarnya berdasarkan keberadaan parameter opsional dan status bendera CLFS_USE_RESERVATION. Tabel berikut ini meringkas skenario umum.

Nilai parameter dan bendera Tindakan yang dilakukan
cWriteEntries = 0.

rgWriteEntries = NULL.

plsn = null.

Mencadangkan ruang untuk sekumpulan rekaman, tetapi tidak menambahkan rekaman ke area marshalling. Parameter rgcbReservation memberikan ukuran bagian data dari setiap rekaman yang membutuhkan ruang yang dicadangkan.
cWriteEntries > 0.

rgWriteEntries tidak NULL.

plsn tidak NULL .

cReserveRecords = 0.

rgcbReservationNULL.

CLFS_USE_RESERVATION diatur.

Menambahkan catatan ke area marshalling dengan menggunakan ruang yang telah dipesan. Mengurangi jumlah spasi rekaman yang dipesan satu per satu.
cWriteEntries > 0.

rgWriteEntries tidak NULL.

plsn tidak NULL .

cReserveRecords = 0.

rgcbReservationNULL.

CLFS_USE_RESERVATION dibersihkan.

Menambahkan catatan ke area marshalling dengan menyediakan ruang baru. Membiarkan jumlah ruang rekaman yang dipesan tidak berubah.
cWriteEntries > 0.

rgWriteEntries tidak NULL.

plsn tidak NULL .

cReserveRecords> 0.

rgcbReservation tidak NULL .

bendera CLFS_USE_RESERVATION dibersihkan.

Menambahkan catatan ke area marshalling dengan menyediakan ruang baru. Juga mencadangkan ruang untuk sekumpulan rekaman yang tidak ditambahkan saat ini. Parameter rgcbReservation memberikan ukuran setiap rekaman yang membutuhkan ruang yang dicadangkan. Meningkatkan jumlah ruang rekaman yang dipesan berdasarkan nilai cReserveRecords.
 

Untuk penjelasan tentang konsep dan terminologi CLFS, lihat Common Log File System.

Persyaratan

Syarat Nilai
klien minimum yang didukung Tersedia di Windows Server 2003 R2, Windows Vista, dan versi Windows yang lebih baru.
Platform Target Desktop
Header wdm.h (termasuk Wdm.h)
Pustaka Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

Lihat juga

CLFS_LSN

CLFS_WRITE_ENTRY

ClfsCreateMarshallingArea

ClfsReserveAndAppendLog