Bagikan melalui


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.

Nilai Makna
ClfsContextPrevious
Membaca rekaman yang ditautkan oleh plsnPrevious.
ClfsContextUndoNext
Membaca rantai rekaman yang ditautkan oleh plsnUndoNext.
ClfsContextForward
Membaca catatan dengan LSN yang segera mengikuti LSN saat ini dalam konteks baca.

[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.

Catatan Konteks baca Common Log File System (CLFS) tidak aman untuk utas. Mereka tidak boleh digunakan oleh lebih dari satu utas pada satu waktu, atau diteruskan ke lebih dari satu bacaan asinkron pada satu waktu.
 

[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 .

Catatan Konteks baca Common Log File System (CLFS) tidak aman untuk utas. Mereka tidak boleh digunakan oleh lebih dari satu utas pada satu waktu.

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

Lihat juga

CLFS_CONTEXT_MODE

CLFS_LSN

CLFS_RECORD_TYPE

Fungsi Sistem File Log Umum

BuatLogMarshallingArea

TUMPANG TINDIH

ReadNextLogRecord

TerminateReadLog