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 obiektteraz 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?