Re: Exe COM server question
None of this is documented. SCM is not even mentioned for local
(same machine) activations. SCM is definitely used with DCOM,
however. I believe SCM is not used in local activation. However,
I suppose it may still be necessary if the local server is actually a
service.
Note that CoCreateInstance[Ex] does not call CoGetClassObject,
even though it's conceptually simpler to think so. CoCreateInstance
is a wrapper for CoCreateInnstanceEx, and the latter communicates
with the server directly through the activation request and gets
back the array of interface pointers on the created object, not its
class object's IClassFactory interface.
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://www.mvps.org/vcfaq
=====================================
"Ranjit" <ranjitiyer@gmail.com> wrote in message
news:1149199884.352476.247920@y43g2000cwc.googlegroups.com...
Am trying to understand the distinction between the roles of the COM
runtime and the SCM while dealing with COM objects housed in an EXE
server on the same host.
1. Object creation when the server is not up and running.
The client calls CoCreateInstance() and the COM library internally
calls CoGetClassObject() to get the factory. Am i right in assuming
that at this point, the COM runtime looks up the registry for the CLSID
and figures that the target COM object resides in an exe server or does
it simply forward the request to the SCM, since the target object is
out of proc? Does the COM runtime in the client process start the exe
server or is it the SCM that does it.
2. When the exe server fires up, does it register it's class factories
with the COM runtime that is running in it's address space or does it
register them with the SCM.
3. When happens when a subsequent CoCreateInstance request is made from
the client. On a similar token as above, i would think that the COM
library in the client space forwards the CoGetClassObject request to
the SCM and the SCM returns the IClassFactory poninter that was
registered by the Exe server at start time. Is this true?
Thanks,
Ranjit