Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

269 lines
7.3 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1998.
  5. //
  6. // File:
  7. // activate.idl
  8. //
  9. // Contents:
  10. // Definition of (currently) private COM system activation interface.
  11. //
  12. // History:
  13. // VinayKr 01-16-98 Created(actprops)
  14. // SatishT 01-23-98 Added property interfaces
  15. // SatishT 02-03-98 Separated
  16. // vinaykr 02-20-98 Created privact,
  17. // distilled actprops/merged
  18. //
  19. //--------------------------------------------------------------------------
  20. #ifndef DO_NO_IMPORTS
  21. import "obase.idl";
  22. import "wtypes.idl";
  23. import "objidl.idl";
  24. #ifdef RAW
  25. import "iface.idl";
  26. #endif
  27. #endif
  28. #ifndef RAW
  29. import "activate.idl";
  30. typedef struct _PRIV_SCM_INFO
  31. {
  32. long Apartment;
  33. [string] WCHAR *pwszWinstaDesktop;
  34. ULONG64 ProcessSignature;
  35. [size_is(EnvBlockLength)]
  36. WCHAR * pEnvBlock;
  37. DWORD EnvBlockLength;
  38. } PRIV_SCM_INFO;
  39. /** This is for output activation properties **/
  40. /** Must be identical to PRIV_RESOLVER_INFO in actprops.idl **/
  41. typedef struct _PRIV_RESOLVER_INFO
  42. {
  43. OXID OxidServer;
  44. DUALSTRINGARRAY * pServerORBindings;
  45. OXID_INFO OxidInfo;
  46. MID LocalMidOfRemote;
  47. DWORD DllServerModel;
  48. [string] WCHAR * pwszDllServer;
  49. BOOL FoundInROT;
  50. } PRIV_RESOLVER_INFO;
  51. typedef struct _REMOTE_REQUEST_SCM_INFO
  52. {
  53. DWORD ClientImpLevel;
  54. unsigned short cRequestedProtseqs;
  55. [size_is(cRequestedProtseqs)]
  56. unsigned short *pRequestedProtseqs;
  57. } REMOTE_REQUEST_SCM_INFO;
  58. typedef struct _REMOTE_REPLY_SCM_INFO
  59. {
  60. OXID Oxid;
  61. DUALSTRINGARRAY *pdsaOxidBindings;
  62. IPID ipidRemUnknown;
  63. DWORD authnHint;
  64. COMVERSION serverVersion;
  65. } REMOTE_REPLY_SCM_INFO;
  66. /**
  67. Interfaces for private info exchange between OLE32 and SCM
  68. **/
  69. [
  70. object,
  71. local,
  72. uuid(000001AA-0000-0000-C000-000000000046),
  73. pointer_default(unique)
  74. ]
  75. interface IScmRequestInfo : IUnknown
  76. {
  77. HRESULT SetScmInfo([in] PRIV_SCM_INFO *pScmInfo);
  78. HRESULT GetScmInfo([out] PRIV_SCM_INFO **ppScmInfo);
  79. HRESULT SetRemoteRequestInfo([in] REMOTE_REQUEST_SCM_INFO *pRemoteReq);
  80. HRESULT GetRemoteRequestInfo([out] REMOTE_REQUEST_SCM_INFO **ppRemoteReq);
  81. }
  82. [
  83. object,
  84. local,
  85. uuid(000001B6-0000-0000-C000-000000000046),
  86. pointer_default(unique)
  87. ]
  88. interface IScmReplyInfo : IUnknown
  89. {
  90. HRESULT SetResolverInfo([in] PRIV_RESOLVER_INFO *pResolverInfo);
  91. HRESULT GetResolverInfo([out] PRIV_RESOLVER_INFO **ppResolverInfo);
  92. HRESULT SetRemoteReplyInfo([in] REMOTE_REPLY_SCM_INFO *pRemoteReply);
  93. HRESULT GetRemoteReplyInfo([out] REMOTE_REPLY_SCM_INFO **ppRemoteReply);
  94. }
  95. [
  96. object,
  97. uuid(000001AB-0000-0000-C000-000000000046),
  98. pointer_default(unique)
  99. ]
  100. interface IInstantiationInfo : IUnknown
  101. {
  102. }
  103. /** This is purely a backdoor for *setting* legacy properties easily **/
  104. [
  105. object,
  106. local,
  107. uuid(000001AC-0000-0000-C000-000000000046),
  108. pointer_default(unique)
  109. ]
  110. interface ILegacyInfo : IUnknown
  111. {
  112. HRESULT SetCOSERVERINFO([in] COSERVERINFO *pServerInfo);
  113. HRESULT GetCOSERVERINFO([out] COSERVERINFO **ppServerInfo);
  114. }
  115. /**
  116. Interface for defining GetPersistentInstance parameters
  117. **/
  118. [
  119. object,
  120. local,
  121. uuid(000001AD-0000-0000-C000-000000000046),
  122. pointer_default(unique)
  123. ]
  124. interface IInstanceInfo : IUnknown
  125. {
  126. HRESULT SetStorage([in, unique] IStorage *pStg);
  127. HRESULT GetStorage([out] IStorage **ppStg);
  128. HRESULT SetStorageIFD([in] MInterfacePointer *pStgIFD);
  129. HRESULT GetStorageIFD([out] MInterfacePointer **ppStgIFD);
  130. HRESULT SetFile([in, string, unique] WCHAR *pwszFileName, [in] DWORD dwMode);
  131. HRESULT GetFile([out, string] WCHAR **ppwszFileName, [out] DWORD *pdwMode);
  132. // Currently used by SCM in Remote Activation Requests
  133. HRESULT SetIfdROT(MInterfacePointer *pIfdROT);
  134. HRESULT GetIfdROT(MInterfacePointer **ppIfdROT);
  135. }
  136. [
  137. object,
  138. local,
  139. uuid(000001AE-0000-0000-C000-000000000046),
  140. pointer_default(unique)
  141. ]
  142. interface IPrivActivationContextInfo : IActivationContextInfo
  143. {
  144. HRESULT SetClientContext([in] IContext *pClientContext);
  145. HRESULT SetPrototypeContext([in] IContext *pContext);
  146. HRESULT PrototypeExists([out] BOOL *pBExists);
  147. }
  148. /**
  149. Private act props interfaces
  150. **/
  151. [
  152. object,
  153. local,
  154. uuid(000001AF-0000-0000-C000-000000000046),
  155. pointer_default(unique)
  156. ]
  157. interface IActivationProperties:IMarshal2
  158. {
  159. HRESULT SetDestCtx([in] DWORD dwDestCtx);
  160. HRESULT SetMarshalFlags([in] DWORD dwMarshalFlags);
  161. HRESULT SetLocalBlob([in] void *blob);
  162. HRESULT GetLocalBlob([out] void **blob);
  163. }
  164. [
  165. object,
  166. local,
  167. uuid(000001B0-0000-0000-C000-000000000046),
  168. pointer_default(unique)
  169. ]
  170. interface IPrivActivationPropertiesOut:IActivationPropertiesOut
  171. {
  172. HRESULT SetObjectInterfaces([in] DWORD cIfs,
  173. [in] IID *pIID,
  174. [in] IUnknown *pUnk);
  175. HRESULT SetMarshalledResults([in] DWORD cIfs,
  176. [in] IID *pIID,
  177. [in] HRESULT *pHr,
  178. [in] MInterfacePointer **pIntfData);
  179. HRESULT GetMarshalledResults([out] DWORD *pcIfs,
  180. [out] IID **pIID,
  181. [out] HRESULT **pHr,
  182. [out] MInterfacePointer ***pIntfData);
  183. }
  184. [
  185. object,
  186. local,
  187. uuid(000001B5-0000-0000-C000-000000000046),
  188. pointer_default(unique)
  189. ]
  190. interface IPrivActivationPropertiesIn:IActivationPropertiesIn
  191. {
  192. HRESULT PrivGetReturnActivationProperties([out] IPrivActivationPropertiesOut **ppActOut);
  193. HRESULT GetCOMVersion([out] COMVERSION *pVersion);
  194. HRESULT GetClsid([out] CLSID *pClsid);
  195. HRESULT GetClientToken([out] HANDLE *pHandle);
  196. //Returns maximum distance travelled
  197. HRESULT GetDestCtx([out] DWORD *pdwDestCtx);
  198. };
  199. typedef enum {
  200. MARSHOPT_NO_OID_REGISTER = 1,
  201. } MARSHAL_OPTIONS;
  202. //
  203. // Optional interface used by COM+ infrastructure components that
  204. // want to influence how they are marshalled server-side.
  205. //
  206. [
  207. uuid(4c1e39e1-e3e3-4296-aa86-ec938d896e92),
  208. local,
  209. object
  210. ]
  211. interface IMarshalOptions : IUnknown
  212. {
  213. void GetStubMarshalFlags([out]DWORD* pdwFlags); // see MARSHAL_OPTIONS above
  214. };
  215. #else //RAW
  216. //IDSCM Replacement
  217. [
  218. uuid(00000136-0000-0000-C000-000000000046),
  219. pointer_default(unique)
  220. ]
  221. interface ISCMActivator // <==> ISCMLocalActivator
  222. {
  223. #include "comhndl.h"
  224. COM_DEFINES(ISCMActivator)
  225. HRESULT SCMActivatorGetClassObject(
  226. COM_HANDLE
  227. [in,unique] MInterfacePointer *pActProperties,
  228. [out] MInterfacePointer **ppActProperties
  229. );
  230. HRESULT SCMActivatorCreateInstance(
  231. COM_HANDLE
  232. [in,unique] MInterfacePointer *pUnkOuter,
  233. [in,unique] MInterfacePointer *pActProperties,
  234. [out] MInterfacePointer **ppActProperties
  235. );
  236. }
  237. #endif //RAW