ISurrogate interface (objidl.h)

Used to dynamically load new DLL servers into an existing surrogate and free the surrogate when it is no longer needed.


The ISurrogate interface inherits from the IUnknown interface. ISurrogate also has these types of members:


The ISurrogate interface has these methods.


The ISurrogate::FreeSurrogate method (objidl.h) unloads a DLL server.

The ISurrogate::LoadDllServer method (objidl.h) loads a DLL server into the implementing surrogate.


A surrogate is an EXE process into which a DLL server can be loaded to give the DLL server the advantages of an EXE server without the coding overhead. It can also allow independent DLL servers to be located together within a single process, reducing the total number of processes needed. DLL servers are easy to write using standard development tools, like Microsoft Visual Studio, and running them in a surrogate process provides the benefits of an executable implementation, including fault isolation, the ability to serve multiple clients simultaneously, and allowing the server to provide services to remote clients in a distributed environment.


Minimum supported client Windows 2000 Professional [desktop apps | UWP apps]
Minimum supported server Windows 2000 Server [desktop apps | UWP apps]
Target Platform Windows
Header objidl.h (include ObjIdl.h)

See also

DLL Surrogates

Writing a Custom Surrogate