Implementasi Sistem File IPropertySetStorage-NTFS

NTFS versi 5.0 menyediakan implementasi IPropertySetStorage untuk file pada volume NTFS ketika file itu sendiri bukan file majemuk. Implementasi NTFS setara dengan implementasi file gabungan. Untuk informasi selengkapnya tentang pengecualian, lihat Keterangan.

Untuk mendapatkan penunjuk ke implementasi NTFS IPropertySetStorage

  1. Panggil StgCreateStorageEx dan tentukan STGFMT_FILE dalam parameter grfFlags untuk membuat file baru.
  2. Panggil StgOpenStorageEx dan tentukan nilai enumerasi STGFMT_FILE atau STGFMT_ANY dalam parameter grfFlags untuk membuka file yang ada.

Namun, Anda tidak dapat memperoleh implementasi NTFS IPropertySetStorage untuk file majemuk. Saat membuka file majemuk dengan StgOpenStorage, menentukan nilai enumerasi STGFMT_FILE menghasilkan kesalahan.

Selain itu, set properti sederhana tidak dapat ditransaksikan. Artinya, Anda tidak dapat menentukan STGM_TRANSACTED dalam parameter grfmode dari metode Buat dan Buka kecuali Anda juga menentukan PROPSETFLAG_NONSIMPLE dalam parameter grfFlags . Properti yang mengatur objek penyimpanan itu sendiri tidak mendukung pemrosesan transaksi.

Kapan Digunakan

Panggil metode IPropertySetStorage untuk membuat, membuka, atau menghapus kumpulan properti di penyimpanan set properti NTFS saat ini. Ada juga metode, IPropertySetStorage::Enum, yang memasok penunjuk ke enumerator yang dapat digunakan untuk menghitung set properti dalam penyimpanan.

Kompatibilitas

Implementasi NTFS dari IPropertySetStorage dan IPropertyStorage tersedia dimulai dengan Windows 2000. Versi sebelumnya tidak dapat mengakses set properti ini.

Implementasi NTFS menyimpan set properti dalam aliran alternatif file NTFS. Aliran alternatif harus disalin ketika file utama disalin.

Perhatian

Tidak semua sistem file mendukung aliran tersebut. Jika file NTFS dengan set properti disalin ke volume FAT, hanya data dalam file yang disalin; set properti hilang. Fungsi CopyFile tidak mengembalikan kesalahan dalam kasus ini.

 

Perhatian

Jika komputer yang melakukan salinan file bukan komputer yang berjalan pada Windows 2000 atau yang lebih baru, set properti mungkin hilang. Misalnya, jika komputer yang berjalan pada sistem operasi Windows 95 menyalin file NTFS, kumpulan properti hilang bahkan jika file tujuan juga berada pada volume NTFS.

 

Metode

Implementasi sistem file NTFS dari IPropertySetStorage mendukung metode berikut.

IPropertySetStorage::Create

Membuat properti baru yang diatur dalam penyimpanan file NTFS saat ini dan, saat kembali, menyediakan penunjuk antarmuka ke implementasi file IPropertyStorage NTFS. Mode berbagi yang ditentukan dalam parameter grfmode harus STGM_SHARE_EXCLUSIVE.

IPropertySetStorage::Open

Membuka kumpulan properti yang ada di penyimpanan properti saat ini. Sebagai gantinya, ia menyediakan penunjuk antarmuka ke implementasi file NTFS dari IPropertyStorage. Mode berbagi yang ditentukan dalam parameter grfmode harus STGM_SHARE_EXCLUSIVE.

IPropertySetStorage::D elete

Menghapus properti yang diatur dalam penyimpanan properti saat ini.

IPropertySetStorage::Enum

Membuat objek yang digunakan untuk menghitung struktur STATPROPSETSTG . Setiap struktur STATPROPSETSTG menyediakan data tentang satu set properti.

Keterangan

Implementasi NTFS dari set properti penyimpanan IPropertySetStorage dan IPropertyStorage dalam file tanpa memengaruhi konten file tersebut. Misalnya, jika Anda membuat properti yang diatur dalam file HTML bernama Default.htm, file tersebut masih ditampilkan dengan benar di browser Web. Artinya, perubahan pada file menggunakan kedua antarmuka ini tidak terdeteksi saat mengakses file dengan fungsi CreateFile .

Implementasi NTFS IPropertySetStorage menyediakan implementasi yang aman ketika digunakan untuk menulis set properti ke file pada volume NTFS versi 5.0. Kumpulan properti tersebut tidak dapat rusak oleh implementasi bahkan jika terjadi kegagalan sistem. Misalnya, jika daya ke sistem gagal selama panggilan ke IPropertyStorage::Commit saat set properti dibersihkan ke disk, set properti tidak pernah dibiarkan dalam keadaan menengah. Versi set properti sebelumnya tetap ada atau semua pembaruan disimpan.

Implementasi NTFS IPropertySetStorage berbeda dari implementasi file majemuk dengan cara berikut:

  • Struktur STATPROPSETSTG yang diperoleh dari antarmuka IEnumSTATPROPSETSTG berisi anggota clsid yang nilainya selalu nol (CLSID_NULL). Dengan implementasi file gabungan, anggota clsid yang benar dikembalikan untuk set properti yang tidak sederhana (lihat Objek Penyimpanan dan Aliran untuk Kumpulan Properti).

  • Saat mendapatkan implementasi NTFS penunjuk antarmuka IPropertySetStorage menggunakan fungsi StgCreateStorageEx atau StgOpenStorageEx , parameter grfmode harus mengikuti aturan yang sama seperti untuk implementasi file majemuk.

    Selain itu, bendera berikut tidak dapat digunakan:

    STGM_SIMPLE, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITY, dan STGM_DELETEONRELEASE.

  • Ketika antarmuka NTFS IPropertySetStorage diperoleh oleh fungsi StgCreateStorageEx atau StgOpenStorageEx , mode berbagi terutama berlaku untuk instans lain dari antarmuka tersebut, dan bukan untuk instans membuka file itu sendiri. Misalnya, jika antarmuka NTFS IPropertySetStorage dibuka dengan memanggil fungsi StgOpenStorageEx , dengan parameter grfmode diatur ke STGM_READWRITE| STGM_SHARE_EXCLUSIVE, dimungkinkan untuk membuka file dengan fungsi CreateFile .

    Instans simultan membuka antarmuka ini tunduk pada batasan berikut: parameter dwShareMode dalam fungsi CreateFile harus menentukan bendera FILE_SHARE_READ , dan parameter dwAccess tidak boleh menentukan bendera DELETE . Selain itu, fungsi DeleteFile dan MoveFile tidak boleh dipanggil pada file yang antarmuka set properti ini terbuka, karena fungsi ini memerlukan akses DELETE ke file.

  • Jika metode NTFS IPropertySetStorage dibuka sebagai baca-saja, dan file saat ini tidak memiliki set properti, objek yang dikembalikan tidak akan benar-benar membuka file. Akibatnya, bukaan lain dari file tersebut akan berhasil, bahkan jika mode berbagi dari operasi terbuka asli akan menolaknya.

    Contoh; jika NTFS IPropertySetStorage dibuka dalam mode STGM_READ| STGM_SHARE_EXCLUSIVE, dan file tidak memiliki set properti, dimungkinkan untuk membuka file secara bersamaan STGM_READWRITE| STGM_SHARE_EXCLUSIVE.

Implementasi Sistem File IPropertyStorage-NTFS

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

Konstanta PROPSETFLAG

STATPROPSETSTG