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.
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
);
[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.
ClfsReserveAndAppendLogAligned mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.
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.
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 |