Aracılığıyla paylaş


Sunucu Tarafından Sağlanan Ek Verilerle İşleyici Uygulama ve Etkinleştirme

Sunucu, işleyicinin kullanması için pakete bazı ek veriler eklemek istiyorsa, sunucunun hem IMarshal hem de IStdMarshalInfo arabirimlerini uygulaması gerekir. Sunucunun standart sıralayıcıyı birleştirmesi ve hazırlamanın ilk bölümünü, IMarshal::GetUnmarshalClassdahil olmak üzere, birleştirilmiş standart sıralayıcıya devretmesi ve standart sıralayıcının IMarshal::GetMarshalSizeMaxtarafından döndürülen boyuta kendi veri boyutunu eklemesi gerekir. Standart sıralayıcı, oluşturulacak işleyicinin CLSID'sini almak için IStdMarshalInfo::GetClassForHandler çağırır. Standart aktarıcı veriyi aktardıktan sonra, sunucu akışa kendi ek verilerini yazar. Akışta ek veri içeren sonuçta elde edilen yapılar aşağıdaki çizimde gösterilmiştir:

akışta ek veri içeren yapıları gösteren Diyagramı.

Stream'de Ek Veri İçeren Server-Side Yapıları

Bu, COM'dan CoUnmarshalInterface çağrısının, istemci tarafında herhangi bir okunmamış veriyi atlayıp işleyici oluşturulamadığı durumlarda, akışı tüm sıralanmış arabirim verilerinin ardından uygun konumda bırakmasına olanak tanır.

Stream'de Ek Veri içeren Client-Side Yapıları

Akışta fazladan sunucu verisi olmadığı durumlarda olduğu gibi, istemci tarafı COM çağrısı CoUnmarshalInterface kimliği ve işleyiciyi oluşturur. İşleyicinin IMarshal uygulaması ve IMarshal çağrılarını önce toplanmış standart sıralayıcıya devretmesi, ardından sunucunun sağladığı ek verileri hazırlaması veya açması gerekir. İşleyicinin UnmarshalInterface, arabirim daha önce çözülmüş olsa da olmasa da her çözümleme işlemi için çağrılacaktır. Bu durumda, sunucu CoGetStdMarshalEx çağırmaz, ancak işleyicinin çağırması gerekir. Elde edilen istemci tarafı yapısı aşağıdaki çizimde gösterilmiştir.

İstemci tarafı yapısını gösteren Diyagramı.

İşleyici Client-Side Hafif