widl: Always check the runtimeclass interfaces presence.
[wine/zf.git] / include / objidlbase.idl
blob6449be8417b1929fa146657995efa4b69c880d80
1 /*
2 * Copyright 2002 Ove Kaaven
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 #ifndef DO_NO_IMPORTS
20 import "unknwn.idl";
21 #endif
23 cpp_quote("#ifndef _OBJIDLBASE_")
24 cpp_quote("#define _OBJIDLBASE_")
26 interface IStream;
27 interface IEnumString;
29 interface IAsyncManager;
30 interface ISynchronize;
32 typedef struct _COSERVERINFO {
33 DWORD dwReserved1;
34 LPWSTR pwszName;
35 COAUTHINFO *pAuthInfo;
36 DWORD dwReserved2;
37 } COSERVERINFO;
39 /******************** Fundamentals ********************/
42 local,
43 object,
44 uuid(00000003-0000-0000-C000-000000000046)
46 interface IMarshal : IUnknown
48 typedef [unique] IMarshal *LPMARSHAL;
50 HRESULT GetUnmarshalClass(
51 [in] REFIID riid,
52 [in, unique] void *pv,
53 [in] DWORD dwDestContext,
54 [in, unique] void *pvDestContext,
55 [in] DWORD mshlflags,
56 [out] CLSID *pCid);
58 HRESULT GetMarshalSizeMax(
59 [in] REFIID riid,
60 [in, unique] void *pv,
61 [in] DWORD dwDestContext,
62 [in, unique] void *pvDestContext,
63 [in] DWORD mshlflags,
64 [out] DWORD *pSize);
66 HRESULT MarshalInterface(
67 [in, unique] IStream *pStm,
68 [in] REFIID riid,
69 [in, unique] void *pv,
70 [in] DWORD dwDestContext,
71 [in, unique] void *pvDestContext,
72 [in] DWORD mshlflags);
74 HRESULT UnmarshalInterface(
75 [in, unique] IStream *pStm,
76 [in] REFIID riid,
77 [out] void **ppv);
79 HRESULT ReleaseMarshalData(
80 [in, unique] IStream *pStm);
82 HRESULT DisconnectObject(
83 [in] DWORD dwReserved);
87 local,
88 object,
89 uuid(94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90)
91 interface IAgileObject : IUnknown
96 local,
97 object,
98 uuid(000001cf-0000-0000-C000-000000000046)
100 interface IMarshal2 : IMarshal
102 typedef [unique] IMarshal2 *LPMARSHAL2;
106 local,
107 object,
108 uuid(00000018-0000-0000-C000-000000000046)
110 interface IStdMarshalInfo : IUnknown
112 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
114 HRESULT GetClassForHandler(
115 [in] DWORD dwDestContext,
116 [in, unique] void *pvDestContext,
117 [out] CLSID *pClsid);
121 local,
122 object,
123 uuid(00000019-0000-0000-C000-000000000046)
125 interface IExternalConnection : IUnknown
127 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
129 typedef enum tagEXTCONN {
130 EXTCONN_STRONG = 0x0001,
131 EXTCONN_WEAK = 0x0002,
132 EXTCONN_CALLABLE = 0x0004
133 } EXTCONN;
135 DWORD AddConnection(
136 [in] DWORD extconn,
137 [in] DWORD reserved);
139 DWORD ReleaseConnection(
140 [in] DWORD extconn,
141 [in] DWORD reserved,
142 [in] BOOL fLastReleaseCloses);
146 local,
147 object,
148 uuid(00000020-0000-0000-C000-000000000046)
150 interface IMultiQI : IUnknown
152 typedef [unique] IMultiQI *LPMULTIQI;
154 typedef struct tagMULTI_QI {
155 const IID *pIID;
156 IUnknown *pItf;
157 HRESULT hr;
158 } MULTI_QI;
160 HRESULT QueryMultipleInterfaces(
161 [in] ULONG cMQIs,
162 [in, out] MULTI_QI *pMQIs);
166 local,
167 object,
168 uuid(00000002-0000-0000-C000-000000000046)
170 interface IMalloc : IUnknown
172 typedef [unique] IMalloc *LPMALLOC;
174 LPVOID Alloc(
175 [in] SIZE_T cb);
177 LPVOID Realloc(
178 [in] LPVOID pv,
179 [in] SIZE_T cb);
181 void Free(
182 [in] LPVOID pv);
184 SIZE_T GetSize(
185 [in] LPVOID pv);
187 int DidAlloc(LPVOID pv);
189 void HeapMinimize();
193 local,
194 object,
195 uuid(00000021-0000-0000-C000-000000000046)
197 interface IInternalUnknown : IUnknown
199 HRESULT QueryInternalInterface(
200 [in] REFIID riid,
201 [out] void **ppv);
205 object,
206 uuid(00000100-0000-0000-C000-000000000046),
207 pointer_default(unique)
209 interface IEnumUnknown : IUnknown
211 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
213 [local]
214 HRESULT Next(
215 [in] ULONG celt,
216 [out] IUnknown **rgelt,
217 [out] ULONG *pceltFetched);
219 [call_as(Next)]
220 HRESULT RemoteNext(
221 [in] ULONG celt,
222 [out, size_is(celt), length_is(*pceltFetched)]
223 IUnknown **rgelt,
224 [out] ULONG *pceltFetched);
226 HRESULT Skip(
227 [in] ULONG celt);
229 HRESULT Reset();
231 HRESULT Clone(
232 [out] IEnumUnknown **ppenum);
236 object,
237 uuid(00000022-0000-0000-C000-000000000046),
238 version(1.0),
239 pointer_default(unique)
241 interface ISurrogate : IUnknown
243 typedef [unique] ISurrogate *LPSURROGATE;
245 HRESULT LoadDllServer(
246 [in] REFCLSID Clsid);
247 HRESULT FreeSurrogate();
251 local,
252 object,
253 uuid(00000146-0000-0000-C000-000000000046)
255 interface IGlobalInterfaceTable : IUnknown
257 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
259 HRESULT RegisterInterfaceInGlobal(
260 [in] IUnknown *pUnk,
261 [in] REFIID riid,
262 [out] DWORD *pdwCookie);
264 HRESULT RevokeInterfaceFromGlobal(
265 [in] DWORD dwCookie);
267 HRESULT GetInterfaceFromGlobal(
268 [in] DWORD dwCookie,
269 [in] REFIID riid,
270 [out, iid_is(riid)] void **ppv);
274 object,
275 uuid(00000101-0000-0000-C000-000000000046),
276 pointer_default(unique)
278 interface IEnumString : IUnknown
280 typedef [unique] IEnumString *LPENUMSTRING;
282 [local]
283 HRESULT Next(
284 [in] ULONG celt,
285 [out, size_is(celt), length_is(*pceltFetched)]
286 LPOLESTR *rgelt,
287 [out] ULONG *pceltFetched);
289 [call_as(Next)]
290 HRESULT RemoteNext(
291 [in] ULONG celt,
292 [out, size_is(celt), length_is(*pceltFetched)]
293 LPOLESTR *rgelt,
294 [out] ULONG *pceltFetched);
296 HRESULT Skip(
297 [in] ULONG celt);
299 HRESULT Reset();
301 HRESULT Clone(
302 [out] IEnumString **ppenum);
305 /******************** Storage ********************/
308 object,
309 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
310 pointer_default(unique)
312 interface ISequentialStream : IUnknown
314 [local]
315 HRESULT Read(
316 [out, size_is(cb), length_is(*pcbRead)]
317 void *pv,
318 [in] ULONG cb,
319 [out] ULONG *pcbRead);
321 [call_as(Read)]
322 HRESULT RemoteRead(
323 [out, size_is(cb), length_is(*pcbRead)]
324 byte *pv,
325 [in] ULONG cb,
326 [out] ULONG *pcbRead);
328 [local]
329 HRESULT Write(
330 [in, size_is(cb)] const void *pv,
331 [in] ULONG cb,
332 [out] ULONG *pcbWritten);
334 [call_as(Write)]
335 HRESULT RemoteWrite(
336 [in, size_is(cb)] const byte *pv,
337 [in] ULONG cb,
338 [out] ULONG *pcbWritten);
342 object,
343 uuid(0000000c-0000-0000-C000-000000000046),
344 pointer_default(unique)
346 interface IStream : ISequentialStream
348 typedef [unique] IStream *LPSTREAM;
350 typedef struct tagSTATSTG {
351 LPOLESTR pwcsName;
352 DWORD type;
353 ULARGE_INTEGER cbSize;
354 FILETIME mtime;
355 FILETIME ctime;
356 FILETIME atime;
357 DWORD grfMode;
358 DWORD grfLocksSupported;
359 CLSID clsid;
360 DWORD grfStateBits;
361 DWORD reserved;
362 } STATSTG;
364 typedef enum tagSTGTY {
365 STGTY_STORAGE = 1,
366 STGTY_STREAM = 2,
367 STGTY_LOCKBYTES = 3,
368 STGTY_PROPERTY = 4
369 } STGTY;
371 typedef enum tagSTREAM_SEEK {
372 STREAM_SEEK_SET = 0,
373 STREAM_SEEK_CUR = 1,
374 STREAM_SEEK_END = 2
375 } STREAM_SEEK;
377 /* these are defined in Linux's fcntl.h,
378 * undefine them to avoid conflicts */
379 cpp_quote("#undef LOCK_MAND")
380 cpp_quote("#undef LOCK_READ")
381 cpp_quote("#undef LOCK_WRITE")
382 cpp_quote("#undef LOCK_RW")
384 typedef enum tagLOCKTYPE {
385 LOCK_WRITE = 1,
386 LOCK_EXCLUSIVE = 2,
387 LOCK_ONLYONCE = 4
388 } LOCKTYPE;
390 [local]
391 HRESULT Seek(
392 [in] LARGE_INTEGER dlibMove,
393 [in] DWORD dwOrigin,
394 [out] ULARGE_INTEGER *plibNewPosition);
396 [call_as(Seek)]
397 HRESULT RemoteSeek(
398 [in] LARGE_INTEGER dlibMove,
399 [in] DWORD dwOrigin,
400 [out] ULARGE_INTEGER *plibNewPosition);
402 HRESULT SetSize(
403 [in] ULARGE_INTEGER libNewSize);
405 [local]
406 HRESULT CopyTo(
407 [in, unique] IStream *pstm,
408 [in] ULARGE_INTEGER cb,
409 [out] ULARGE_INTEGER *pcbRead,
410 [out] ULARGE_INTEGER *pcbWritten);
412 [call_as(CopyTo)]
413 HRESULT RemoteCopyTo(
414 [in, unique] IStream *pstm,
415 [in] ULARGE_INTEGER cb,
416 [out] ULARGE_INTEGER *pcbRead,
417 [out] ULARGE_INTEGER *pcbWritten);
419 HRESULT Commit(
420 [in] DWORD grfCommitFlags);
422 HRESULT Revert();
424 HRESULT LockRegion(
425 [in] ULARGE_INTEGER libOffset,
426 [in] ULARGE_INTEGER cb,
427 [in] DWORD dwLockType);
429 HRESULT UnlockRegion(
430 [in] ULARGE_INTEGER libOffset,
431 [in] ULARGE_INTEGER cb,
432 [in] DWORD dwLockType);
434 HRESULT Stat(
435 [out] STATSTG *pstatstg,
436 [in] DWORD grfStatFlag);
438 HRESULT Clone(
439 [out] IStream **ppstm);
446 local,
447 object,
448 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
450 interface IRpcChannelBuffer : IUnknown
452 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
454 typedef unsigned long RPCOLEDATAREP;
456 typedef struct tagRPCOLEMESSAGE {
457 void *reserved1;
458 RPCOLEDATAREP dataRepresentation;
459 void *Buffer;
460 ULONG cbBuffer;
461 ULONG iMethod;
462 void *reserved2[5];
463 ULONG rpcFlags;
464 } RPCOLEMESSAGE;
466 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
468 HRESULT GetBuffer(
469 [in] RPCOLEMESSAGE *pMessage,
470 [in] REFIID riid);
472 HRESULT SendReceive(
473 [in,out] RPCOLEMESSAGE *pMessage,
474 [out] ULONG *pStatus);
476 HRESULT FreeBuffer(
477 [in] RPCOLEMESSAGE *pMessage);
479 HRESULT GetDestCtx(
480 [out] DWORD *pdwDestContext,
481 [out] void **ppvDestContext);
483 HRESULT IsConnected();
487 local,
488 object,
489 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
491 interface IRpcChannelBuffer2 : IRpcChannelBuffer
493 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
495 HRESULT GetProtocolVersion(
496 [in,out] DWORD *pdwVersion);
500 local,
501 object,
502 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
504 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
506 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
508 HRESULT Send(
509 [in,out] RPCOLEMESSAGE *pMsg,
510 [out] ULONG *pulStatus);
512 HRESULT Receive(
513 [in,out] RPCOLEMESSAGE *pMsg,
514 [in] ULONG ulSize,
515 [out] ULONG *pulStatus);
517 HRESULT Cancel(
518 [in] RPCOLEMESSAGE *pMsg);
520 HRESULT GetCallContext(
521 [in] RPCOLEMESSAGE *pMsg,
522 [in] REFIID riid,
523 [out] void **pInterface);
525 HRESULT GetDestCtxEx(
526 [in] RPCOLEMESSAGE *pMsg,
527 [out] DWORD *pdwDestContext,
528 [out] void **ppvDestContext);
530 HRESULT GetState(
531 [in] RPCOLEMESSAGE *pMsg,
532 [out] DWORD *pState);
534 HRESULT RegisterAsync(
535 [in] RPCOLEMESSAGE *pMsg,
536 [in] IAsyncManager *pAsyncMgr);
540 local,
541 object,
542 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
543 pointer_default(unique)
545 interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
547 HRESULT Send(
548 [in, out] RPCOLEMESSAGE *pMsg,
549 [in] ISynchronize *pSync,
550 [out] ULONG *pulStatus);
552 HRESULT Receive(
553 [in, out] RPCOLEMESSAGE *pMsg,
554 [out] ULONG *pulStatus);
556 HRESULT GetDestCtxEx(
557 [in] RPCOLEMESSAGE *pMsg,
558 [out] DWORD *pdwDestContext,
559 [out] void **ppvDestContext);
563 local,
564 object,
565 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
567 interface IRpcSyntaxNegotiate : IUnknown
569 HRESULT NegotiateSyntax(
570 [in, out] RPCOLEMESSAGE *pMsg);
574 local,
575 object,
576 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
578 interface IRpcProxyBuffer : IUnknown
580 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
582 HRESULT Connect(
583 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
585 void Disconnect();
589 local,
590 object,
591 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
593 interface IRpcStubBuffer : IUnknown
595 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
597 HRESULT Connect(
598 [in] IUnknown *pUnkServer);
600 void Disconnect();
602 HRESULT Invoke(
603 [in] RPCOLEMESSAGE *_prpcmsg,
604 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
606 IRpcStubBuffer *IsIIDSupported(
607 [in] REFIID riid);
609 ULONG CountRefs();
611 HRESULT DebugServerQueryInterface(
612 void **ppv);
614 void DebugServerRelease(
615 void *pv);
619 local,
620 object,
621 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
623 interface IPSFactoryBuffer : IUnknown
625 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
627 HRESULT CreateProxy(
628 [in] IUnknown *pUnkOuter,
629 [in] REFIID riid,
630 [out] IRpcProxyBuffer **ppProxy,
631 [out] void **ppv);
633 HRESULT CreateStub(
634 [in] REFIID riid,
635 [in, unique] IUnknown *pUnkServer,
636 [out] IRpcStubBuffer **ppStub);
640 local,
641 object,
642 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
644 interface IChannelHook : IUnknown
646 typedef [unique] IChannelHook *LPCHANNELHOOK;
648 typedef struct SChannelHookCallInfo {
649 IID iid;
650 DWORD cbSize;
651 GUID uCausality;
652 DWORD dwServerPid;
653 DWORD iMethod;
654 void *pObject;
655 } SChannelHookCallInfo;
657 void ClientGetSize(
658 [in] REFGUID uExtent,
659 [in] REFIID riid,
660 [out] ULONG *pDataSize);
662 void ClientFillBuffer(
663 [in] REFGUID uExtent,
664 [in] REFIID riid,
665 [in, out] ULONG *pDataSize,
666 [in] void *pDataBuffer);
668 void ClientNotify(
669 [in] REFGUID uExtent,
670 [in] REFIID riid,
671 [in] ULONG cbDataSize,
672 [in] void *pDataBuffer,
673 [in] DWORD lDataRep,
674 [in] HRESULT hrFault);
676 void ServerNotify(
677 [in] REFGUID uExtent,
678 [in] REFIID riid,
679 [in] ULONG cbDataSize,
680 [in] void *pDataBuffer,
681 [in] DWORD lDataRep);
683 void ServerGetSize(
684 [in] REFGUID uExtent,
685 [in] REFIID riid,
686 [in] HRESULT hrFault,
687 [out] ULONG *pDataSize);
689 void ServerFillBuffer(
690 [in] REFGUID uExtent,
691 [in] REFIID riid,
692 [in, out] ULONG *pDataSize,
693 [in] void *pDataBuffer,
694 [in] HRESULT hrFault );
697 extern const FMTID FMTID_SummaryInformation;
698 extern const FMTID FMTID_DocSummaryInformation;
699 extern const FMTID FMTID_UserDefinedProperties;
702 /******************** Connection Points ********************/
703 /* FIXME */
705 /******************** DCOM ********************/
708 local,
709 object,
710 uuid(0000013D-0000-0000-C000-000000000046)
712 interface IClientSecurity : IUnknown
714 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
715 DWORD dwAuthnSvc;
716 DWORD dwAuthzSvc;
717 OLECHAR *pPrincipalName;
718 HRESULT hr;
719 } SOLE_AUTHENTICATION_SERVICE;
721 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
723 typedef struct tagSOLE_AUTHENTICATION_INFO {
724 DWORD dwAuthnSvc;
725 DWORD dwAuthzSvc;
726 void *pAuthInfo;
727 } SOLE_AUTHENTICATION_INFO;
729 const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
730 const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
732 typedef struct tagSOLE_AUTHENTICATION_LIST {
733 DWORD cAuthInfo;
734 SOLE_AUTHENTICATION_INFO *aAuthInfo;
735 } SOLE_AUTHENTICATION_LIST;
737 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
738 EOAC_NONE = 0x0,
739 EOAC_MUTUAL_AUTH = 0x1,
740 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
741 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
742 EOAC_APPID = 0x8, /* CoInitializeSecurity only */
743 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
744 EOAC_STATIC_CLOAKING = 0x20,
745 EOAC_DYNAMIC_CLOAKING = 0x40,
746 EOAC_ANY_AUTHORITY = 0x80,
747 EOAC_MAKE_FULLSIC = 0x100,
748 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
749 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
750 EOAC_DEFAULT = 0x800,
751 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
752 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
753 } EOLE_AUTHENTICATION_CAPABILITIES;
755 HRESULT QueryBlanket(
756 [in] IUnknown *pProxy,
757 [out] DWORD *pAuthnSvc,
758 [out] DWORD *pAuthzSvc,
759 [out] OLECHAR **pServerPrincName,
760 [out] DWORD *pAuthnLevel,
761 [out] DWORD *pImpLevel,
762 [out] void **pAuthInfo,
763 [out] DWORD *pCapabilities);
765 HRESULT SetBlanket(
766 [in] IUnknown *pProxy,
767 [in] DWORD AuthnSvc,
768 [in] DWORD AuthzSvc,
769 [in] OLECHAR *pServerPrincName,
770 [in] DWORD AuthnLevel,
771 [in] DWORD ImpLevel,
772 [in] void *pAuthInfo,
773 [in] DWORD Capabilities);
775 HRESULT CopyProxy(
776 [in] IUnknown *pProxy,
777 [out] IUnknown **ppCopy);
781 local,
782 object,
783 uuid(0000013E-0000-0000-C000-000000000046)
785 interface IServerSecurity : IUnknown
787 HRESULT QueryBlanket(
788 [out] DWORD *pAuthnSvc,
789 [out] DWORD *pAuthzSvc,
790 [out] OLECHAR **pServerPrincName,
791 [out] DWORD *pAuthnLevel,
792 [out] DWORD *pImpLevel,
793 [out] void **pPrivs,
794 [out] DWORD *pCapabilities);
796 HRESULT ImpersonateClient();
798 HRESULT RevertToSelf();
800 BOOL IsImpersonating();
804 local,
805 object,
806 uuid(00000024-0000-0000-C000-000000000046)
808 interface IAsyncSetup : IUnknown
810 HRESULT GetAsyncManager(
811 [in] REFIID riid,
812 [in] IUnknown *pOuter,
813 [in] DWORD dwFlags,
814 [out] IUnknown **ppInner,
815 [out] IAsyncManager **ppAsyncMgr);
819 object,
820 uuid(00000030-0000-0000-C000-000000000046)
823 interface ISynchronize : IUnknown
825 HRESULT Wait(
826 [in] DWORD dwFlags,
827 [in] DWORD dwMilliseconds);
829 HRESULT Signal();
831 HRESULT Reset();
836 local,
837 object,
838 uuid(00000031-0000-0000-C000-000000000046)
840 interface ISynchronizeHandle : IUnknown
842 HRESULT GetHandle(
843 [out] HANDLE *ph);
848 local,
849 object,
850 uuid(00000032-0000-0000-C000-000000000046)
852 interface ISynchronizeEvent : ISynchronizeHandle
854 HRESULT SetEventHandle(
855 [in] HANDLE *ph);
860 local,
861 object,
862 uuid(00000033-0000-0000-C000-000000000046)
864 interface ISynchronizeContainer : IUnknown
866 HRESULT AddSynchronize(
867 [in] ISynchronize *pSync);
869 HRESULT WaitMultiple(
870 [in] DWORD dwFlags,
871 [in] DWORD dwTimeOut,
872 [out] ISynchronize **ppSync);
876 local,
877 object,
878 uuid(00000025-0000-0000-C000-000000000046)
880 interface ISynchronizeMutex : ISynchronize
882 HRESULT ReleaseMutex();
886 local,
887 object,
888 uuid(00000029-0000-0000-C000-000000000046)
891 interface ICancelMethodCalls : IUnknown
893 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
895 HRESULT Cancel(
896 [in] ULONG ulSeconds);
898 HRESULT TestCancel();
902 local,
903 object,
904 uuid(0000002A-0000-0000-C000-000000000046)
906 interface IAsyncManager : IUnknown
908 typedef enum tagDCOM_CALL_STATE {
909 DCOM_NONE = 0,
910 DCOM_CALL_COMPLETE = 1,
911 DCOM_CALL_CANCELED = 2
912 } DCOM_CALL_STATE;
914 HRESULT CompleteCall(
915 [in] HRESULT Result);
917 HRESULT GetCallContext(
918 [in] REFIID riid,
919 [out] void **pInterface);
921 HRESULT GetState(
922 [out] ULONG *pulStateFlags);
926 local,
927 object,
928 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
929 pointer_default(unique)
931 interface ICallFactory : IUnknown
933 HRESULT CreateCall(
934 [in] REFIID riid,
935 [in] IUnknown *pCtrlUnk,
936 [in] REFIID riid2,
937 [out, iid_is(riid2)] IUnknown **ppv);
941 local,
942 object,
943 uuid(00000144-0000-0000-C000-000000000046)
945 interface IRpcOptions : IUnknown
947 HRESULT Set(
948 [in] IUnknown *pPrx,
949 [in] DWORD dwProperty,
950 [in] ULONG_PTR dwValue);
952 HRESULT Query(
953 [in] IUnknown *pPrx,
954 [in] DWORD dwProperty,
955 [out] ULONG_PTR *pdwValue);
958 enum {
959 COMBND_RPCTIMEOUT = 1,
960 COMBND_SERVER_LOCALITY = 2
963 enum {
964 SERVER_LOCALITY_PROCESS_LOCAL = 0,
965 SERVER_LOCALITY_MACHINE_LOCAL = 1,
966 SERVER_LOCALITY_REMOTE = 2
970 local,
971 object,
972 uuid(00000149-0000-0000-C000-000000000046),
973 pointer_default(unique)
975 interface IRpcHelper : IUnknown
977 HRESULT GetDCOMProtocolVersion(
978 [out] DWORD *pComVersion);
980 HRESULT GetIIDFromOBJREF(
981 [in] void *pObjRef,
982 [out] IID **piid);
986 local,
987 object,
988 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
990 interface IReleaseMarshalBuffers : IUnknown
992 HRESULT ReleaseMarshalBuffer(
993 [in] RPCOLEMESSAGE *pMsg,
994 [in] DWORD dwFlags,
995 [in, unique] IUnknown *pChnl);
999 local,
1000 object,
1001 uuid(0000002B-0000-0000-C000-000000000046)
1003 interface IWaitMultiple : IUnknown
1005 HRESULT WaitMultiple(
1006 [in] DWORD timeout,
1007 [out] ISynchronize **pSync);
1008 HRESULT AddSynchronize(
1009 [in] ISynchronize *pSync);
1014 local,
1015 object,
1016 uuid(00000147-0000-0000-C000-000000000046)
1018 interface IAddrTrackingControl : IUnknown
1020 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
1022 HRESULT EnableCOMDynamicAddrTracking();
1023 HRESULT DisableCOMDynamicAddrTracking();
1027 local,
1028 object,
1029 uuid(00000148-0000-0000-C000-000000000046)
1031 interface IAddrExclusionControl : IUnknown
1033 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
1035 HRESULT GetCurrentAddrExclusionList(
1036 [in] REFIID riid,
1037 [out, iid_is(riid)] void **ppEnumerator);
1038 HRESULT UpdateAddrExclusionList(
1039 [in] IUnknown *pEnumerator);
1042 typedef enum _APTTYPE {
1043 APTTYPE_CURRENT = -1,
1044 APTTYPE_STA = 0,
1045 APTTYPE_MTA = 1,
1046 APTTYPE_NA = 2,
1047 APTTYPE_MAINSTA = 3
1048 } APTTYPE;
1050 typedef enum _APTTYPEQUALIFIER {
1051 APTTYPEQUALIFIER_NONE,
1052 APTTYPEQUALIFIER_IMPLICIT_MTA,
1053 APTTYPEQUALIFIER_NA_ON_MTA,
1054 APTTYPEQUALIFIER_NA_ON_STA,
1055 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA,
1056 APTTYPEQUALIFIER_NA_ON_MAINSTA
1057 } APTTYPEQUALIFIER;
1059 typedef enum _THDTYPE {
1060 THDTYPE_BLOCKMESSAGES = 0,
1061 THDTYPE_PROCESSMESSAGES = 1
1062 } THDTYPE;
1065 local,
1066 object,
1067 uuid(000001ce-0000-0000-C000-000000000046),
1068 pointer_default(unique)
1070 interface IComThreadingInfo : IUnknown
1072 HRESULT GetCurrentApartmentType(
1073 [out] APTTYPE *pAptType);
1074 HRESULT GetCurrentThreadType(
1075 [out] THDTYPE *pThreadType);
1076 HRESULT GetCurrentLogicalThreadId(
1077 [out] GUID *pguidLogicalThreadId);
1078 HRESULT SetCurrentLogicalThreadId(
1079 [in] REFGUID rguid);
1084 object,
1085 pointer_default(unique),
1086 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
1088 interface IProcessInitControl : IUnknown
1090 HRESULT ResetInitializerTimeout(
1091 [in] DWORD dwSecondsRemaining);
1094 typedef enum tagGLOBALOPT_PROPERTIES
1096 COMGLB_EXCEPTION_HANDLING = 1,
1097 COMGLB_APPID = 2,
1098 COMGLB_RPC_THREADPOOL_SETTING = 3
1099 } GLOBALOPT_PROPERTIES;
1101 typedef enum tagGLOBALOPT_EH_VALUES
1103 COMGLB_EXCEPTION_HANDLE = 0,
1104 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
1105 COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
1106 COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
1107 } GLOBALOPT_EH_VALUES;
1109 typedef enum tagGLOBALOPT_RPCTP_VALUES
1111 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
1112 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
1113 } GLOBALOPT_RPCTP_VALUES;
1117 object,
1118 local,
1119 pointer_default(unique),
1120 uuid(0000015B-0000-0000-C000-000000000046)
1122 interface IGlobalOptions : IUnknown
1124 HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
1125 HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
1128 cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
1130 typedef DWORD CPFLAGS;
1132 typedef struct tagContextProperty
1134 GUID policyId;
1135 CPFLAGS flags;
1136 [unique] IUnknown *pUnk;
1137 } ContextProperty;
1140 local,
1141 object,
1142 uuid(000001c1-0000-0000-C000-000000000046)
1144 interface IEnumContextProps : IUnknown
1146 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
1148 HRESULT Next(
1149 [in] ULONG celt,
1150 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
1151 [out] ULONG *pceltFetched);
1153 HRESULT Skip(
1154 [in] ULONG celt);
1156 HRESULT Reset();
1158 HRESULT Clone(
1159 [out] IEnumContextProps **ppEnumContextProps);
1161 HRESULT Count(
1162 [out] ULONG *pcelt);
1166 local,
1167 object,
1168 uuid(000001c0-0000-0000-C000-000000000046)
1170 interface IContext : IUnknown
1172 HRESULT SetProperty(
1173 [in] REFGUID policyId,
1174 [in] CPFLAGS flags,
1175 [in] IUnknown *pUnk);
1177 HRESULT RemoveProperty(
1178 [in] REFGUID policyId);
1180 HRESULT GetProperty(
1181 [in] REFGUID guid,
1182 [out] CPFLAGS *pFlags,
1183 [out] IUnknown **ppUnk);
1185 HRESULT EnumContextProps(
1186 [out] IEnumContextProps **ppEnumContextProps);
1190 local,
1191 object,
1192 uuid(000001c6-0000-0000-c000-000000000046),
1193 pointer_default(unique)
1195 interface IObjContext : IContext
1197 void Reserved1();
1198 void Reserved2();
1199 void Reserved3();
1200 void Reserved4();
1201 void Reserved5();
1202 void Reserved6();
1203 void Reserved7();
1206 cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")
1207 cpp_quote("#endif /* defined _OBJIDLBASE_ */")