W jaki sposób COM wybiera sposób przekazywania interfejsu?

W miarę, jak to robię, istnieją trzy sposoby implementacji konfiguracji w COM:

zestawianie typelibówkonfigurowanie proxy / stubwdrożenie IMarshal przez obiekt

teraz jak komponentkonsument (użytkownik) wybierz, który będzie używany? Czy sam decyduje i korzysta z preferowanego sposobu, czy też wywołuje jakąś wbudowaną funkcję i rozwiązuje problem?

Obecnie doświadczam następujących rzeczy: mój komponent implementuje niestandardowy interfejsICustomInterface który jest również realizowany przez komponent innej firmy. Mój komponent nie ma typelib i nie implementuje IMarshal. Rejestr systemowy zawiera interfejs HKCR {uuidof (ICustomInterface)} Klucz proxyStubClsid32 z identyfikatorem GUID proxy / kodu pośredniego, który można prześledzić do biblioteki dostarczonej przez tę inną firmę.

Teraz, gdy mój komponent konsument zainicjuje mój komponent, wywołuje QueryInterface () żądając IMarshal od mojego komponentu i po zwróceniu E_NOINTERFACE po prostu nic nie robi. Dlaczego tak się dzieje - dlaczego nie uruchamia się biblioteki proxy / stub od innej firmy?

questionAnswers(2)

yourAnswerToTheQuestion