Aracılığıyla paylaş


Önizleme İşleyicileri ve Kabuk Önizleme Sunucusu

Önizleme işleyicileri, görünümün okuma bölmesinde dosyanın içeriğinin basit, zengin salt okunur önizlemesini göstermek için bir öğe seçildiğinde çağrılır. Bu işlem, dosyanın ilişkili uygulaması başlatılmadan yapılır.

Bu konuda aşağıdaki konular ele alınmaktadır:

Önizleme İşleyici Mimarisi

Önizleme işleyicisi barındırılan bir uygulamadır. Konaklar, Windows Vista veya Microsoft Outlook 2007'de Windows Gezgini'ni içerir. Konaklar, önizleme işleyicisi ile konak arasında bir iletişim yöntemi olarak IPreviewHandlerFrame'yi kullanır.

Önizleme işleyicisinin kendisi şu arabirimleri uygular:

İşleyiciniz, IObjectWithSitearacılığıyla çağrılır ve bu işaretçi aracılığıyla, konakla etkileşim kurmak için bir IPreviewHandlerFrame nesnesi talep edebileceğiniz IUnknown işaretçisini döndürür.

Sunucu Modeli Seçenekleri

Önizleme işleyicileri her zaman işlem dışıdır. Bunu uygulamanın iki yöntemi vardır:

  1. Önizleme işleyicisi işlem içi sunucu olarak oluşturulabilir, ancak işlem dışı bir vekil konak üzerinden çalıştırılabilir. Bu tercih edilen yöntemdir. Sistem, Prevhost.exe dosyasında bunun için bir yedek barındırıcı sağlar. Bu yöntem tarafından oluşturulan önizleme işleyicileri Windows XP'de Outlook 2007 ile uyumlu değildir. Ancak, bu işleyiciler Windows Gezgini'nde ve Windows Vista üzerinde çalışan Outlook 2007'de çalışır.
  2. Önizleme işleyicisi yerel Bileşen Nesne Modeli (COM) sunucusu olarak oluşturulabilir. Bu, birkaç nedenden dolayı önerilmez. İlk olarak, işlem içi sunucunun uygulanması daha kolaydır. Daha da önemlisi, işlem içi sunucu olarak uygulama, işleyici nesnesinin ömrü üzerinde daha fazla denetim sağlar ve bu da daha iyi temizleme ve verimlilik sağlar.

Varsayılan olarak, önizleme işleyicileri güvenlik nedeniyle düşük bütünlük düzeyi (IL) işleminde çalışır. İsteğe bağlı olarak kayıt defterinde aşağıdaki değeri ayarlayarak düşük IL işlemi olarak çalıştırmayı devre dışı bırakabilirsiniz. Ancak, bunu yapmanız önerilmez. Sistemler sonunda düşük IL olmayan tüm işlemleri reddedecek şekilde yapılandırılabilir.

HKEY_CLASSES_ROOT
   CLSID
      {YOUR HANDLER'S CLSID}
         DisableLowILProcessIsolation [DWORD] = 1

Farklı önizleme işleyicileri varsayılan olarak aynı işlemi paylaşır. İki Prevhost.exe örneği aynı anda çalıştırılabilir; biri düşük IL işlemleri olarak çalışan işleyiciler için, diğeri bu davranışı geri çeviren işleyiciler için.

Başlatma

Küçük resim ve özellik işleyicilerinde olduğu gibi, işleyicinizi bir akışla başlatmanız kesinlikle önerilir. Gerekirse bir dosya veya öğe aracılığıyla başlatabilirsiniz, ancak akışlar bir işleyici uygulamak için en güvenli yolu sağlar. Bir akış aracılığıyla başlatma, dosya bütünlüğünü ve işleyiciyi düşük BIR IL işlemi olarak çalıştırma sisteminin kararlılığını sağlar; örneğin, sistemi arabellek taşmalarına karşı koruma, işleyicinin bilgi yazabileceği yeri sınırlama ve diğer pencerelerle iletişimi sınırlama.

Bir dosya veya Shell öğesiyle başlatmanız gerekiyorsa, dosya yolunu veya IShellItem'a başvuru olarak saklayın. IPreviewHandler::D oPreview çağrılana kadar bu kaynaklardan veri okumayın.

Genel olarak, başlatma işlemi önizleme görüntüsü oluşturma ve depolama gibi ağır bir işlem gerçekleştirmemelidir. En iyi verimlilik için, önizleme çağrılana kadar bu tür işlemler yapılmamalıdır.

İşleyici Veri Akışını Önizleme

Önizleme işlemindeki veri akışı burada gösterilen genel yolu izler. Ana uygulama, Windows Vista'da Windows Gezgini veya Outlook 2007'deki gibi düşünülebilir.

  1. Önizleme işleyicisi, tercihen bir akışla başlatılır.
  2. Görünüm penceresi, IPreviewHandler::SetWindowaracılığıyla konaktan işleyiciye geçirilir.
  3. Bu noktada, IPreviewHandler::DoPreview çağrılana kadar işleyici başka bir şey yapmamalıdır.
  4. Önizleme, IPreviewHandler::DoPreviewçağrısı aracılığıyla okuma panelinde görüntülenir.
  5. Pencerenin boyutu, IPreviewHandler::SetRectaracılığıyla ayarlanır.
  6. Pencere gerektiğinde IPreviewHandler::SetRectaracılığıyla yeniden boyutlandırılır.
  7. Önizleme kaldırılır ve artık gerekli olmadığında IPreviewHandler::Unloadçağrısı aracılığıyla kaynakları serbest bırakılır.

Önizleme İşleyicisinde Hata Ayıklama

Önizleme işleyicinizi işlem içi bir sunucu olarak uygulamak için önerileri izlediyseniz, önizleme işleyicinizin hatalarını ayıklamak için Prevhost.exesürecine bağlanabilirsiniz. Daha önce de belirtildiği gibi, biri normal düşük IL işlemleri için, diğeri de düşük IL işlemi olarak çalıştırmayı geri çeviren işleyiciler için olmak üzere iki Prevhost.exeörneği olabileceğini unutmayın.

Kullanılabilir işlemler listenizde Prevhost.exe bulamazsanız, büyük olasılıkla bu noktada yüklenmemiştir. Önizleme için bir dosyaya tıklanması yedek dosyayı yükler ve ardından eklenebilir bir süreç olarak görünmesi gerekir.

Önizleme İşleyicisi için Kendi Sürecinizi Oluşturma

varsayılan işlem altında çalışmak yerine işleyiciniz için yeni bir işlem oluşturmaya zorlamak istiyorsanız, AppID altında işleyiciniz için yeni bir alt anahtar oluşturun ve DllSurrogate girdisini "Prevhost.exe" olarak ayarlayın. AppID varsayılan Prevhost.exeyerine bu AppID alt anahtarını kullanın.

İşleyici, yeni bir işlem sağlayarak varsayılan olarak olduğu gibi paylaşılan bir işlem altında çalışmaktan kaçınabilir. Bu, örneğin, işlemdeki ortak dil çalışma zamanının (CLR) belirli bir sürümünü sağlamanıza olanak sağlayabilir. Önizleme işleyicisinin yönetilen bir uygulamasını oluşturuyorsanız bu gereklidir.

Not

32 bit önizleme işleyicileri, 64 bit işletim sistemlerine yüklendiğinde AppID {534A1E02-D58F-44f0-B58B-36CBED287C7C} kullanmalıdır.

 

Önizleme İşleyicileri Oluşturma

Önizleme İşleyicisi Nasıl Kaydedilir

Önizleme İşleyicisi Yönergeleri