2 * Copyright 2003 Ove Kåven, TransGaming Technologies
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 /* see the official DCOM specification
20 * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */
23 #pragma makedep register
29 uuid(00000320-0000-0000-c000
-000000000046)
31 coclass PSFactoryBuffer
{ interface IFactoryBuffer
; }
34 uuid(99fcfe60
-5260-101b
-bbcb
-00aa0021347a
),
35 pointer_default(unique)
37 interface ObjectRpcBaseTypes
39 typedef unsigned hyper ID;
46 typedef REFGUID REFIPID
;
48 const unsigned short COM_MINOR_VERSION_1
= 1;
49 const unsigned short COM_MINOR_VERSION_2
= 2;
51 const unsigned short COM_MAJOR_VERSION
= 5;
52 const unsigned short COM_MINOR_VERSION
= 3;
54 typedef struct tagCOMVERSION
{
55 unsigned short MajorVersion
;
56 unsigned short MinorVersion
;
59 const unsigned long ORPCF_NULL
= 0;
60 const unsigned long ORPCF_LOCAL
= 1;
61 const unsigned long ORPCF_RESERVED1
= 2;
62 const unsigned long ORPCF_RESERVED2
= 4;
63 const unsigned long ORPCF_RESERVED3
= 8;
64 const unsigned long ORPCF_RESERVED4
= 16;
66 typedef struct tagORPC_EXTENT
{
69 [size_is((size
+7)&~
7)] byte data
[];
72 typedef struct tagORPC_EXTENT_ARRAY
{
74 unsigned long reserved
;
75 [size_is((size
+1)&~
1,), unique] ORPC_EXTENT
**extent
;
78 typedef struct tagORPCTHIS
{
81 unsigned long reserved1
;
83 [unique] ORPC_EXTENT_ARRAY
*extensions
;
86 typedef struct tagORPCTHAT
{
88 [unique] ORPC_EXTENT_ARRAY
*extensions
;
91 const unsigned short NCADG_IP_UDP
= 0x08;
92 const unsigned short NCACN_IP_TCP
= 0x07;
93 const unsigned short NCADG_IPX
= 0x0E;
94 const unsigned short NCACN_SPX
= 0x0C;
95 const unsigned short NCACN_NB_NB
= 0x12;
96 const unsigned short NCACN_NB_IPX
= 0x0D;
97 const unsigned short NCACN_DNET_NSP
= 0x04;
98 const unsigned short NCACN_HTTP
= 0x1F;
100 typedef struct tagSTRINGBINDING
{
101 unsigned short wTowerId
;
102 [string] WCHAR aNetworkAddr
[];
105 const unsigned short COM_C_AUTHZ_NONE
= 0xffff;
107 typedef struct tagSECURITYBINDING
{
108 unsigned short wAuthnSvc
;
109 unsigned short wAuthzSvc
;
110 [string] WCHAR aPrincName
[];
113 typedef struct tagDUALSTRINGARRAY
{
114 unsigned short wNumEntries
;
115 unsigned short wSecurityOffset
;
116 [size_is(wNumEntries
)] unsigned short aStringArray
[];
119 typedef struct tagOXID_INFO
{
124 DUALSTRINGARRAY
*psa
;
127 const unsigned long OBJREF_SIGNATURE
= 0x574f454d; /* "MEOW" */
128 const unsigned long OBJREF_STANDARD
= 0x1;
129 const unsigned long OBJREF_HANDLER
= 0x2;
130 const unsigned long OBJREF_CUSTOM
= 0x4;
131 const unsigned long SORF_OXRES1
= 0x1;
132 const unsigned long SORF_OXRES2
= 0x20;
133 const unsigned long SORF_OXRES3
= 0x40;
134 const unsigned long SORF_OXRES4
= 0x80;
135 const unsigned long SORF_OXRES5
= 0x100;
136 const unsigned long SORF_OXRES6
= 0x200;
137 const unsigned long SORF_OXRES7
= 0x400;
138 const unsigned long SORF_OXRES8
= 0x800;
139 const unsigned long SORF_NULL
= 0x0;
140 const unsigned long SORF_NOPING
= 0x1000;
142 typedef struct tagSTDOBJREF
{
144 unsigned long cPublicRefs
;
150 typedef struct tagOBJREF
{
151 unsigned long signature
;
154 [switch_is(flags
)] union {
155 [case(OBJREF_STANDARD
)] struct OR_STANDARD
{
157 DUALSTRINGARRAY saResAddr
;
159 [case(OBJREF_HANDLER
)] struct OR_HANDLER
{
162 DUALSTRINGARRAY saResAddr
;
164 [case(OBJREF_CUSTOM
)] struct OR_CUSTOM
{
166 unsigned long cbExtension
;
168 [size_is(size
), ref] byte *pData
;
173 typedef struct tagMInterfacePointer
{
175 [size_is(ulCntData
)] BYTE abData
[];
178 typedef [unique] MInterfacePointer
*PMInterfacePointer
;
180 } /* interface ObjectRpcBaseTypes */
184 uuid(00000131-0000-0000-C000
-000000000046)
186 interface IRemUnknown
: IUnknown
188 typedef [unique] IRemUnknown
*LPREMUNKNOWN
;
190 typedef struct tagREMQIRESULT
{
195 typedef struct tagREMINTERFACEREF
{
197 unsigned long cPublicRefs
;
198 unsigned long cPrivateRefs
;
201 HRESULT RemQueryInterface
(
204 [in] unsigned short cIids
,
205 [in, size_is(cIids
)] IID
*iids
,
206 [out, size_is(,cIids
)] REMQIRESULT
**ppQIResults
);
209 [in] unsigned short cInterfaceRefs
,
210 [in, size_is(cInterfaceRefs
)] REMINTERFACEREF
* InterfaceRefs
,
211 [out, size_is(cInterfaceRefs
)] HRESULT *pResults
);
214 [in] unsigned short cInterfaceRefs
,
215 [in, size_is(cInterfaceRefs
)] REMINTERFACEREF
* InterfaceRefs
);
220 uuid(00000142-0000-0000-C000
-000000000046)
222 interface IRemUnknown2
: IRemUnknown
224 typedef [unique] IRemUnknown2
*LPREMUNKNOWN2
;
226 HRESULT RemQueryInterface2
(
228 [in] unsigned short cIids
,
229 [in, size_is(cIids
)] IID
*iids
,
230 [out, size_is(cIids
)] HRESULT *phr
,
231 [out, size_is(cIids
)] MInterfacePointer
**ppMIF
);
235 uuid(99fcfec4
-5260-101b
-bbcb
-00aa0021347a
),
236 pointer_default(unique)
238 interface IOXIDResolver
240 [idempotent
] error_status_t ResolveOxid
(
243 [in] unsigned short cRequestedProtseqs
,
244 [in, ref, size_is(cRequestedProtseqs
)] unsigned short arRequestedProtseqs
[],
245 [out, ref] DUALSTRINGARRAY
**ppdsaOxidBindings
,
246 [out, ref] IPID
*pipidRemUnknown
,
247 [out, ref] DWORD
*pAuthnHint
);
249 [idempotent
] error_status_t SimplePing
(
253 [idempotent
] error_status_t ComplexPing
(
255 [in, out] SETID
*pSetId
,
256 [in] unsigned short SequenceNum
,
257 [in] unsigned short cAddToSet
,
258 [in] unsigned short cDelFromSet
,
259 [in, unique, size_is(cAddToSet
)] OID AddToSet
[],
260 [in, unique, size_is(cDelFromSet
)] OID DelFromSet
[],
261 [out] unsigned short *pPingBackoffFactor
);
263 [idempotent
] error_status_t ServerAlive
(
266 [idempotent
] error_status_t ResolveOxid2
(
269 [in] unsigned short cRequestedProtseqs
,
270 [in, ref, size_is(cRequestedProtseqs
)] unsigned short arRequestedProtseqs
[],
271 [out, ref] DUALSTRINGARRAY
**ppdsaOxidBindings
,
272 [out, ref] IPID
*pipidRemUnknown
,
273 [out, ref] DWORD
*pAuthnHint
,
274 [out, ref] COMVERSION
*pComVersion
);
278 uuid(4d9f4ab8
-7d1c
-11cf
-861e-0020af6e7c57
),
279 pointer_default(unique)
281 interface IRemoteActivation
283 const unsigned long MODE_GET_CLASS_OBJECT
= 0xffffffff;
285 HRESULT RemoteActivation
(
287 [in] ORPCTHIS
*ORPCthis
,
288 [out] ORPCTHAT
*ORPCthat
,
290 [in, string, unique] WCHAR
*pwszObjectName
,
291 [in, unique] MInterfacePointer
*pObjectStorage
,
292 [in] DWORD ClientImpLevel
,
294 [in] DWORD Interfaces
,
295 [in, unique, size_is(Interfaces
)] IID
*pIIDs
,
296 [in] unsigned short cRequestedProtseqs
,
297 [in, size_is(cRequestedProtseqs
)] unsigned short RequestedProtseqs
[],
299 [out] DUALSTRINGARRAY
**ppdsaOxidBindings
,
300 [out] IPID
*pipidRemUnknown
,
301 [out] DWORD
*pAuthnHint
,
302 [out] COMVERSION
*pServerVersion
,
304 [out,size_is(Interfaces
)] MInterfacePointer
**ppInterfaceData
,
305 [out,size_is(Interfaces
)] HRESULT *pResults
);