Fungsi ClfsReserveAndAppendLog (wdm.h)
Rutinitas ClfsReserveAndAppendLog mencadangkan ruang di area marsekal atau menambahkan catatan ke area marsekal atau melakukan keduanya secara atomik.
Sintaks
CLFSUSER_API NTSTATUS ClfsReserveAndAppendLog(
[in] PVOID pvMarshalContext,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[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. Penelepon sebelumnya mendapatkan pointer ini dengan memanggil ClfsCreateMarshallingArea.
[in, optional] rgWriteEntries
Penunjuk ke array struktur CLFS_WRITE_ENTRY , yang masing-masing memegang penunjuk ke buffer data yang akan menjadi bagian dari rekaman yang ditambahkan ke log. Parameter ini dapat berupa NULL jika cWriteEntries adalah nol.
[in] cWriteEntries
Jumlah elemen dalam array yang diarahkan oleh rgWriteEntries. Parameter ini harus nol jika rgWriteEntries adalah NULL.
[in, optional] plsnUndoNext
Penunjuk ke struktur CLFS_LSN yang memasok LSN rekaman berikutnya 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 adalah NULL atau bendera CLFS_FLAG_USE_RESERVATION fFlags diatur.
[in, out] rgcbReservation
Penunjuk ke array variabel berjenis LONGLONG. Penelepon mengatur setiap elemen array ke ukuran, dalam byte, dari rekaman yang harus memiliki ruang yang disediakan untuknya. 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 yang dipesan yang paling hampir cocok dengan nilai absolut dari nilai negatif yang disediakan akan dibebaskan. Parameter ini dapat berupa NULL jika cReserveRecords adalah nol dan harus NULL jika bendera CLFS_FLAG_USE_RESERVATION fFlags diatur.
[in] fFlags
Parameter ini dapat berupa nol atau kombinasi apa pun dari bendera berikut.
Bendera | Makna |
---|---|
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 stabil. |
CLFS_FLAG_USE_RESERVATION | Rekaman saat ini ditempatkan di ruang yang dipesan dalam blok I/O log di dalam area marshalling. 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 dari rekaman yang ditambahkan. Parameter ini dapat berupa NULL jika cWriteEntries adalah nol.
Nilai kembali
ClfsReserveAndAppendLog mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.
Keterangan
Rutinitas ClfsReserveAndAppendLog mengubah perilaku mendasarnya berdasarkan adanya 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 bukan NULL. plsn bukan NULL. cReserveRecords = 0. rgcbReservation adalah NULL. CLFS_USE_RESERVATION diatur. |
Menambahkan catatan ke area marshalling dengan menggunakan ruang yang telah dipesan. Mengurangi jumlah ruang rekaman yang dipesan satu per satu. |
cWriteEntries > 0.
rgWriteEntries bukan NULL. plsn bukan NULL. cReserveRecords = 0. rgcbReservation adalah NULL. CLFS_USE_RESERVATION dibersihkan. |
Menambahkan catatan ke area marshalling dengan mencairkan ruang baru. Membiarkan jumlah ruang rekaman yang dipesan tidak berubah. |
cWriteEntries > 0.
rgWriteEntries bukan NULL. plsn bukan NULL. cReserveRecords> 0. rgcbReservation bukan NULL. bendera CLFS_USE_RESERVATION dibersihkan. |
Menambahkan catatan ke area marshalling dengan mencairkan 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. |
Memanggil ClfsReserveAndAppendLog setara dengan memanggil ClfsReserveAndAppendLogAligned dengan parameter cbEntryAlignment diatur ke satu.
Untuk penjelasan tentang konsep dan terminologi CLFS, lihat Sistem File Log Umum.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows Server 2003 R2, Windows Vista, dan versi Windows yang lebih baru. |
Target Platform | Desktop |
Header | wdm.h (termasuk Wdm.h) |
Pustaka | Clfs.lib |
DLL | Clfs.sys |
IRQL | <= APC_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk