Kunci Dokumen
Protokol Penguncian Dokumen
Untuk meminta kunci dokumen untuk aplikasi berbasis ACP, manajer TSF memanggil ITextStoreACP::RequestLock. Untuk aplikasi berbasis jangkar, manajer TSF memanggil ITextStoreAnchor::RequestLock. Aplikasi memberikan kunci dokumen dengan memanggil ITextStoreACPSink::OnLockGranted (aplikasi berbasis ACP) atau ITextStoreAnchorSink::OnLockGranted (aplikasi berbasis jangkar) di dalam RequestLock. Kunci hanya valid selama panggilan OnLockGranted . Saat OnLockGranted kembali, dokumen dianggap tidak terkunci.
Tipe Kunci Dokumen
Ada dua jenis kunci dokumen, baca-saja dan baca/tulis. Kunci baca-saja memungkinkan manajer membaca teks, tetapi tidak dapat mengubah atau menyisipkan teks. Kunci baca/tulis memungkinkan manajer membaca, memodifikasi, dan menyisipkan teks. Kunci baca-saja diminta dengan menentukan TS_LF_READ di dwFlags. Kunci baca/tulis diminta dengan menentukan TS_LF_READWRITE dalam dwFlags.
Permintaan Asinkron dan Sinkron
Permintaan kunci dapat berupa sinkron atau asinkron. Manajer meminta kunci sinkron dengan menggunakan bendera TS_LF_SYNC di dwFlags. Jika bendera ini tidak ada, permintaannya tidak sinkron.
Memberikan Kunci
Ketika RequestLock dipanggil, aplikasi harus menentukan apakah dokumen saat ini dikunci. Jika dokumen tidak dikunci, dan tidak ada alasan lain untuk menolak kunci yang ada, aplikasi harus mengatur phrSession ke S_OK dan mengembalikan S_OK.
Jika dokumen dikunci dan permintaan kunci sinkron, aplikasi harus mengatur phrSession ke TS_E_SYNCHRONOUS dan mengembalikan S_OK. Ini menunjukkan bahwa permintaan sinkron tidak dapat diberikan.
Jika dokumen dikunci dan permintaan kunci tidak sinkron, aplikasi harus mengantre permintaan, mengatur phrSession ke TS_S_ASYNC dan mengembalikan S_OK. Ketika dokumen tersedia, aplikasi harus menghapus permintaan dari antrean dan memanggil OnLockGranted. Antrean permintaan kunci ini bersifat opsional; ada satu skenario yang harus didukung aplikasi. Jika dokumen memiliki kunci baca-saja, permintaan kunci baru adalah baca/tulis dan permintaannya asinkron, aplikasi telah dipanggil ke OnLockGranted , yang telah menyebabkan panggilan masuk kembali ke RequestLock. Aplikasi harus mengatur phrSession ke TS_S_ASYNC dan mengembalikan S_OK. Setelah panggilan ke OnLockGranted kembali, aplikasi harus memproses permintaan peningkatan dengan memanggil OnLockGranted lagi dengan TS_LF_READWRITE.
Kunci Pemberlakuan
Aplikasi harus memastikan bahwa jenis kunci yang tepat ada sebelum mengizinkan akses ke dokumen. Misalnya, aplikasi harus memverifikasi bahwa dokumen memiliki setidaknya kunci baca-saja sebelum mengizinkan ITextStoreACP::GetText atau ITextStoreAnchor::GetText untuk melanjutkan. Jika kunci yang tepat tidak ada, aplikasi harus mengembalikan TF_E_NOLOCK.
Topik terkait
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