Bagikan melalui


Metode ILockBytes::LockRegion (objidl.h)

Metode LockRegion membatasi akses ke rentang byte tertentu dalam array byte.

Sintaks

HRESULT LockRegion(
  [in] ULARGE_INTEGER libOffset,
  [in] ULARGE_INTEGER cb,
  [in] DWORD          dwLockType
);

Parameter

[in] libOffset

Menentukan offset byte untuk awal rentang.

[in] cb

Menentukan, dalam byte, panjang rentang yang akan dibatasi.

[in] dwLockType

Menentukan jenis pembatasan yang diminta untuk mengakses rentang. Parameter ini menggunakan salah satu nilai dari enumerasi LOCKTYPE .

Nilai kembali

Metode ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK Rentang byte yang ditentukan dikunci.
STG_E_INVALIDFUNCTION Penguncian tidak didukung sama sekali atau jenis kunci tertentu yang diminta tidak didukung.
STG_E_ACCESSDENIED Akses ditolak karena penelepon tidak memiliki izin yang cukup, atau pemanggil lain membuka dan mengunci file.
STG_E_LOCKVIOLATION Akses ditolak karena penelepon lain membuka dan mengunci file.
STG_E_INVALIDHANDLE File yang mendasarinya telah ditutup sebelum waktunya, atau disket yang benar telah digantikan oleh disket yang tidak valid.

Keterangan

ILockBytes::LockRegion membatasi akses ke rentang byte yang ditentukan. Setelah wilayah dikunci, upaya orang lain untuk mendapatkan akses ke rentang terbatas harus gagal dengan kesalahan STG_E_ACCESSDENIED.

Rentang byte dapat meluas melewati akhir array byte saat ini. Penguncian di luar akhir array berguna sebagai metode komunikasi antara instans yang berbeda dari objek array byte tanpa mengubah data yang sebenarnya merupakan bagian dari array byte. Misalnya, implementasi ILockBytes untuk file campuran dapat mengandalkan penguncian melewati akhir array saat ini sebagai sarana kontrol akses, menggunakan wilayah terkunci tertentu untuk menunjukkan izin yang saat ini diberikan.

Parameter dwLockType menentukan salah satu dari tiga jenis penguncian, menggunakan nilai dari enumerasi LOCKTYPE . Jenisnya adalah sebagai berikut: mengunci untuk mengecualikan penulis lain, mengunci untuk mengecualikan pembaca atau penulis lain, dan penguncian yang hanya memungkinkan satu pemohon untuk mendapatkan kunci pada rentang yang diberikan. Jenis penguncian ketiga ini biasanya merupakan alias untuk salah satu dari dua jenis kunci lainnya, dan mengizinkan Pelaksana untuk menambahkan perilaku lain juga. Array byte tertentu mungkin mendukung salah satu dari dua jenis pertama, atau keduanya.

Untuk menentukan jenis kunci yang didukung oleh implementasi ILockBytes tertentu, Anda dapat memeriksa anggota struktur STATSTGyang didukung grfLocksSupported yang dikembalikan oleh panggilan ke ILockBytes::Stat.

Setiap wilayah yang dikunci dengan ILockBytes::LockRegion nantinya harus dibuka secara eksplisit dengan memanggil ILockBytes::UnlockRegion dengan nilai yang sama persis untuk parameter libOffset, cb, dan dwLockType . Wilayah harus dibuka kuncinya sebelum aliran dirilis. Dua wilayah yang berdekatan tidak dapat dikunci secara terpisah dan kemudian dibuka dengan satu panggilan buka kunci.

Catatan untuk Penelepon

Karena jenis penguncian yang didukung bersifat opsional dan dapat bervariasi dalam implementasi ILockBytes yang berbeda, Anda harus memberikan kode untuk menangani kesalahan STG_E_INVALIDFUNCTION.

Catatan untuk Pelaksana

Dukungan untuk metode ini tergantung pada bagaimana objek penyimpanan yang dibangun di atas implementasi ILockBytes digunakan. Jika Anda tahu bahwa hanya satu objek penyimpanan pada waktu tertentu yang dapat dibuka pada perangkat penyimpanan yang mendasar array byte, maka implementasi ILockBytes Anda tidak perlu mendukung penguncian. Namun, jika beberapa bukaan simultan objek penyimpanan dimungkinkan, maka penguncian wilayah diperlukan untuk mengoordinasikannya.

Implementasi LockRegion dapat memilih untuk mendukung semua, beberapa, atau tidak ada jenis kunci. Untuk jenis kunci yang tidak didukung, implementasi harus mengembalikan STG_E_INVALIDFUNCTION.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header objidl.h
Pustaka Uuid.lib
DLL Ole32.dll

Lihat juga

ILockBytes - Implementasi File-Based

ILockBytes - Implementasi Memori Global

ILockBytes::Stat

ILockBytes::UnlockRegion

IStream::LockRegion

LOCKTYPE