ORPC (Object RPC) services are used by DCOM (Distributed COM). ORPC calls can be distinguished from RPC calls because, on the wire, they always have an implicit parameter, either of type ORPCTHIS or ORPCTHAT (see section 3.2 of Section 4.18, “DCOM”).
Also, versions of ORPC services interface identifiers is always 0.0, as explained in [73] :
Finally, the interface version number (named if_vers) must always be 0.0. This is because a COM interface may never be modified after it is published. COM interfaces are not versioned; a new interface is defined instead.
The following ORPC services are running in the rpcss service:
00000136-0000-0000-c000-000000000046 v0.0: ISCMActivator 000001a0-0000-0000-c000-000000000046 v0.0: ISystemActivator
ISCMActivator is an ORPC interface implemented by the COM SCM to handle remote activation requests (CoCreateInstance(), CoGetClassObject() ...) :
Table 4.13. ISCMActivator operations
| Interface | Operation number | Operation name |
|---|---|---|
| 00000136-0000-0000-c000-000000000046 v0.0: ISCMActivator | ||
| 0x00 | QueryInterfaceSCMActivator | |
| 0x01 | AddRefISCMActivator | |
| 0x02 | ReleaseISCMActivator | |
| 0x03 | SCMActivatorGetClassObject | |
| 0x04 | SCMActivatorCreateInstance |
ISystemActivator (also known as IRemoteSCMActivator) is an ORPC base interface that must be implemented by servers supporting object activation. In the specific case of the COM SCM, running inside the rpcss service, this interface is used when the activation process is looking for an object, asking to the local or a remote SCM to activate a given object.
Table 4.14. ISystemActivator (IRemoteSCMActivator) operations
| Interface | Operation number | Operation name |
|---|---|---|
| 000001a0-0000-0000-c000-000000000046 v0.0: ISystemActivator (IRemoteSCMActivator) | ||
| 0x00 | QueryInterfaceIRemoteSCMActivator | |
| 0x01 | AddRefIRemoteISCMActivator | |
| 0x02 | ReleaseIRemoteISCMActivator | |
| 0x03 | RemoteGetClassObject | |
| 0x04 | RemoteCreateInstance |