Leaked source code of windows server 2003
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.

132 lines
3.6 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. async_uuid(000e0131-0000-0000-C000-000000000046)
  33. ]
  34. interface IRemUnknown : IUnknown
  35. {
  36. HRESULT RemQueryInterface
  37. (
  38. [in] REFIPID ripid,
  39. [in] unsigned long cRefs,
  40. [in] unsigned short cIids,
  41. [in, size_is(cIids)] IID *iids,
  42. [out, size_is(,cIids)] REMQIRESULT **ppQIResults
  43. );
  44. HRESULT RemAddRef
  45. (
  46. [in] unsigned short cInterfaceRefs,
  47. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
  48. [out, size_is(cInterfaceRefs)] HRESULT *pResults
  49. );
  50. HRESULT RemRelease
  51. (
  52. [in] unsigned short cInterfaceRefs,
  53. [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
  54. );
  55. }
  56. [
  57. object,
  58. uuid(00000143-0000-0000-C000-000000000046),
  59. async_uuid(000e0143-0000-0000-C000-000000000046)
  60. ]
  61. //+-------------------------------------------------------------------------
  62. //
  63. // IRemUnknown2
  64. //
  65. // Derived from IRemUnknown, this interface supports Remote Query interface
  66. // for objects that supply additional data beyond the STDOBJREF in their
  67. // marshaled interface packets.
  68. //
  69. // The ppMIF that is returned contains an array of marshaled interface
  70. // pointers, without the headers that CoMarshalInterface adds.
  71. //
  72. //+-------------------------------------------------------------------------
  73. interface IRemUnknown2 : IRemUnknown
  74. {
  75. #ifndef DO_NO_IMPORTS
  76. import "unknwn.idl";
  77. import "obase.idl";
  78. #endif
  79. HRESULT RemQueryInterface2
  80. (
  81. [in] REFIPID ripid,
  82. [in] unsigned short cIids,
  83. [in, size_is(cIids)] IID *iids,
  84. [out, size_is(cIids)] HRESULT *phr,
  85. [out, size_is(cIids)] MInterfacePointer **ppMIF
  86. );
  87. }
  88. //+-------------------------------------------------------------------------
  89. //
  90. // The IRemoteQI interface. This interface exists on every static
  91. // object. It is used by clients to query for new and non-statically
  92. // published interfaces only. It does not do addref and release like
  93. // IRemUnknown.
  94. //
  95. //+-------------------------------------------------------------------------
  96. [
  97. object,
  98. uuid(00000142-0000-0000-C000-000000000046)
  99. ]
  100. interface IRemoteQI : IUnknown
  101. {
  102. #ifndef DO_NO_IMPORTS
  103. import "unknwn.idl";
  104. import "obase.idl";
  105. #endif
  106. typedef struct tagREMOTEQIRESULT
  107. {
  108. HRESULT hResult;
  109. IPID ipid;
  110. } REMOTEQIRESULT;
  111. HRESULT RemoteQI
  112. (
  113. [in] unsigned short cIids,
  114. [in, size_is(cIids)] IID *iids,
  115. [out, size_is(,cIids)] REMOTEQIRESULT **ppQIResults
  116. );
  117. }