Hello everyone,


I am learning how to write a local out-of-process server and made a runnable program (including client, proxy DLL and server EXE). It works fine and I am inerested to learn how they are binded together internally. I have posted the registration items for EXE server, proxy DLL and interface as below. Here is my understanding of how a client will find the EXE server from component ID and interface. Please review and correct me if I am wrong.

1. Client issue request through CoCreateInstance with interface ID IX and component ID Component1;
2. IX maps to interface registration item and then find the related proxy/stub item in registry,

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{32B B8323-B41B-11CF-A6BB-0080C7B2D682}\ProxyStubClsid32]
@="{32BB8323-B41B-11CF-A6BB-0080C7B2D682}"

3. In the proxy/stub item in registry, related physical DLL file will be found and loaded into client's process, here is the related item,

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{32BB832 3-B41B-11CF-A6BB-0080C7B2D682}\InProcServer32]
@="D:\\Visual Studio 2008\\Projects\\test_exeserver1\\Debug\\test_proxy .dll"
"ThreadingModel"="Both"

4. For the requested component name, all the registry will be searched to find "Component1", until the following posted EXE Server item is found and then located (started) by its physical location

[HKEY_CLASSES_ROOT\CLSID\{0C092C29-882C-11CF-A6BB-0080C7B2D682}\LocalServer32]
@="D:\\Visual Studio 2008\\Projects\\test_exeserver1\\Debug\\test_exese rver1.exe"

My understanding correct? Do I miss any information?

--------------------
EXE Server

Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{0C092C29-882C-11CF-A6BB-0080C7B2D682}]
@="Inside COM, Chapter 10 Example, Component 1"

[HKEY_CLASSES_ROOT\CLSID\{0C092C29-882C-11CF-A6BB-0080C7B2D682}\LocalServer32]
@="D:\\Visual Studio 2008\\Projects\\test_exeserver1\\Debug\\test_exeserver1.exe"

[HKEY_CLASSES_ROOT\CLSID\{0C092C29-882C-11CF-A6BB-0080C7B2D682}\ProgID]
@="InsideCOM.Chap10.Cmpnt1.1"

[HKEY_CLASSES_ROOT\CLSID\{0C092C29-882C-11CF-A6BB-0080C7B2D682}\VersionIndependentProgID]
@="InsideCOM.Chap10.Cmpnt1"
Proxy/Stub DLL

Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{32BB8323-B41B-11CF-A6BB-0080C7B2D682}]
@="PSFactoryBuffer"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{32BB8323-B41B-11CF-A6BB-0080C7B2D682}\InProcServer32]
@="D:\\Visual Studio 2008\\Projects\\test_exeserver1\\Debug\\test_proxy.dll"
"ThreadingModel"="Both"
Interface

Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{32BB8323-B41B-11CF-A6BB-0080C7B2D682}]
@="IX"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{32BB8323-B41B-11CF-A6BB-0080C7B2D682}\NumMethods]
@="5"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{32BB8323-B41B-11CF-A6BB-0080C7B2D682}\ProxyStubClsid32]
@="{32BB8323-B41B-11CF-A6BB-0080C7B2D682}"
--------------------


thanks in advance,
George