Bagikan melalui


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.

Penyimpanan Teks

ITextStoreACP::RequestLock

ITextStoreACPSink::OnLockGranted

ITextStoreACP::GetText

ITextStoreAnchor::RequestLock

ITextStoreAnchorSink::OnLockGranted

ITextStoreAnchor::GetText