Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
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
İlgili konular