2013-07-18 24 views
5

en benim müşterilerin uygulama için eklentileri oluşturma olanağı vermek istediğimizi varsayalım, ama onları benim programın bellek ile karıştırmak kesmek yapmak istemiyoruz, bunu önlemek mümkün mü?DLL işlevselliğini sınırlamak mümkün mü?

Yoksa ana program belleğine erişemez nereye bellek bölgesinde bir tür DLL yüklenemedi?

cevap

4

Sen eklentileri ayrı bir işlemde çalıştırmak sağlayabilirsiniz. Eklentinin ihtiyaç duyduğu herhangi bir bilgi, bu işleme mesaj olarak iletilir. Uygulamanın ihtiyaç duyduğu herhangi bir sonuç mesaj olarak alınır. Eklenti başına ayrı bir işlem yapabilir veya tüm eklentilerin aynı işlemde çalışmasını sağlayabilirsiniz. Bir eklenti olarak, bir eklenti özelliğinin çoğu modern sürümleri, JVM gibi yerleşik bir çalışma zamanı ortamı kullanır. Daha sonra, eklenti, uygulama ile aynı süreçte çalışır, ancak eklentinin zarar görmesini engelleyen bir sanal ortamın sınırları içinde, programınıza zarar verebilir. Bu senaryoda, DLL, ancak kod veya bayt kodu yoktur.

1

Kısa cevap "hayır" dır.

Uzun cevap: Bir DLL sürecin perspektifinden ve OS'nin stratejilerine kadar, belleğe yüklenir ve tüm niyet ve amaçlar için çalıştırılabilir dosyanın kendisinde bir parçası olmak görünecektir. OS belirli DLL kaç tane "kullanıcılar" izlemek gerekiyor böylece Tabii DLL, birden yürütülebilir arasında paylaşılan (belki), ama bir süreci perspektif gelen, bu yürütülebilir bir parçası. Bu ayrı bir adres aralığı, ancak DLL içeriğinin hakları ve izinleri tam olarak başka bir DLL veya ana exectuable kendisi ile aynıdır. Eklenti varsa

, Eklentileri GÜVEN gerekir. İstediğiniz bu değilse, eklentileri yapmak için DLL modelini kullanmayın (ör. Paylaşılan bellek bölgesini ve yalnızca paylaşılan belleğe erişime izin vermek için başka bir yürütülebilir dosyayı kullanın).