Fungsi ClfsReserveAndAppendLog (wdm.h)
ClfsReserveAndAppendLog ruang cadangan rutin di area marshalling atau menambahkan catatan ke area marshalling atau melakukan keduanya secara atomik.
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
);
[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, 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 ruang yang dicadangkan 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 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 bisa nol atau 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 di ruang yang dipesan di blok I/O log 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 rekaman yang ditambahkan. Parameter ini dapat NULL jika cWriteEntries adalah nol.
ClfsReserveAndAppendLog mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.
ClfsReserveAndAppendLog rutin mengubah perilaku mendasarnya 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. |
Memanggil ClfsReserveAndAppendLog setara dengan memanggil ClfsReserveAndAppendLogAligned dengan parameter cbEntryAlignment diatur ke satu parameter.
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 |