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
24 interface IEnumString;
25 interface IRunningObjectTable;
27 interface IAdviseSink;
28 interface IAsyncManager;
29 interface ISynchronize;
31 typedef struct _COSERVERINFO {
34 COAUTHINFO *pAuthInfo;
38 /******************** Fundamentals ********************/
43 uuid(00000003-0000-0000-C000-000000000046)
45 interface IMarshal : IUnknown
47 typedef [unique] IMarshal *LPMARSHAL;
49 HRESULT GetUnmarshalClass(
51 [in, unique] void *pv,
52 [in] DWORD dwDestContext,
53 [in, unique] void *pvDestContext,
57 HRESULT GetMarshalSizeMax(
59 [in, unique] void *pv,
60 [in] DWORD dwDestContext,
61 [in, unique] void *pvDestContext,
65 HRESULT MarshalInterface(
66 [in, unique] IStream *pStm,
68 [in, unique] void *pv,
69 [in] DWORD dwDestContext,
70 [in, unique] void *pvDestContext,
71 [in] DWORD mshlflags);
73 HRESULT UnmarshalInterface(
74 [in, unique] IStream *pStm,
78 HRESULT ReleaseMarshalData(
79 [in, unique] IStream *pStm);
81 HRESULT DisconnectObject(
82 [in] DWORD dwReserved);
88 uuid(000001cf-0000-0000-C000-000000000046)
90 interface IMarshal2 : IMarshal
92 typedef [unique] IMarshal2 *LPMARSHAL2;
98 uuid(00000018-0000-0000-C000-000000000046)
100 interface IStdMarshalInfo : IUnknown
102 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
104 HRESULT GetClassForHandler(
105 [in] DWORD dwDestContext,
106 [in, unique] void *pvDestContext,
107 [out] CLSID *pClsid);
113 uuid(00000019-0000-0000-C000-000000000046)
115 interface IExternalConnection : IUnknown
117 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
119 typedef enum tagEXTCONN {
120 EXTCONN_STRONG = 0x0001,
121 EXTCONN_WEAK = 0x0002,
122 EXTCONN_CALLABLE = 0x0004
127 [in] DWORD reserved);
129 DWORD ReleaseConnection(
132 [in] BOOL fLastReleaseCloses);
138 uuid(00000020-0000-0000-C000-000000000046)
140 interface IMultiQI : IUnknown
142 typedef [unique] IMultiQI *LPMULTIQI;
144 typedef struct tagMULTI_QI {
150 HRESULT QueryMultipleInterfaces(
152 [in, out] MULTI_QI *pMQIs);
158 uuid(00000002-0000-0000-C000-000000000046)
160 interface IMalloc : IUnknown
162 typedef [unique] IMalloc *LPMALLOC;
177 int DidAlloc(LPVOID pv);
185 uuid(0000001d-0000-0000-C000-000000000046)
187 interface IMallocSpy : IUnknown
189 typedef [unique] IMallocSpy *LPMALLOCSPY;
192 [in] ULONG cbRequest);
195 [in] LPVOID pActual);
198 [in] LPVOID pRequest,
205 [in] LPVOID pRequest,
206 [in] ULONG cbRequest,
207 [out] LPVOID *ppNewRequest,
215 [in] LPVOID pRequest,
223 [in] LPVOID pRequest,
227 [in] LPVOID pRequest,
231 void PreHeapMinimize();
233 void PostHeapMinimize();
239 uuid(00000021-0000-0000-C000-000000000046)
241 interface IInternalUnknown : IUnknown
243 HRESULT QueryInternalInterface(
250 uuid(00000100-0000-0000-C000-000000000046),
251 pointer_default(unique)
253 interface IEnumUnknown : IUnknown
255 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
260 [out] IUnknown **rgelt,
261 [out] ULONG *pceltFetched);
266 [out, size_is(celt), length_is(*pceltFetched)]
268 [out] ULONG *pceltFetched);
276 [out] IEnumUnknown **ppenum);
281 uuid(00000022-0000-0000-C000-000000000046),
283 pointer_default(unique)
285 interface ISurrogate : IUnknown
287 typedef [unique] ISurrogate *LPSURROGATE;
289 HRESULT LoadDllServer(
290 [in] REFCLSID Clsid);
291 HRESULT FreeSurrogate();
297 uuid(00000146-0000-0000-C000-000000000046)
299 interface IGlobalInterfaceTable : IUnknown
301 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
303 HRESULT RegisterInterfaceInGlobal(
306 [out] DWORD *pdwCookie);
308 HRESULT RevokeInterfaceFromGlobal(
309 [in] DWORD dwCookie);
311 HRESULT GetInterfaceFromGlobal(
314 [out, iid_is(riid)] void **ppv);
317 /******************** Monikers ********************/
321 uuid(0000000e-0000-0000-C000-000000000046),
322 pointer_default(unique)
324 interface IBindCtx : IUnknown
326 typedef [unique] IBindCtx *LPBINDCTX;
327 typedef [unique] IBindCtx *LPBC;
329 typedef struct tagBIND_OPTS {
333 DWORD dwTickCountDeadline;
334 } BIND_OPTS, *LPBIND_OPTS;
336 /* FIXME: C++ crap */
337 typedef struct tagBIND_OPTS2 {
341 DWORD dwTickCountDeadline;
343 DWORD dwClassContext;
345 COSERVERINFO *pServerInfo;
346 } BIND_OPTS2, *LPBIND_OPTS2;
348 typedef enum tagBIND_FLAGS {
349 BIND_MAYBOTHERUSER = 1,
350 BIND_JUSTTESTEXISTENCE = 2
353 HRESULT RegisterObjectBound(
354 [in, unique] IUnknown *punk);
356 HRESULT RevokeObjectBound(
357 [in, unique] IUnknown *punk);
359 HRESULT ReleaseBoundObjects();
362 HRESULT SetBindOptions(
363 [in] BIND_OPTS *pbindopts);
365 [call_as(SetBindOptions)]
366 HRESULT RemoteSetBindOptions(
367 [in] BIND_OPTS2 *pbindopts);
370 HRESULT GetBindOptions(
371 [in, out] BIND_OPTS *pbindopts);
373 [call_as(GetBindOptions)]
374 HRESULT RemoteGetBindOptions(
375 [in, out] BIND_OPTS2 *pbindopts);
377 HRESULT GetRunningObjectTable(
378 [out] IRunningObjectTable **pprot);
380 HRESULT RegisterObjectParam(
381 [in] LPOLESTR pszKey,
382 [in, unique] IUnknown *punk);
384 HRESULT GetObjectParam(
385 [in] LPOLESTR pszKey,
386 [out] IUnknown **ppunk);
388 HRESULT EnumObjectParam(
389 [out] IEnumString **ppenum);
391 HRESULT RevokeObjectParam(
392 [in] LPOLESTR pszKey);
397 uuid(00000102-0000-0000-C000-000000000046),
398 pointer_default(unique)
400 interface IEnumMoniker : IUnknown
402 typedef [unique] IEnumMoniker *LPENUMMONIKER;
407 [out, size_is(celt), length_is(*pceltFetched)]
409 [out] ULONG *pceltFetched);
414 [out, size_is(celt), length_is(*pceltFetched)]
416 [out] ULONG *pceltFetched);
424 [out] IEnumMoniker **ppenum);
429 uuid(00000126-0000-0000-C000-000000000046)
431 interface IRunnableObject : IUnknown
433 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
435 HRESULT GetRunningClass(
436 [out] LPCLSID lpClsid);
445 HRESULT RemoteIsRunning();
449 [in] BOOL fLastUnlockCloses);
451 HRESULT SetContainedObject(
452 [in] BOOL fContained);
455 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
456 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
457 * but GetObject is used as a valid method name below, so we have
458 * to undefine it in that case */
459 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
460 cpp_quote("#undef GetObject")
465 uuid(00000010-0000-0000-C000-000000000046)
467 interface IRunningObjectTable : IUnknown
469 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
473 [in, unique] IUnknown *punkObject,
474 [in, unique] IMoniker *pmkObjectName,
475 [out] DWORD *pdwRegister);
478 [in] DWORD dwRegister);
481 [in, unique] IMoniker *pmkObjectName);
484 [in, unique] IMoniker *pmkObjectName,
485 [out] IUnknown **ppunkObject);
487 HRESULT NoteChangeTime(
488 [in] DWORD dwRegister,
489 [in] FILETIME *pfiletime);
491 HRESULT GetTimeOfLastChange(
492 [in, unique] IMoniker *pmkObjectName,
493 [out] FILETIME *pfiletime);
496 [out] IEnumMoniker **ppenumMoniker);
501 uuid(0000010c-0000-0000-C000-000000000046)
503 interface IPersist : IUnknown
505 typedef [unique] IPersist *LPPERSIST;
508 [out] CLSID *pClassID);
513 uuid(00000109-0000-0000-C000-000000000046),
514 pointer_default(unique)
516 interface IPersistStream : IPersist
518 typedef [unique] IPersistStream *LPPERSISTSTREAM;
523 [in, unique] IStream *pStm);
526 [in, unique] IStream *pStm,
527 [in] BOOL fClearDirty);
530 [out] ULARGE_INTEGER *pcbSize);
535 uuid(0000000f-0000-0000-C000-000000000046),
536 pointer_default(unique)
538 interface IMoniker : IPersistStream
540 typedef [unique] IMoniker *LPMONIKER;
542 typedef enum tagMKSYS {
544 MKSYS_GENERICCOMPOSITE = 1,
545 MKSYS_FILEMONIKER = 2,
546 MKSYS_ANTIMONIKER = 3,
547 MKSYS_ITEMMONIKER = 4,
548 MKSYS_POINTERMONIKER = 5,
549 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
550 MKSYS_CLASSMONIKER = 7
553 typedef [v1_enum] enum tagMKREDUCE {
554 MKRREDUCE_ONE = 3 << 16,
555 MKRREDUCE_TOUSER = 2 << 16,
556 MKRREDUCE_THROUGHUSER = 1 << 16,
561 HRESULT BindToObject(
562 [in, unique] IBindCtx *pbc,
563 [in, unique] IMoniker *pmkToLeft,
564 [in] REFIID riidResult,
565 [out, iid_is(riidResult)] void **ppvResult);
567 [call_as(BindToObject)]
568 HRESULT RemoteBindToObject(
569 [in, unique] IBindCtx *pbc,
570 [in, unique] IMoniker *pmkToLeft,
571 [in] REFIID riidResult,
572 [out, iid_is(riidResult)] IUnknown **ppvResult);
575 HRESULT BindToStorage(
576 [in, unique] IBindCtx *pbc,
577 [in, unique] IMoniker *pmkToLeft,
579 [out, iid_is(riid)] void **ppvObj);
581 [call_as(BindToStorage)]
582 HRESULT RemoteBindToStorage(
583 [in, unique] IBindCtx *pbc,
584 [in, unique] IMoniker *pmkToLeft,
586 [out, iid_is(riid)] IUnknown **ppvObj);
589 [in, unique] IBindCtx *pbc,
590 [in] DWORD dwReduceHowFar,
591 [in, out, unique] IMoniker **ppmkToLeft,
592 [out] IMoniker **ppmkReduced);
595 [in, unique] IMoniker *pmkRight,
596 [in] BOOL fOnlyIfNotGeneric,
597 [out] IMoniker **ppmkComposite);
601 [out] IEnumMoniker **ppenumMoniker);
604 [in, unique] IMoniker *pmkOtherMoniker);
607 [out] DWORD *pdwHash);
610 [in, unique] IBindCtx *pbc,
611 [in, unique] IMoniker *pmkToLeft,
612 [in, unique] IMoniker *pmkNewlyRunning);
614 HRESULT GetTimeOfLastChange(
615 [in, unique] IBindCtx *pbc,
616 [in, unique] IMoniker *pmkToLeft,
617 [out] FILETIME *pFileTime);
620 [out] IMoniker **ppmk);
622 HRESULT CommonPrefixWith(
623 [in, unique] IMoniker *pmkOther,
624 [out] IMoniker **ppmkPrefix);
626 HRESULT RelativePathTo(
627 [in, unique] IMoniker *pmkOther,
628 [out] IMoniker **ppmkRelPath);
630 HRESULT GetDisplayName(
631 [in, unique] IBindCtx *pbc,
632 [in, unique] IMoniker *pmkToLeft,
633 [out] LPOLESTR *ppszDisplayName);
635 HRESULT ParseDisplayName(
636 [in, unique] IBindCtx *pbc,
637 [in, unique] IMoniker *pmkToLeft,
638 [in] LPOLESTR pszDisplayName,
639 [out] ULONG *pchEaten,
640 [out] IMoniker **ppmkOut);
642 HRESULT IsSystemMoniker(
643 [out] DWORD *pdwMksys);
648 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
649 pointer_default(unique)
651 interface IROTData : IUnknown
653 HRESULT GetComparisonData(
654 [out, size_is(cbMax)] byte *pbData,
656 [out] ULONG *pcbData);
661 uuid(00000101-0000-0000-C000-000000000046),
662 pointer_default(unique)
664 interface IEnumString : IUnknown
666 typedef [unique] IEnumString *LPENUMSTRING;
671 [out, size_is(celt), length_is(*pceltFetched)]
673 [out] ULONG *pceltFetched);
678 [out, size_is(celt), length_is(*pceltFetched)]
680 [out] ULONG *pceltFetched);
688 [out] IEnumString **ppenum);
693 uuid(00000140-0000-0000-C000-000000000046)
695 interface IClassActivator : IUnknown
697 HRESULT GetClassObject(
698 [in] REFCLSID rclsid,
699 [in] DWORD dwClassContext,
702 [out, iid_is(riid)] void **ppv);
705 /******************** Storage ********************/
709 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
710 pointer_default(unique)
712 interface ISequentialStream : IUnknown
716 [out, size_is(cb), length_is(*pcbRead)]
719 [out] ULONG *pcbRead);
723 [out, size_is(cb), length_is(*pcbRead)]
726 [out] ULONG *pcbRead);
730 [in, size_is(cb)] const void *pv,
732 [out] ULONG *pcbWritten);
736 [in, size_is(cb)] const byte *pv,
738 [out] ULONG *pcbWritten);
743 uuid(0000000c-0000-0000-C000-000000000046),
744 pointer_default(unique)
746 interface IStream : ISequentialStream
748 typedef [unique] IStream *LPSTREAM;
750 typedef struct tagSTATSTG {
753 ULARGE_INTEGER cbSize;
758 DWORD grfLocksSupported;
764 typedef enum tagSTGTY {
771 typedef enum tagSTREAM_SEEK {
777 /* these are defined in Linux's fcntl.h,
778 * undefine them to avoid conflicts */
779 cpp_quote("#undef LOCK_MAND")
780 cpp_quote("#undef LOCK_READ")
781 cpp_quote("#undef LOCK_WRITE")
782 cpp_quote("#undef LOCK_RW")
784 typedef enum tagLOCKTYPE {
792 [in] LARGE_INTEGER dlibMove,
794 [out] ULARGE_INTEGER *plibNewPosition);
798 [in] LARGE_INTEGER dlibMove,
800 [out] ULARGE_INTEGER *plibNewPosition);
803 [in] ULARGE_INTEGER libNewSize);
807 [in, unique] IStream *pstm,
808 [in] ULARGE_INTEGER cb,
809 [out] ULARGE_INTEGER *pcbRead,
810 [out] ULARGE_INTEGER *pcbWritten);
813 HRESULT RemoteCopyTo(
814 [in, unique] IStream *pstm,
815 [in] ULARGE_INTEGER cb,
816 [out] ULARGE_INTEGER *pcbRead,
817 [out] ULARGE_INTEGER *pcbWritten);
820 [in] DWORD grfCommitFlags);
825 [in] ULARGE_INTEGER libOffset,
826 [in] ULARGE_INTEGER cb,
827 [in] DWORD dwLockType);
829 HRESULT UnlockRegion(
830 [in] ULARGE_INTEGER libOffset,
831 [in] ULARGE_INTEGER cb,
832 [in] DWORD dwLockType);
835 [out] STATSTG *pstatstg,
836 [in] DWORD grfStatFlag);
839 [out] IStream **ppstm);
844 uuid(0000000d-0000-0000-C000-000000000046),
845 pointer_default(unique)
847 interface IEnumSTATSTG : IUnknown
849 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
854 [out, size_is(celt), length_is(*pceltFetched)]
856 [out] ULONG *pceltFetched);
861 [out, size_is(celt), length_is(*pceltFetched)]
863 [out] ULONG *pceltFetched);
871 [out] IEnumSTATSTG **ppenum);
876 uuid(0000000b-0000-0000-C000-000000000046),
877 pointer_default(unique)
879 interface IStorage : IUnknown
881 typedef [unique] IStorage *LPSTORAGE;
883 typedef struct tagRemSNB {
884 unsigned long ulCntStr;
885 unsigned long ulCntChar;
886 [size_is(ulCntChar)] OLECHAR rgString[];
889 typedef [unique] RemSNB *wireSNB;
890 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
892 HRESULT CreateStream(
893 [in] LPCOLESTR pwcsName,
895 [in] DWORD reserved1,
896 [in] DWORD reserved2,
897 [out] IStream **ppstm);
901 [in] LPCOLESTR pwcsName,
902 [in, unique] void *reserved1,
904 [in] DWORD reserved2,
905 [out] IStream **ppstm);
907 [call_as(OpenStream)]
908 HRESULT RemoteOpenStream(
909 [in] LPCOLESTR pwcsName,
910 [in] unsigned long cbReserved1,
911 [in, unique, size_is(cbReserved1)] byte *reserved1,
913 [in] DWORD reserved2,
914 [out] IStream **ppstm);
916 HRESULT CreateStorage(
917 [in] LPCOLESTR pwcsName,
920 [in] DWORD reserved2,
921 [out] IStorage **ppstg);
924 [in, unique] LPCOLESTR pwcsName,
925 [in, unique] IStorage *pstgPriority,
927 [in, unique] SNB snbExclude,
929 [out] IStorage **ppstg);
932 [in] DWORD ciidExclude,
933 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
934 [in, unique] SNB snbExclude,
935 [in, unique] IStorage *pstgDest);
937 HRESULT MoveElementTo(
938 [in] LPCOLESTR pwcsName,
939 [in, unique] IStorage *pstgDest,
940 [in] LPCOLESTR pwcsNewName,
941 [in] DWORD grfFlags);
944 [in] DWORD grfCommitFlags);
949 HRESULT EnumElements(
950 [in] DWORD reserved1,
951 [in, unique, size_is(1)] void *reserved2,
952 [in] DWORD reserved3,
953 [out] IEnumSTATSTG **ppenum);
955 [call_as(EnumElements)]
956 HRESULT RemoteEnumElements(
957 [in] DWORD reserved1,
958 [in] unsigned long cbReserved2,
959 [in, unique, size_is(cbReserved2)] byte *reserved2,
960 [in] DWORD reserved3,
961 [out] IEnumSTATSTG **ppenum);
963 HRESULT DestroyElement(
964 [in] LPCOLESTR pwcsName);
966 HRESULT RenameElement(
967 [in] LPCOLESTR pwcsOldName,
968 [in] LPCOLESTR pwcsNewName);
970 HRESULT SetElementTimes(
971 [in, unique] LPCOLESTR pwcsName,
972 [in, unique] const FILETIME *pctime,
973 [in, unique] const FILETIME *patime,
974 [in, unique] const FILETIME *pmtime);
977 [in] REFCLSID clsid);
979 HRESULT SetStateBits(
980 [in] DWORD grfStateBits,
984 [out] STATSTG *pstatstg,
985 [in] DWORD grfStatFlag);
990 uuid(0000010b-0000-0000-C000-000000000046),
991 pointer_default(unique)
993 interface IPersistFile : IPersist
995 typedef [unique] IPersistFile *LPPERSISTFILE;
1000 [in] LPCOLESTR pszFileName,
1004 [in, unique] LPCOLESTR pszFileName,
1005 [in] BOOL fRemember);
1007 HRESULT SaveCompleted(
1008 [in, unique] LPCOLESTR pszFileName);
1011 [out] LPOLESTR *ppszFileName);
1016 uuid(0000010a-0000-0000-C000-000000000046),
1017 pointer_default(unique)
1019 interface IPersistStorage : IPersist
1021 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1026 [in, unique] IStorage *pStg);
1029 [in, unique] IStorage *pStg);
1032 [in, unique] IStorage *pStgSave,
1033 [in] BOOL fSameAsLoad);
1035 HRESULT SaveCompleted(
1036 [in, unique] IStorage *pStgNew);
1038 HRESULT HandsOffStorage();
1043 uuid(00000012-0000-0000-C000-000000000046),
1044 pointer_default(unique)
1046 interface IRootStorage : IUnknown
1048 typedef [unique] IRootStorage *LPROOTSTORAGE;
1050 HRESULT SwitchToFile(
1051 [in] LPOLESTR pszFile);
1056 uuid(0000000a-0000-0000-C000-000000000046),
1057 pointer_default(unique)
1059 interface ILockBytes : IUnknown
1061 typedef [unique] ILockBytes *LPLOCKBYTES;
1065 [in] ULARGE_INTEGER ulOffset,
1066 [out, size_is(cb), length_is(*pcbRead)]
1069 [out] ULONG *pcbRead);
1072 HRESULT RemoteReadAt(
1073 [in] ULARGE_INTEGER ulOffset,
1074 [out, size_is(cb), length_is(*pcbRead)]
1077 [out] ULONG *pcbRead);
1081 [in] ULARGE_INTEGER ulOffset,
1082 [in, size_is(cb)] const void *pv,
1084 [out] ULONG *pcbWritten);
1087 HRESULT RemoteWriteAt(
1088 [in] ULARGE_INTEGER ulOffset,
1089 [in, size_is(cb)] const byte *pv,
1091 [out] ULONG *pcbWritten);
1096 [in] ULARGE_INTEGER cb);
1099 [in] ULARGE_INTEGER libOffset,
1100 [in] ULARGE_INTEGER cb,
1101 [in] DWORD dwLockType);
1103 HRESULT UnlockRegion(
1104 [in] ULARGE_INTEGER libOffset,
1105 [in] ULARGE_INTEGER cb,
1106 [in] DWORD dwLockType);
1109 [out] STATSTG *pstatstg,
1110 [in] DWORD grfStatFlag);
1115 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1116 pointer_default(unique)
1118 interface IFillLockBytes : IUnknown
1122 [in, size_is(cb)] const void *pv,
1124 [out] ULONG *pcbWritten);
1126 [call_as(FillAppend)]
1127 HRESULT RemoteFillAppend(
1128 [in, size_is(cb)] const byte *pv,
1130 [out] ULONG *pcbWritten);
1134 [in] ULARGE_INTEGER ulOffset,
1135 [in, size_is(cb)] const void *pv,
1137 [out] ULONG *pcbWritten);
1140 HRESULT RemoteFillAt(
1141 [in] ULARGE_INTEGER ulOffset,
1142 [in, size_is(cb)] const byte *pv,
1144 [out] ULONG *pcbWritten);
1146 HRESULT SetFillSize(
1147 [in] ULARGE_INTEGER ulSize);
1150 [in] BOOL bCanceled);
1155 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1156 pointer_default(unique)
1158 interface IProgressNotify : IUnknown
1161 [in] DWORD dwProgressCurrent,
1162 [in] DWORD dwProgressMaximum,
1163 [in] BOOL fAccurate,
1170 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1171 pointer_default(unique)
1173 interface ILayoutStorage : IUnknown
1175 typedef struct tagStorageLayout {
1177 OLECHAR *pwcsElementName;
1178 LARGE_INTEGER cOffset;
1179 LARGE_INTEGER cBytes;
1182 HRESULT LayoutScript(
1183 [in] StorageLayout *pStorageLayout,
1184 [in] DWORD nEntries,
1185 [in] DWORD glfInterleavedFlag);
1187 HRESULT BeginMonitor();
1189 HRESULT EndMonitor();
1191 HRESULT ReLayoutDocfile(
1192 [in] OLECHAR *pwcsNewDfName);
1194 HRESULT ReLayoutDocfileOnILockBytes(
1195 [in] ILockBytes *pILockBytes);
1200 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
1202 interface IBlockingLock : IUnknown
1205 [in] DWORD dwTimeout);
1213 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
1215 interface ITimeAndNoticeControl : IUnknown
1217 HRESULT SuppressChanges(
1227 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
1229 interface IOplockStorage: IUnknown
1231 HRESULT CreateStorageEx(
1232 [in] LPCWSTR pwcsName,
1235 [in] DWORD grfAttrs,
1237 [out, iid_is(riid)] void **ppstgOpen);
1239 HRESULT OpenStorageEx(
1240 [in] LPCWSTR pwcsName,
1243 [in] DWORD grfAttrs,
1245 [out, iid_is(riid)] void **ppstgOpen);
1248 /******************** Data Object ********************/
1252 uuid(00000103-0000-0000-C000-000000000046),
1253 pointer_default(unique)
1255 interface IEnumFORMATETC : IUnknown
1257 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1259 typedef struct tagDVTARGETDEVICE {
1261 WORD tdDriverNameOffset;
1262 WORD tdDeviceNameOffset;
1263 WORD tdPortNameOffset;
1264 WORD tdExtDevmodeOffset;
1265 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1269 typedef CLIPFORMAT *LPCLIPFORMAT;
1271 typedef struct tagFORMATETC {
1272 CLIPFORMAT cfFormat;
1273 [unique] DVTARGETDEVICE *ptd;
1277 } FORMATETC, *LPFORMATETC;
1282 [out, size_is(celt), length_is(*pceltFetched)]
1284 [out] ULONG *pceltFetched);
1289 [out, size_is(celt), length_is(*pceltFetched)]
1291 [out] ULONG *pceltFetched);
1299 [out] IEnumFORMATETC **ppenum);
1304 uuid(00000105-0000-0000-C000-000000000046),
1305 pointer_default(unique)
1307 interface IEnumSTATDATA : IUnknown
1309 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1311 typedef enum tagADVF {
1313 ADVF_PRIMEFIRST = 2,
1315 ADVF_DATAONSTOP = 64,
1316 ADVFCACHE_NOHANDLER = 8,
1317 ADVFCACHE_FORCEBUILTIN = 16,
1318 ADVFCACHE_ONSAVE = 32
1321 typedef struct tagSTATDATA
1323 FORMATETC formatetc;
1325 [unique] IAdviseSink *pAdvSink;
1327 } STATDATA, *LPSTATDATA;
1332 [out, size_is(celt), length_is(*pceltFetched)]
1334 [out] ULONG *pceltFetched);
1339 [out, size_is(celt), length_is(*pceltFetched)]
1341 [out] ULONG *pceltFetched);
1349 [out] IEnumSTATDATA **ppenum);
1354 uuid(0000010f-0000-0000-C000-000000000046),
1355 pointer_default(unique)
1357 interface IAdviseSink : IUnknown
1359 typedef IAdviseSink *LPADVISESINK;
1361 typedef [v1_enum] enum tagTYMED {
1372 typedef struct tagRemSTGMEDIUM {
1375 unsigned long pData;
1376 unsigned long pUnkForRelease;
1377 unsigned long cbData;
1378 [size_is(cbData)] byte data[];
1381 typedef struct tagSTGMEDIUM {
1383 [switch_is(tymed)] union {
1384 [case(TYMED_GDI)] HBITMAP hBitmap;
1385 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1386 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1387 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1388 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1389 [case(TYMED_ISTREAM)] IStream *pstm;
1390 [case(TYMED_ISTORAGE)] IStorage *pstg;
1393 [unique] IUnknown *pUnkForRelease;
1396 /* copied from wingdi.h */
1400 #define OBJ_METADC 4
1403 #define OBJ_BITMAP 7
1404 #define OBJ_REGION 8
1405 #define OBJ_METAFILE 9
1406 #define OBJ_MEMDC 10
1407 #define OBJ_EXTPEN 11
1408 #define OBJ_ENHMETADC 12
1409 #define OBJ_ENHMETAFILE 13
1411 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1412 case OBJ_BITMAP: wireHBITMAP hBitmap;
1413 case OBJ_PAL: wireHPALETTE hPalette;
1414 default: wireHGLOBAL hGeneric;
1417 typedef struct _userSTGMEDIUM {
1418 union switch(DWORD tymed) u {
1420 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1421 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1422 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1423 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1424 case TYMED_FILE: LPOLESTR lpszFileName;
1425 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1426 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1428 IUnknown *pUnkForRelease;
1431 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1432 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1434 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1435 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1437 typedef STGMEDIUM *LPSTGMEDIUM;
1439 typedef struct _userFLAG_STGMEDIUM {
1441 long fPassOwnership;
1442 userSTGMEDIUM Stgmed;
1443 } userFLAG_STGMEDIUM;
1445 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1447 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1449 long fPassOwnership;
1455 [in, unique] FORMATETC *pFormatetc,
1456 [in, unique] STGMEDIUM *pStgmed);
1458 [call_as(OnDataChange)]
1459 HRESULT RemoteOnDataChange(
1460 [in, unique] FORMATETC *pFormatetc,
1461 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1465 [in] DWORD dwAspect,
1468 [call_as(OnViewChange)]
1469 HRESULT RemoteOnViewChange(
1470 [in] DWORD dwAspect,
1475 [in] IMoniker *pmk);
1478 HRESULT RemoteOnRename(
1479 [in] IMoniker *pmk);
1485 HRESULT RemoteOnSave();
1491 HRESULT RemoteOnClose();
1496 uuid(00000125-0000-0000-C000-000000000046),
1497 pointer_default(unique)
1499 interface IAdviseSink2 : IAdviseSink
1501 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1504 void OnLinkSrcChange(
1505 [in, unique] IMoniker *pmk);
1507 [call_as(OnLinkSrcChange)]
1508 HRESULT RemoteOnLinkSrcChange(
1509 [in, unique] IMoniker *pmk);
1514 uuid(0000010e-0000-0000-C000-000000000046),
1515 pointer_default(unique)
1517 interface IDataObject : IUnknown
1519 typedef [unique] IDataObject *LPDATAOBJECT;
1521 typedef enum tagDATADIR {
1528 [in, unique] FORMATETC *pformatetcIn,
1529 [out] STGMEDIUM *pmedium);
1532 HRESULT RemoteGetData(
1533 [in, unique] FORMATETC *pformatetcIn,
1534 [out] STGMEDIUM *pRemoteMedium);
1537 HRESULT GetDataHere(
1538 [in, unique] FORMATETC *pformatetc,
1539 [in, out] STGMEDIUM *pmedium);
1541 [call_as(GetDataHere)]
1542 HRESULT RemoteGetDataHere(
1543 [in, unique] FORMATETC *pformatetc,
1544 [in, out] STGMEDIUM *pRemoteMedium);
1546 HRESULT QueryGetData(
1547 [in, unique] FORMATETC *pformatetc);
1549 HRESULT GetCanonicalFormatEtc(
1550 [in, unique] FORMATETC *pformatectIn,
1551 [out] FORMATETC *pformatetcOut);
1555 [in, unique] FORMATETC *pformatetc,
1556 [in, unique] STGMEDIUM *pmedium,
1557 [in] BOOL fRelease);
1560 HRESULT RemoteSetData(
1561 [in, unique] FORMATETC *pformatetc,
1562 [in, unique] FLAG_STGMEDIUM *pmedium,
1563 [in] BOOL fRelease);
1565 HRESULT EnumFormatEtc(
1566 [in] DWORD dwDirection,
1567 [out] IEnumFORMATETC **ppenumFormatEtc);
1570 [in] FORMATETC *pformatetc,
1572 [in, unique] IAdviseSink *pAdvSink,
1573 [out] DWORD *pdwConnection);
1576 [in] DWORD dwConnection);
1578 HRESULT EnumDAdvise(
1579 [out] IEnumSTATDATA **ppenumAdvise);
1585 uuid(00000110-0000-0000-C000-000000000046)
1587 interface IDataAdviseHolder : IUnknown
1589 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1592 [in, unique] IDataObject *pDataObject,
1593 [in, unique] FORMATETC *pFetc,
1595 [in, unique] IAdviseSink *pAdvise,
1596 [out] DWORD *pdwConnection);
1599 [in] DWORD dwConnection);
1602 [out] IEnumSTATDATA **ppenumAdvise);
1604 HRESULT SendOnDataChange(
1605 [in, unique] IDataObject *pDataObject,
1606 [in] DWORD dwReserved,
1610 /******************** Remoting ********************/
1615 uuid(00000016-0000-0000-C000-000000000046)
1617 interface IMessageFilter : IUnknown
1619 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1621 typedef enum tagCALLTYPE {
1622 CALLTYPE_TOPLEVEL = 1,
1623 CALLTYPE_NESTED = 2,
1625 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1626 CALLTYPE_ASYNC_CALLPENDING = 5
1629 typedef enum tagSERVERCALL {
1630 SERVERCALL_ISHANDLED = 0,
1631 SERVERCALL_REJECTED = 1,
1632 SERVERCALL_RETRYLATER = 2
1635 typedef enum tagPENDINGTYPE {
1636 PENDINGTYPE_TOPLEVEL = 1,
1637 PENDINGTYPE_NESTED = 2
1640 typedef enum tagPENDINGMSG {
1641 PENDINGMSG_CANCELCALL = 0,
1642 PENDINGMSG_WAITNOPROCESS = 1,
1643 PENDINGMSG_WAITDEFPROCESS = 2
1646 typedef struct tagINTERFACEINFO {
1650 } INTERFACEINFO, *LPINTERFACEINFO;
1652 DWORD HandleInComingCall(
1653 [in] DWORD dwCallType,
1654 [in] HTASK htaskCaller,
1655 [in] DWORD dwTickCount,
1656 [in] LPINTERFACEINFO lpInterfaceInfo);
1658 DWORD RetryRejectedCall(
1659 [in] HTASK htaskCallee,
1660 [in] DWORD dwTickCount,
1661 [in] DWORD dwRejectType);
1663 DWORD MessagePending(
1664 [in] HTASK htaskCallee,
1665 [in] DWORD dwTickCount,
1666 [in] DWORD dwPendingType);
1672 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1674 interface IRpcChannelBuffer : IUnknown
1676 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1678 typedef unsigned long RPCOLEDATAREP;
1680 typedef struct tagRPCOLEMESSAGE {
1682 RPCOLEDATAREP dataRepresentation;
1690 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1693 [in] RPCOLEMESSAGE *pMessage,
1696 HRESULT SendReceive(
1697 [in,out] RPCOLEMESSAGE *pMessage,
1698 [out] ULONG *pStatus);
1701 [in] RPCOLEMESSAGE *pMessage);
1704 [out] DWORD *pdwDestContext,
1705 [out] void **ppvDestContext);
1707 HRESULT IsConnected();
1713 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1715 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1717 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1719 HRESULT GetProtocolVersion(
1720 [in,out] DWORD *pdwVersion);
1726 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1728 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1730 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1733 [in,out] RPCOLEMESSAGE *pMsg,
1734 [out] ULONG *pulStatus);
1737 [in,out] RPCOLEMESSAGE *pMsg,
1739 [out] ULONG *pulStatus);
1742 [in] RPCOLEMESSAGE *pMsg);
1744 HRESULT GetCallContext(
1745 [in] RPCOLEMESSAGE *pMsg,
1747 [out] void **pInterface);
1749 HRESULT GetDestCtxEx(
1750 [in] RPCOLEMESSAGE *pMsg,
1751 [out] DWORD *pdwDestContext,
1752 [out] void **ppvDestContext);
1755 [in] RPCOLEMESSAGE *pMsg,
1756 [out] DWORD *pState);
1758 HRESULT RegisterAsync(
1759 [in] RPCOLEMESSAGE *pMsg,
1760 [in] IAsyncManager *pAsyncMgr);
1766 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
1767 pointer_default(unique)
1769 interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
1772 [in, out] RPCOLEMESSAGE *pMsg,
1773 [in] ISynchronize *pSync,
1774 [out] ULONG *pulStatus);
1777 [in, out] RPCOLEMESSAGE *pMsg,
1778 [out] ULONG *pulStatus);
1780 HRESULT GetDestCtxEx(
1781 [in] RPCOLEMESSAGE *pMsg,
1782 [out] DWORD *pdwDestContext,
1783 [out] void **ppvDestContext);
1789 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
1791 interface IRpcSyntaxNegotiate : IUnknown
1793 HRESULT NegotiateSyntax(
1794 [in, out] RPCOLEMESSAGE *pMsg);
1800 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1802 interface IRpcProxyBuffer : IUnknown
1804 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1807 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1815 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1817 interface IRpcStubBuffer : IUnknown
1819 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1822 [in] IUnknown *pUnkServer);
1827 [in] RPCOLEMESSAGE *_prpcmsg,
1828 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1830 IRpcStubBuffer *IsIIDSupported(
1835 HRESULT DebugServerQueryInterface(
1838 void DebugServerRelease(
1845 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1847 interface IPSFactoryBuffer : IUnknown
1849 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1851 HRESULT CreateProxy(
1852 [in] IUnknown *pUnkOuter,
1854 [out] IRpcProxyBuffer **ppProxy,
1859 [in, unique] IUnknown *pUnkServer,
1860 [out] IRpcStubBuffer **ppStub);
1866 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1868 interface IChannelHook : IUnknown
1870 typedef [unique] IChannelHook *LPCHANNELHOOK;
1872 typedef struct SChannelHookCallInfo {
1879 } SChannelHookCallInfo;
1882 [in] REFGUID uExtent,
1884 [out] ULONG *pDataSize);
1886 void ClientFillBuffer(
1887 [in] REFGUID uExtent,
1889 [in, out] ULONG *pDataSize,
1890 [in] void *pDataBuffer);
1893 [in] REFGUID uExtent,
1895 [in] ULONG cbDataSize,
1896 [in] void *pDataBuffer,
1897 [in] DWORD lDataRep,
1898 [in] HRESULT hrFault);
1901 [in] REFGUID uExtent,
1903 [in] ULONG cbDataSize,
1904 [in] void *pDataBuffer,
1905 [in] DWORD lDataRep);
1908 [in] REFGUID uExtent,
1910 [in] HRESULT hrFault,
1911 [out] ULONG *pDataSize);
1913 void ServerFillBuffer(
1914 [in] REFGUID uExtent,
1916 [in, out] ULONG *pDataSize,
1917 [in] void *pDataBuffer,
1918 [in] HRESULT hrFault );
1921 extern const FMTID FMTID_SummaryInformation;
1922 extern const FMTID FMTID_DocSummaryInformation;
1923 extern const FMTID FMTID_UserDefinedProperties;
1926 /******************** Connection Points ********************/
1929 /******************** DCOM ********************/
1934 uuid(0000013D-0000-0000-C000-000000000046)
1936 interface IClientSecurity : IUnknown
1938 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1941 OLECHAR *pPrincipalName;
1943 } SOLE_AUTHENTICATION_SERVICE;
1945 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1947 typedef struct tagSOLE_AUTHENTICATION_INFO {
1951 } SOLE_AUTHENTICATION_INFO;
1953 typedef struct tagSOLE_AUTHENTICATION_LIST {
1955 SOLE_AUTHENTICATION_INFO *aAuthInfo;
1956 } SOLE_AUTHENTICATION_LIST;
1958 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1960 EOAC_MUTUAL_AUTH = 0x1,
1961 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
1962 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
1963 EOAC_APPID = 0x8, /* CoInitializeSecurity only */
1964 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
1965 EOAC_STATIC_CLOAKING = 0x20,
1966 EOAC_DYNAMIC_CLOAKING = 0x40,
1967 EOAC_ANY_AUTHORITY = 0x80,
1968 EOAC_MAKE_FULLSIC = 0x100,
1969 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
1970 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
1971 EOAC_DEFAULT = 0x800,
1972 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
1973 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
1974 } EOLE_AUTHENTICATION_CAPABILITIES;
1976 HRESULT QueryBlanket(
1977 [in] IUnknown *pProxy,
1978 [out] DWORD *pAuthnSvc,
1979 [out] DWORD *pAuthzSvc,
1980 [out] OLECHAR **pServerPrincName,
1981 [out] DWORD *pAuthnLevel,
1982 [out] DWORD *pImpLevel,
1983 [out] void **pAuthInfo,
1984 [out] DWORD *pCapabilities);
1987 [in] IUnknown *pProxy,
1988 [in] DWORD AuthnSvc,
1989 [in] DWORD AuthzSvc,
1990 [in] OLECHAR *pServerPrincName,
1991 [in] DWORD AuthnLevel,
1992 [in] DWORD ImpLevel,
1993 [in] void *pAuthInfo,
1994 [in] DWORD Capabilities);
1997 [in] IUnknown *pProxy,
1998 [out] IUnknown **ppCopy);
2004 uuid(0000013E-0000-0000-C000-000000000046)
2006 interface IServerSecurity : IUnknown
2008 HRESULT QueryBlanket(
2009 [out] DWORD *pAuthnSvc,
2010 [out] DWORD *pAuthzSvc,
2011 [out] OLECHAR **pServerPrincName,
2012 [out] DWORD *pAuthnLevel,
2013 [out] DWORD *pImpLevel,
2014 [out] void **pPrivs,
2015 [out] DWORD *pCapabilities);
2017 HRESULT ImpersonateClient();
2019 HRESULT RevertToSelf();
2021 BOOL IsImpersonating();
2027 uuid(00000024-0000-0000-C000-000000000046)
2029 interface IAsyncSetup : IUnknown
2031 HRESULT GetAsyncManager(
2033 [in] IUnknown *pOuter,
2035 [out] IUnknown **ppInner,
2036 [out] IAsyncManager **ppAsyncMgr);
2041 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
2043 interface IDirectWriterLock : IUnknown
2045 HRESULT WaitForWriteAccess(
2046 [in] DWORD dwTimeout);
2048 HRESULT ReleaseWriteAccess();
2050 HRESULT HaveWriteAccess();
2055 uuid(00000030-0000-0000-C000-000000000046)
2058 interface ISynchronize : IUnknown
2062 [in] DWORD dwMilliseconds);
2073 uuid(00000031-0000-0000-C000-000000000046)
2075 interface ISynchronizeHandle : IUnknown
2085 uuid(00000032-0000-0000-C000-000000000046)
2087 interface ISynchronizeEvent : ISynchronizeHandle
2089 HRESULT SetEventHandle(
2097 uuid(00000033-0000-0000-C000-000000000046)
2099 interface ISynchronizeContainer : IUnknown
2101 HRESULT AddSynchronize(
2102 [in] ISynchronize *pSync);
2104 HRESULT WaitMultiple(
2106 [in] DWORD dwTimeOut,
2107 [out] ISynchronize **ppSync);
2113 uuid(00000025-0000-0000-C000-000000000046)
2115 interface ISynchronizeMutex : ISynchronize
2117 HRESULT ReleaseMutex();
2123 uuid(00000029-0000-0000-C000-000000000046)
2126 interface ICancelMethodCalls : IUnknown
2128 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2131 [in] ULONG ulSeconds);
2133 HRESULT TestCancel();
2139 uuid(0000002A-0000-0000-C000-000000000046)
2141 interface IAsyncManager : IUnknown
2143 typedef enum tagDCOM_CALL_STATE {
2145 DCOM_CALL_COMPLETE = 1,
2146 DCOM_CALL_CANCELED = 2
2149 HRESULT CompleteCall(
2150 [in] HRESULT Result);
2152 HRESULT GetCallContext(
2154 [out] void **pInterface);
2157 [out] ULONG *pulStateFlags);
2163 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
2164 pointer_default(unique)
2166 interface ICallFactory : IUnknown
2170 [in] IUnknown *pCtrlUnk,
2172 [out, iid_is(riid2)] IUnknown **ppv);
2178 uuid(00000144-0000-0000-C000-000000000046)
2180 interface IRpcOptions : IUnknown
2183 [in] IUnknown *pPrx,
2184 [in] DWORD dwProperty,
2185 [in] ULONG_PTR dwValue);
2188 [in] IUnknown *pPrx,
2189 [in] DWORD dwProperty,
2190 [out] ULONG_PTR *pdwValue);
2194 COMBND_RPCTIMEOUT = 1,
2195 COMBND_SERVER_LOCALITY = 2
2199 SERVER_LOCALITY_PROCESS_LOCAL = 0,
2200 SERVER_LOCALITY_MACHINE_LOCAL = 1,
2201 SERVER_LOCALITY_REMOTE = 2
2207 uuid(00000149-0000-0000-C000-000000000046),
2208 pointer_default(unique)
2210 interface IRpcHelper : IUnknown
2212 HRESULT GetDCOMProtocolVersion(
2213 [out] DWORD *pComVersion);
2215 HRESULT GetIIDFromOBJREF(
2223 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
2225 interface IReleaseMarshalBuffers : IUnknown
2227 HRESULT ReleaseMarshalBuffer(
2228 [in] RPCOLEMESSAGE *pMsg,
2230 [in, unique] IUnknown *pChnl);
2236 uuid(0000002B-0000-0000-C000-000000000046)
2238 interface IWaitMultiple : IUnknown
2240 HRESULT WaitMultiple(
2242 [out] ISynchronize **pSync);
2243 HRESULT AddSynchronize(
2244 [in] ISynchronize *pSync);
2250 uuid(00000026-0000-0000-C000-000000000046)
2252 interface IUrlMon : IUnknown
2254 HRESULT AsyncGetClassBits(
2255 [in] REFCLSID rclsid,
2256 [in, unique] LPCWSTR pszTYPE,
2257 [in, unique] LPCWSTR pszExt,
2258 [in] DWORD dwFileVersionMS,
2259 [in] DWORD dwFileVersionLS,
2260 [in, unique] LPCWSTR pszCodeBase,
2262 [in] DWORD dwClassContext,
2270 uuid(00000145-0000-0000-C000-000000000046)
2272 interface IForegroundTransfer : IUnknown
2274 HRESULT AllowForegroundTransfer(
2275 [in] void *lpvReserved);
2281 uuid(00000147-0000-0000-C000-000000000046)
2283 interface IAddrTrackingControl : IUnknown
2285 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
2287 HRESULT EnableCOMDynamicAddrTracking();
2288 HRESULT DisableCOMDynamicAddrTracking();
2294 uuid(00000148-0000-0000-C000-000000000046)
2296 interface IAddrExclusionControl : IUnknown
2298 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
2300 HRESULT GetCurrentAddrExclusionList(
2302 [out, iid_is(riid)] void **ppEnumerator);
2303 HRESULT UpdateAddrExclusionList(
2304 [in] IUnknown *pEnumerator);
2307 typedef enum _APTTYPE {
2308 APTTYPE_CURRENT = -1,
2315 typedef enum _THDTYPE {
2316 THDTYPE_BLOCKMESSAGES = 0,
2317 THDTYPE_PROCESSMESSAGES = 1
2323 uuid(000001ce-0000-0000-C000-000000000046),
2324 pointer_default(unique)
2326 interface IComThreadingInfo : IUnknown
2328 HRESULT GetCurrentApartmentType(
2329 [out] APTTYPE *pAptType);
2330 HRESULT GetCurrentThreadType(
2331 [out] THDTYPE *pThreadType);
2332 HRESULT GetCurrentLogicalThreadId(
2333 [out] GUID *pguidLogicalThreadId);
2334 HRESULT SetCurrentLogicalThreadId(
2335 [in] REFGUID rguid);
2341 pointer_default(unique),
2342 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
2344 interface IProcessInitControl : IUnknown
2346 HRESULT ResetInitializerTimeout(
2347 [in] DWORD dwSecondsRemaining);
2353 uuid(00000034-0000-0000-C000-000000000046),
2354 pointer_default(unique)
2356 interface IInitializeSpy : IUnknown
2358 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
2360 HRESULT PreInitialize(
2361 [in] DWORD dwCoInit,
2362 [in] DWORD dwCurThreadAptRefs);
2364 HRESULT PostInitialize(
2365 [in] HRESULT hrCoInit,
2366 [in] DWORD dwCoInit,
2367 [in] DWORD dwNewThreadAptRefs);
2369 HRESULT PreUninitialize(
2370 [in] DWORD dwCurThreadAptRefs);
2372 HRESULT PostUninitialize(
2373 [in] DWORD dwNewThreadAptRefs);
2378 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
2380 interface IThumbnailExtractor : IUnknown
2382 HRESULT ExtractThumbnail(
2383 [in] IStorage *pStg,
2384 [in] ULONG ulLength,
2385 [in] ULONG ulHeight,
2386 [out] ULONG *pulOutputLength,
2387 [out] ULONG *pulOutputHeight,
2388 [out] HBITMAP *phOutputBitmap);
2391 HRESULT OnFileUpdated(
2392 [in] IStorage *pStg);
2396 cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
2398 typedef DWORD CPFLAGS;
2400 typedef struct tagContextProperty
2404 [unique] IUnknown *pUnk;
2410 uuid(000001c1-0000-0000-C000-000000000046)
2412 interface IEnumContextProps : IUnknown
2414 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
2418 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
2419 [out] ULONG *pceltFetched);
2427 [out] IEnumContextProps **ppEnumContextProps);
2430 [out] ULONG *pcelt);
2436 uuid(000001c0-0000-0000-C000-000000000046)
2438 interface IContext : IUnknown
2440 HRESULT SetProperty(
2441 [in] REFGUID policyId,
2443 [in] IUnknown *pUnk);
2445 HRESULT RemoveProperty(
2446 [in] REFGUID policyId);
2448 HRESULT GetProperty(
2450 [out] CPFLAGS *pFlags,
2451 [out] IUnknown **ppUnk);
2453 HRESULT EnumContextProps(
2454 [out] IEnumContextProps **ppEnumContextProps);
2457 cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")