Fungsi StgOpenStorageOnILockBytes (coml2api.h)

Fungsi StgOpenStorageOnILockBytes membuka objek penyimpanan yang ada yang tidak berada dalam file disk, tetapi sebaliknya memiliki array byte yang mendasar yang disediakan oleh pemanggil.

Sintaks

HRESULT StgOpenStorageOnILockBytes(
  [in]  ILockBytes *plkbyt,
  [in]  IStorage   *pstgPriority,
  [in]  DWORD      grfMode,
  [in]  SNB        snbExclude,
  [in]  DWORD      reserved,
  [out] IStorage   **ppstgOpen
);

Parameter

[in] plkbyt

Penunjuk ILockBytes ke objek array byte yang mendasar yang berisi objek penyimpanan yang akan dibuka.

[in] pstgPriority

Penunjuk ke antarmuka IStorage yang seharusnya NULL. Jika bukan NULL, parameter ini digunakan seperti yang dijelaskan di bawah ini di bagian Keterangan.

Setelah StgOpenStorageOnILockBytes kembali, objek penyimpanan yang ditentukan dalam pStgPriority mungkin telah dirilis dan tidak boleh lagi digunakan.

[in] grfMode

Menentukan mode akses yang akan digunakan untuk membuka objek penyimpanan. Untuk informasi selengkapnya, lihat Konstanta STGM dan bagian Keterangan di bawah ini.

[in] snbExclude

Bisa NULL. Jika bukan NULL, parameter ini menunjuk ke blok elemen dalam penyimpanan ini yang akan dikecualikan saat objek penyimpanan dibuka. Pengecualian ini terjadi secara independen dari apakah salinan rekam jepret terjadi di tempat terbuka.

[in] reserved

Menunjukkan dicadangkan untuk digunakan di masa mendatang; harus nol.

[out] ppstgOpen

Menunjuk ke lokasi penunjuk IStorage ke penyimpanan yang dibuka saat pengembalian berhasil.

Nilai kembali

Fungsi StgOpenStorageOnILockBytes juga dapat mengembalikan kesalahan sistem file apa pun, atau kesalahan sistem yang dibungkus dalam nilai pengembalian kesalahan antarmuka HRESULT, atau ILockBytes . Lihat Strategi Penanganan Kesalahan dan Menangani Kesalahan yang Tidak Diketahui.

Keterangan

StgOpenStorageOnILockBytes membuka objek penyimpanan akar yang ditentukan. Penunjuk ke antarmuka IStorage pada objek penyimpanan yang dibuka disediakan melalui parameter ppstgOpen .

Objek penyimpanan sebelumnya harus dibuat oleh fungsi StgCreateDocfileOnILockBytes .

Kecuali untuk menentukan objek byte-array yang disediakan programmer, StgOpenStorageOnILockBytes mirip dengan fungsi StgOpenStorage . Objek penyimpanan dibuka sesuai dengan mode akses dalam parameter grfMode , tunduk pada pembatasan berikut:

Perilaku mode berbagi dan isolasi transaksional bergantung pada implementasi ILockBytes yang mendukung LockRegion dan UnlockRegion dengan semantik LOCK_ONLYONCE . Implementasi dapat menunjukkan penyimpanan terstruktur, mereka mendukung fungsionalitas ini dengan mengatur bit LOCK_ONLYONCE di anggota STATSTGyang didukung grfLocksSupported. Jika implementasi ILockBytes tidak mendukung fungsionalitas ini, mode berbagi tidak akan diberlakukan, dan penerapan transaksional tingkat akar tidak akan berkoordinasi dengan benar dengan instans transaksional lain yang dibuka pada array byte yang sama. Aplikasi yang menggunakan implementasi ILockBytes yang tidak mendukung penguncian wilayah, seperti implementasi CreateStreamOnHGlobal , harus menghindari pembukaan beberapa instans bersamaan pada array byte yang sama.

StgOpenStorageOnILockBytes tidak mendukung mode sederhana. Bendera STGM_SIMPLE , jika ada, diabaikan.

Parameter pStgPriority dimaksudkan sebagai kenyamanan bagi penelepon yang menggantikan objek penyimpanan yang ada, sering kali satu dibuka dalam mode prioritas, dengan objek penyimpanan baru dibuka pada array byte yang sama. Tidak seperti parameter pStgPriority dari StgOpenStorage, parameter ini tidak memengaruhi operasi terbuka yang dilakukan oleh StgOpenStorageOnILockBytes dan hanyalah objek penyimpanan yang ada yang ingin dirilis oleh pemanggil. Pemanggil harus selalu meneruskan NULL untuk parameter ini karena StgOpenStorageOnILockBytes merilis objek dalam beberapa keadaan, dan tidak merilisnya dalam keadaan lain. Penggunaan parameter pStgPriority dapat diduplikasi oleh pemanggil dengan cara yang lebih aman dengan merilis objek sebelum memanggil StgOpenStorageOnILockBytes, seperti yang ditunjukkan dalam contoh berikut:

// Replacement for:
// HRESULT hr = StgOpenStorageOnILockBytes(
//         plkbyt, pStgPriority, grfMode, NULL, 0, &pstgNew);

pStgPriority->Release();
pStgPriority = NULL;
hr = StgOpenStorage(plkbyt, NULL, grfMode, NULL, 0, &pstgNew);
    

Untuk informasi selengkapnya, lihat StgOpenStorage.

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 coml2api.h (termasuk Objbase.h)
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

StgCreateDocfileOnILockBytes

StgOpenStorage