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.

231 lines
5.4 KiB

  1. //+------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1995.
  5. //
  6. // File: remunk.idl
  7. //
  8. // The remote version of IUnknown. This interface exists on every
  9. // object that is exported. It is used by clients to query for new
  10. // interfaces, get additional references (for marshalling), and release
  11. // outstanding references.
  12. //
  13. //+-------------------------------------------------------------------------
  14. #ifndef DO_NO_IMPORTS
  15. import "unknwn.idl";
  16. import "obase.idl";
  17. #endif
  18. typedef struct tagREMQIRESULT
  19. {
  20. HRESULT hResult;
  21. STDOBJREF std;
  22. } REMQIRESULT;
  23. typedef struct tagREMINTERFACEREF
  24. {
  25. IPID ipid;
  26. unsigned long cPublicRefs;
  27. unsigned long cPrivateRefs;
  28. } REMINTERFACEREF;
  29. [
  30. object,
  31. uuid(00000131-0000-0000-C000-000000000046)
  32. ]
  33. interface IRemUnknown : IUnknown
  34. {
  35. HRESULT RemQueryInterface
  36. (
  37. [in] REFIPID ripid,
  38. [in] unsigned long cRefs,
  39. [in] unsigned short cIids,
  40. [in, size_is(cIids)] IID *iids,
  41. [out, size_is(,cIids)] REMQIRESULT **ppQIResults
  42. );
  43. HRESULT RemAddRef
  44. (
  45. [in] unsigned short cInterfaceRefs,
  46. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
  47. [out, size_is(cInterfaceRefs)] HRESULT *pResults
  48. );
  49. HRESULT RemRelease
  50. (
  51. [in] unsigned short cInterfaceRefs,
  52. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  53. );
  54. }
  55. [
  56. object,
  57. uuid(000e0131-0000-0000-C000-000000000046),
  58. local
  59. ]
  60. interface AsyncIRemUnknown : IUnknown
  61. {
  62. HRESULT Begin_RemQueryInterface
  63. (
  64. [in] REFIPID ripid,
  65. [in] unsigned long cRefs,
  66. [in] unsigned short cIids,
  67. [in] IID *iids
  68. );
  69. HRESULT Finish_RemQueryInterface
  70. (
  71. [out] REMQIRESULT **ppQIResults
  72. );
  73. HRESULT Begin_RemAddRef
  74. (
  75. [in] unsigned short cInterfaceRefs,
  76. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  77. );
  78. HRESULT Finish_RemAddRef
  79. (
  80. [out] HRESULT *pResults
  81. );
  82. HRESULT Begin_RemRelease
  83. (
  84. [in] unsigned short cInterfaceRefs,
  85. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  86. );
  87. HRESULT Finish_RemRelease();
  88. };
  89. [
  90. object,
  91. uuid(000e0143-0000-0000-C000-000000000046),
  92. local
  93. ]
  94. interface AsyncIRemUnknown2 : IUnknown
  95. {
  96. HRESULT Begin_RemQueryInterface
  97. (
  98. [in] REFIPID ripid,
  99. [in] unsigned long cRefs,
  100. [in] unsigned short cIids,
  101. [in] IID *iids
  102. );
  103. HRESULT Finish_RemQueryInterface
  104. (
  105. [out] REMQIRESULT **ppQIResults
  106. );
  107. HRESULT Begin_RemAddRef
  108. (
  109. [in] unsigned short cInterfaceRefs,
  110. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  111. );
  112. HRESULT Finish_RemAddRef
  113. (
  114. [out] HRESULT *pResults
  115. );
  116. HRESULT Begin_RemRelease
  117. (
  118. [in] unsigned short cInterfaceRefs,
  119. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  120. );
  121. HRESULT Finish_RemRelease();
  122. HRESULT Begin_RemQueryInterface2
  123. (
  124. [in] REFIPID ripid,
  125. [in] unsigned short cIids,
  126. [in, size_is(cIids)] IID *iids
  127. );
  128. HRESULT Finish_RemQueryInterface2(
  129. [out] HRESULT *phr,
  130. [out] MInterfacePointer **ppMIF
  131. );
  132. };
  133. [
  134. object,
  135. uuid(00000143-0000-0000-C000-000000000046),
  136. ]
  137. //+-------------------------------------------------------------------------
  138. //
  139. // IRemUnknown2
  140. //
  141. // Derived from IRemUnknown, this interface supports Remote Query interface
  142. // for objects that supply additional data beyond the STDOBJREF in their
  143. // marshaled interface packets.
  144. //
  145. // The ppMIF that is returned contains an array of marshaled interface
  146. // pointers, without the headers that CoMarshalInterface adds.
  147. //
  148. //+-------------------------------------------------------------------------
  149. interface IRemUnknown2 : IRemUnknown
  150. {
  151. #ifndef DO_NO_IMPORTS
  152. import "unknwn.idl";
  153. import "obase.idl";
  154. #endif
  155. HRESULT RemQueryInterface2
  156. (
  157. [in] REFIPID ripid,
  158. [in] unsigned short cIids,
  159. [in, size_is(cIids)] IID *iids,
  160. [out, size_is(cIids)] HRESULT *phr,
  161. [out, size_is(cIids)] MInterfacePointer **ppMIF
  162. );
  163. }
  164. //+-------------------------------------------------------------------------
  165. //
  166. // The IRemoteQI interface. This interface exists on every static
  167. // object. It is used by clients to query for new and non-statically
  168. // published interfaces only. It does not do addref and release like
  169. // IRemUnknown.
  170. //
  171. //+-------------------------------------------------------------------------
  172. [
  173. object,
  174. uuid(00000142-0000-0000-C000-000000000046)
  175. ]
  176. interface IRemoteQI : IUnknown
  177. {
  178. #ifndef DO_NO_IMPORTS
  179. import "unknwn.idl";
  180. import "obase.idl";
  181. #endif
  182. typedef struct tagREMOTEQIRESULT
  183. {
  184. HRESULT hResult;
  185. IPID ipid;
  186. } REMOTEQIRESULT;
  187. HRESULT RemoteQI
  188. (
  189. [in] unsigned short cIids,
  190. [in, size_is(cIids)] IID *iids,
  191. [out, size_is(,cIids)] REMOTEQIRESULT **ppQIResults
  192. );
  193. }