Yapılandırılmış Depolama Arabirimleri

Yapılandırılmış Depolama hizmetleri, üçarabirimi kategorisine ayrılır. Her küme, bileşik bir dosya, içerdiği nesneler ve bu bileşenlerin depolandığı fiziksel medya arasında birbirini izleyen bir dolaylı veya soyutlama düzeyini temsil eder.

İlk arabirim kategorisi IStorage, IStreamve IRootStorageoluşur. İlk iki arabirim, nesnelerin bileşik dosya içinde nasıl depolandığını tanımlar. Bu arabirimler depolama öğelerini açmak, değişiklikleri işleyip geri döndürmek, öğeleri kopyalayıp taşımak ve akışları okumak ve yazmak için yöntemler sağlar. Bu arabirimler tek tek nesnelerin yerel veri biçimlerini tanımaz ve bu nedenle bu nesneleri kalıcı depolamaya kaydetmek için hiçbir yöntemi yoktur. IRootStorage arabirimi, bileşik bir belgeyi temel alınan dosya sistemi adıyla ilişkilendirmek için tek bir yönteme sahiptir. İstemcilerin bileşik dosyaları için bu arabirimleri uygulaması gerekir.

İkinci arabirim kategorisi, nesnelerin kalıcı verilerini yönetmek için uyguladığı IPersist arabirimlerinden oluşur. Bu arabirimler, tek tek nesnelerin veri biçimlerini okumak ve dolayısıyla bunları depolamayı bilmek için yöntemler sağlar. İstemciler iç içe nesnelerinin yerel veri biçimlerini bilmediğinden, nesneler bu arabirimleri uygulamakla sorumludur. Ancak bu arabirimler belirli fiziksel depolama medyası hakkında bilgi sahibi değildir.

Üçüncü bir kategori, sabit disk veya bant sürücüsü gibi belirli fiziksel medyaya dosya yazmak için yöntemler sağlayan ILockBytestek bir arabirimden oluşur. Ancak com zaten Dosya tabanlı uygulama ve Bellek tabanlı uygulama olan en yaygın iki durum için uygulamalar sağladığından çoğu uygulama ILockBytes arabirimini uygulamaz. Bileşik dosya depolama nesnesi, doğrudan uygulamada çağırmadığınız ILockBytes yöntemlerini çağırır.

Bileşik Dosya Uygulama Sınırları

Yapılandırılmış Depolama mimarisinin COM uygulaması, bileşik dosyalarıolarak adlandırılır. Bileşik dosyalarda uygulandığı gibi depolama nesneleri, IPropertyStorage uygulamasını ve IPropertySetStoragearabirimleriniiçerir.

Bu arabirimlerin bileşik dosya uygulamasına yönelik işaretçiler, yeni bir bileşik dosya nesnesi oluşturmak için StgCreateStorageEx işlevi çağrılarak veya daha önce oluşturulmuş bir bileşik dosyayı açmak için StgOpenStorageExalınır.

Bu arabirimlerin bileşik dosya uygulamasına yönelik bir işaretçi almak için alternatif bir yöntem, StgCreateDocfileeski ve daha sınırlıçağırmak veya StgOpenStorageişlevini. Dört işlevin tümü de bileşik dosya uygulamaları olarak değerlendirilir.

Bileşik dosya uygulaması, STGOPTIONS yapısında tanımlandığı gibi 512 veya 4096 bayt kesimlerini kullanacak şekilde yapılandırılabilir.

Bileşik dosyaların bileşik dosya uygulaması aşağıdaki uygulama kısıtlamalarına tabidir.

Sınırlamak Bileşik dosya
Dosya boyutu sınırları: 512: 2 gigabayt (GB) 4096: Dosya sistemi sınırlarına kadar
Açık öğeler için gereken en büyük yığın boyutu: 512: 4 megabayt (MB) 4096: Sanal bellek sınırlarına kadar
Eşzamanlı kök açılır (aynı dosyanın açılır): STGM_READ ve STGM_SHARE_DENY_WRITE belirtilirse, sınırlar dosya sistemi sınırları tarafından belirlenir. Aksi takdirde, aynı dosyanın 20 eşzamanlı kök açma sınırı vardır.
Dosyadaki öğe sayısı: 512: Sınırsız, ancak binlerce 4096 öğe sayısı: Sınırsız ise performans düşebilir

4 MB yığın boyutu sınırı nedeniyle, işlem modundaki açık öğelerin sayısı genellikle birkaç bin öğeyle sınırlıdır.