3.1.2.5.2.3.1 IActivation:: RemoteActivation (Opnum 0)

The RemoteActivation (Opnum 0) method is used by clients to request the activation of an object. It returns the bindings, the IPID for the Remote Unknown, and the COMVERSION of the object exporter that hosts the object.

 error_status_t RemoteActivation(
   [in] handle_t hRpc,
   [in] ORPCTHIS* ORPCthis,
   [out] ORPCTHAT* ORPCthat,
   [in] GUID* Clsid,
   [in, string, unique] wchar_t* pwszObjectName,
   [in, unique] MInterfacePointer* pObjectStorage,
   [in] DWORD ClientImpLevel,
   [in] DWORD Mode,
   [in, range(1, MAX_REQUESTED_INTERFACES)] 
     DWORD Interfaces,
   [in, unique, size_is(Interfaces)] 
     IID* pIIDs,
   [in, range(0, MAX_REQUESTED_PROTSEQS)] 
     unsigned short cRequestedProtseqs,
   [in, size_is(cRequestedProtseqs)] 
     unsigned short aRequestedProtseqs[],
   [out] OXID* pOxid,
   [out] DUALSTRINGARRAY** ppdsaOxidBindings,
   [out] IPID* pipidRemUnknown,
   [out] DWORD* pAuthnHint,
   [out] COMVERSION* pServerVersion,
   [out] HRESULT* phr,
   [out, size_is(Interfaces), disable_consistency_check] 
     MInterfacePointer** ppInterfaceData,
   [out, size_is(Interfaces), disable_consistency_check] 
     HRESULT* pResults
 );

hRpc: This MUST specify an RPC binding handle as specified in [MS-RPCE] section 3.2.2.3.1 .

ORPCthis: This MUST specify an ORPCTHIS. The COMVERSION field SHOULD contain the negotiated version, as described in section 1.7. The extensions field MUST be set to NULL.

ORPCthat: This MUST contain an ORPCTHAT. The extensions field MUST be set to NULL.

Clsid: This MUST specify the CLSID of the object to be created.

pwszObjectName: This MAY contain a string to be used to initialize the object.<68>

pObjectStorage: This MAY contain a marshaled OBJREF to be used to initialize the object.<69>

ClientImpLevel:  This MUST contain an implementation-specific value that MUST be ignored on receipt.<70>

Mode: If the activation is for a class factory reference, this parameter MUST be 0xFFFFFFFF. Otherwise, it MUST be 0, except when the client specifies an initialization string in pwszObjectName. If it does, this field MAY contain an implementation-specific value.<71>

Interfaces: This MUST contain the number of elements in pIIDs. This value MUST be between 1 and MAX_REQUESTED_INTERFACES; see section 2.2.28.1.

pIIDs:  This MUST be an array of requested IIDs on the object to be created.

cRequestedProtseqs: This MUST contain the number of elements in aRequestedProtseqs. This value MUST be between 1 and MAX_REQUESTED_PROTSEQS (see section 2.2.28.1).

aRequestedProtseqs: This MUST specify an array of RPC protocol sequence identifiers that the client supports.

pOxid: This MUST contain an OXID value identifying the object exporter containing this object.

ppdsaOxidBindings: This MUST contain the string and security bindings supported by the object exporter and MUST NOT be NULL. The returned string bindings SHOULD contain endpoints.

pipidRemUnknown: This MUST contain the IPID of the object exporter Remote Unknown object.

pAuthnHint: This SHOULD contain an RPC authentication level (see [MS-RPCE] section 2.2.1.1.8) that denotes the minimum authentication level supported by the server. This MAY be ignored by the client.<72>

pServerVersion:  This MUST contain the COMVERSION of the object exporter. For details, see section 2.2.11.

phr: An HRESULT that indicates the result of the activation. Success codes other than 0x00000000 MUST NOT be used.

ppInterfaceData:  This MUST contain an array of MInterfacePointer structures containing the results for each requested interface.

pResults: If the phr parameter contains 0x00000000, this MUST contain an array of HRESULTs containing the results of querying the object for each interface in pIIDs. Success codes other than 0x00000000 MUST NOT be used in the results array. If the phr parameter contains a failure value, this MUST contain an array of 0x00000000 values, one for each interface in pIIDs.

When processing this call, the object resolver MUST perform the operations specified in section 3.1.2.5.2.3.