DCE Packet Headers
Object RPC sits entirely on top of DCE RPC. The following list describes the elements of ORPC that are specified above and beyond DCE RPC.
- The object ID field of the header must contain the IPID.
- The interface ID of the RPC header must contain the IID, even though it is not needed given the IPID. This allows ORPC to sit on top of DCE RPC. An unmodified DCE RPC implementation will correctly dispatch based on IID and IPID. An optimized RPC need only dispatch based on IPID.
- An IPID uniquely identifies a particular interface on a particular object on a computer. The converse is not true; a particular interface on a particular object may only be represented by multiple IPIDs. IPIDs are unique on their OXID. IPIDs may be reused, however reuse of IPIDs should be avoided.
- Datagram, maybe, and idempotent calls are all allowed in ORPC. Interface pointers may not be passed on maybe or idempotent calls.
- Datagram broadcasts are not allowed in ORPC.
- Remote COM input synchronous calls are not allowed in ORPC.
- COM asynchronous calls are synchronous RPC calls.
- COM faults are returned in the stub fault field of the DCE RPC fault packet. Any 32-bit value may be returned. Only the following value is pre-specified:
RPC_E_VERSION_MISMATCH
- COM will allow DCE cancel.
All interface version numbers must be 0.0.