Fungsi ReadLogRecord (clfsw32.h)
Memulai urutan baca dari nomor urutan log (LSN) tertentu dalam salah satu dari tiga mode, dan mengembalikan rekaman log pertama yang ditentukan dan konteks baca. Klien dapat membaca rekaman berikutnya dalam mode yang ditunjuk dengan meneruskan konteks baca ke ReadNextLogRecord.
Sintaks
CLFSUSER_API BOOL ReadLogRecord(
[in] PVOID pvMarshal,
[in] PCLFS_LSN plsnFirst,
[in] CLFS_CONTEXT_MODE eContextMode,
[out] PVOID *ppvReadBuffer,
[out] PULONG pcbReadBuffer,
[out] PCLFS_RECORD_TYPE peRecordType,
[out] PCLFS_LSN plsnUndoNext,
[out] PCLFS_LSN plsnPrevious,
[out] PVOID *ppvReadContext,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parameter
[in] pvMarshal
Penunjuk ke konteks marshaling yang dialokasikan dengan menggunakan fungsi CreateLogMarshallingArea .
[in] plsnFirst
Penunjuk ke struktur CLFS_LSN yang menentukan nomor urutan log (LSN) rekaman tempat operasi baca harus dimulai.
Nilai ini harus merupakan LSN dari rekaman yang valid dalam rentang aktif log.
[in] eContextMode
Mode untuk konteks baca yang dikembalikan dalam *ppvReadContext.
Tabel berikut mengidentifikasi tiga mode baca yang saling eksklusif.
[out] ppvReadBuffer
Penunjuk ke variabel yang menerima penunjuk ke rekaman target di blok I/O log.
[out] pcbReadBuffer
Penunjuk ke variabel yang menerima ukuran data yang dikembalikan dalam *ppvReadBuffer, dalam byte.
[out] peRecordType
Penunjuk ke variabel yang menerima jenis rekaman yang dibaca.
Parameter ini adalah salah satu konstanta CLFS_RECORD_TYPE.
[out] plsnUndoNext
Penunjuk ke struktur CLFS_LSN yang menerima LSN rekaman berikutnya dalam rantai rekaman urungkan.
[out] plsnPrevious
Penunjuk ke struktur CLFS_LSN yang menerima LSN rekaman berikutnya di rantai rekaman sebelumnya.
[out] ppvReadContext
Penunjuk ke variabel yang menerima penunjuk ke konteks baca yang dialokasikan sistem saat pembacaan berhasil.
Jika fungsi menuguhkan penyelesaian operasi, fungsi mengembalikan penunjuk konteks baca yang valid dan status kesalahan ERROR_IO_PENDING. Pada semua kesalahan lainnya, penunjuk baca-konteks adalah NULL. Untuk informasi selengkapnya tentang penanganan penyelesaian fungsi yang ditangguhkan, lihat bagian Keterangan dari topik ini.
Setelah mendapatkan semua catatan log yang diminta, klien harus meneruskan konteks baca ke TerminateReadLog untuk membebaskan memori terkait. Kegagalan untuk melakukannya menghasilkan kebocoran memori.
[in, out, optional] pOverlapped
Penunjuk ke struktur TUMPANG TINDIH , yang diperlukan untuk operasi asinkron.
Parameter ini bisa NULL jika operasi asinkron tidak digunakan.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Daftar berikut mengidentifikasi kemungkinan kode kesalahan.
Keterangan
Pesan kesalahan ERROR_LOG_BLOCK_INCOMPLETE dikembalikan jika ukuran blok log yang ditentukan oleh CreateLogMarshallingArea tidak cukup besar untuk menahan blok log lengkap.
Jika ReadLogRecord dipanggil dengan struktur pOverlap yang valid dan handel log dibuat dengan opsi tumpang tindih, maka jika panggilan ke fungsi ini gagal dengan kode kesalahan ERROR_IO_PENDING, penunjuk ke konteks baca yang valid ditempatkan dalam variabel yang diarahkan oleh parameter ppvReadContext .
Jika Anda mencoba membuka lebih banyak konteks baca daripada buffer nomor yang ditentukan dalam panggilan sebelumnya ke CreateLogMarshallingArea, ERROR_LOG_BLOCK_EXHAUSTED dikembalikan.
Untuk menyelesaikan salinan catatan log, klien harus terlebih dahulu menyinkronkan eksekusinya dengan penyelesaian operasi I/O yang tumpang tindih dengan menggunakan GetOverlappedResult atau salah satu sinkronisasi Fungsi Tunggu. Untuk informasi selengkapnya, lihat Sinkronisasi dan Input dan Output yang Tumpang Tindih.
Setelah ReadLogRecord selesai secara asinkron, rekaman yang diminta dibaca dari disk, tetapi tidak diselesaikan ke penunjuk di *ppvReadBuffer.
Untuk menyelesaikan pembacaan yang diminta dan mendapatkan penunjuk yang valid ke catatan log, klien harus memanggil ReadNextLogRecord, yang meneruskan penunjuk baca-konteks yang dikembalikan ReadLogRecord .
Konteks baca CLFS tidak boleh diteruskan ke lebih dari satu bacaan asinkron pada satu waktu, atau fungsi gagal dengan ERROR_BUSY.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | clfsw32.h |
Pustaka | Clfsw32.lib |
DLL | Clfsw32.dll |