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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 interface IEnumString;
23 interface IRunningObjectTable;
25 interface IAdviseSink;
26 interface IAsyncManager;
27 interface ISynchronize;
29 typedef struct _COSERVERINFO {
32 COAUTHINFO *pAuthInfo;
36 /******************** Fundamentals ********************/
41 uuid(00000003-0000-0000-C000-000000000046)
43 interface IMarshal : IUnknown
45 typedef [unique] IMarshal *LPMARSHAL;
47 HRESULT GetUnmarshalClass(
49 [in, unique] void *pv,
50 [in] DWORD dwDestContext,
51 [in, unique] void *pvDestContext,
55 HRESULT GetMarshalSizeMax(
57 [in, unique] void *pv,
58 [in] DWORD dwDestContext,
59 [in, unique] void *pvDestContext,
63 HRESULT MarshalInterface(
64 [in, unique] IStream *pStm,
66 [in, unique] void *pv,
67 [in] DWORD dwDestContext,
68 [in, unique] void *pvDestContext,
69 [in] DWORD mshlflags);
71 HRESULT UnmarshalInterface(
72 [in, unique] IStream *pStm,
76 HRESULT ReleaseMarshalData(
77 [in, unique] IStream *pStm);
79 HRESULT DisconnectObject(
80 [in] DWORD dwReserved);
86 uuid(000001cf-0000-0000-C000-000000000046)
88 interface IMarshal2 : IMarshal
90 typedef [unique] IMarshal2 *LPMARSHAL2;
96 uuid(00000018-0000-0000-C000-000000000046)
98 interface IStdMarshalInfo : IUnknown
100 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
102 HRESULT GetClassForHandler(
103 [in] DWORD dwDestContext,
104 [in, unique] void *pvDestContext,
105 [out] CLSID *pClsid);
111 uuid(00000019-0000-0000-C000-000000000046)
113 interface IExternalConnection : IUnknown
115 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
117 typedef enum tagEXTCONN {
118 EXTCONN_STRONG = 0x0001,
119 EXTCONN_WEAK = 0x0002,
120 EXTCONN_CALLABLE = 0x0004
125 [in] DWORD reserved);
127 DWORD ReleaseConnection(
130 [in] BOOL fLastReleaseCloses);
136 uuid(00000020-0000-0000-C000-000000000046)
138 interface IMultiQI : IUnknown
140 typedef [unique] IMultiQI *LPMULTIQI;
142 typedef struct tagMULTI_QI {
148 HRESULT QueryMultipleInterfaces(
150 [in, out] MULTI_QI *pMQIs);
156 uuid(00000002-0000-0000-C000-000000000046)
158 interface IMalloc : IUnknown
160 typedef [unique] IMalloc *LPMALLOC;
175 int DidAlloc(LPVOID pv);
183 uuid(0000001d-0000-0000-C000-000000000046)
185 interface IMallocSpy : IUnknown
187 typedef [unique] IMallocSpy *LPMALLOCSPY;
190 [in] ULONG cbRequest);
193 [in] LPVOID pActual);
196 [in] LPVOID pRequest,
203 [in] LPVOID pRequest,
204 [in] ULONG cbRequest,
205 [out] LPVOID *ppNewRequest,
213 [in] LPVOID pRequest,
221 [in] LPVOID pRequest,
225 [in] LPVOID pRequest,
229 void PreHeapMinimize();
231 void PostHeapMinimize();
237 uuid(00000021-0000-0000-C000-000000000046)
239 interface IInternalUnknown : IUnknown
241 HRESULT QueryInternalInterface(
248 uuid(00000100-0000-0000-C000-000000000046),
249 pointer_default(unique)
251 interface IEnumUnknown : IUnknown
253 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
258 [out] IUnknown **rgelt,
259 [out] ULONG *pceltFetched);
264 [out, size_is(celt), length_is(*pceltFetched)]
266 [out] ULONG *pceltFetched);
274 [out] IEnumUnknown **ppenum);
279 uuid(00000022-0000-0000-C000-000000000046),
281 pointer_default(unique)
283 interface ISurrogate : IUnknown
285 typedef [unique] ISurrogate *LPSURROGATE;
287 HRESULT LoadDllServer(
288 [in] REFCLSID Clsid);
289 HRESULT FreeSurrogate();
295 uuid(00000146-0000-0000-C000-000000000046)
297 interface IGlobalInterfaceTable : IUnknown
299 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
301 HRESULT RegisterInterfaceInGlobal(
304 [out] DWORD *pdwCookie);
306 HRESULT RevokeInterfaceFromGlobal(
307 [in] DWORD dwCookie);
309 HRESULT GetInterfaceFromGlobal(
312 [out, iid_is(riid)] void **ppv);
315 /******************** Monikers ********************/
319 uuid(0000000e-0000-0000-C000-000000000046),
320 pointer_default(unique)
322 interface IBindCtx : IUnknown
324 typedef [unique] IBindCtx *LPBINDCTX;
325 typedef [unique] IBindCtx *LPBC;
327 typedef struct tagBIND_OPTS {
331 DWORD dwTickCountDeadline;
332 } BIND_OPTS, *LPBIND_OPTS;
334 /* FIXME: C++ crap */
335 typedef struct tagBIND_OPTS2 {
339 DWORD dwTickCountDeadline;
341 DWORD dwClassContext;
343 COSERVERINFO *pServerInfo;
344 } BIND_OPTS2, *LPBIND_OPTS2;
346 typedef enum tagBIND_FLAGS {
347 BIND_MAYBOTHERUSER = 1,
348 BIND_JUSTTESTEXISTENCE = 2
351 HRESULT RegisterObjectBound(
352 [in, unique] IUnknown *punk);
354 HRESULT RevokeObjectBound(
355 [in, unique] IUnknown *punk);
357 HRESULT ReleaseBoundObjects();
360 HRESULT SetBindOptions(
361 [in] BIND_OPTS *pbindopts);
363 [call_as(SetBindOptions)]
364 HRESULT RemoteSetBindOptions(
365 [in] BIND_OPTS2 *pbindopts);
368 HRESULT GetBindOptions(
369 [in, out] BIND_OPTS *pbindopts);
371 [call_as(GetBindOptions)]
372 HRESULT RemoteGetBindOptions(
373 [in, out] BIND_OPTS2 *pbindopts);
375 HRESULT GetRunningObjectTable(
376 [out] IRunningObjectTable **pprot);
378 HRESULT RegisterObjectParam(
379 [in] LPOLESTR pszKey,
380 [in, unique] IUnknown *punk);
382 HRESULT GetObjectParam(
383 [in] LPOLESTR pszKey,
384 [out] IUnknown **ppunk);
386 HRESULT EnumObjectParam(
387 [out] IEnumString **ppenum);
389 HRESULT RevokeObjectParam(
390 [in] LPOLESTR pszKey);
395 uuid(00000102-0000-0000-C000-000000000046),
396 pointer_default(unique)
398 interface IEnumMoniker : IUnknown
400 typedef [unique] IEnumMoniker *LPENUMMONIKER;
405 [out, size_is(celt), length_is(*pceltFetched)]
407 [out] ULONG *pceltFetched);
412 [out, size_is(celt), length_is(*pceltFetched)]
414 [out] ULONG *pceltFetched);
422 [out] IEnumMoniker **ppenum);
427 uuid(00000126-0000-0000-C000-000000000046)
429 interface IRunnableObject : IUnknown
431 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
433 HRESULT GetRunningClass(
434 [out] LPCLSID lpClsid);
443 HRESULT RemoteIsRunning();
447 [in] BOOL fLastUnlockCloses);
449 HRESULT SetContainedObject(
450 [in] BOOL fContained);
453 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
454 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
455 * but GetObject is used as a valid method name below, so we have
456 * to undefine it in that case */
457 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
458 cpp_quote("#undef GetObject")
463 uuid(00000010-0000-0000-C000-000000000046)
465 interface IRunningObjectTable : IUnknown
467 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
471 [in, unique] IUnknown *punkObject,
472 [in, unique] IMoniker *pmkObjectName,
473 [out] DWORD *pdwRegister);
476 [in] DWORD dwRegister);
479 [in, unique] IMoniker *pmkObjectName);
482 [in, unique] IMoniker *pmkObjectName,
483 [out] IUnknown **ppunkObject);
485 HRESULT NoteChangeTime(
486 [in] DWORD dwRegister,
487 [in] FILETIME *pfiletime);
489 HRESULT GetTimeOfLastChange(
490 [in, unique] IMoniker *pmkObjectName,
491 [out] FILETIME *pfiletime);
494 [out] IEnumMoniker **ppenumMoniker);
499 uuid(0000010c-0000-0000-C000-000000000046)
501 interface IPersist : IUnknown
503 typedef [unique] IPersist *LPPERSIST;
506 [out] CLSID *pClassID);
511 uuid(00000109-0000-0000-C000-000000000046),
512 pointer_default(unique)
514 interface IPersistStream : IPersist
516 typedef [unique] IPersistStream *LPPERSISTSTREAM;
521 [in, unique] IStream *pStm);
524 [in, unique] IStream *pStm,
525 [in] BOOL fClearDirty);
528 [out] ULARGE_INTEGER *pcbSize);
533 uuid(0000000f-0000-0000-C000-000000000046),
534 pointer_default(unique)
536 interface IMoniker : IPersistStream
538 typedef [unique] IMoniker *LPMONIKER;
540 typedef enum tagMKSYS {
542 MKSYS_GENERICCOMPOSITE = 1,
543 MKSYS_FILEMONIKER = 2,
544 MKSYS_ANTIMONIKER = 3,
545 MKSYS_ITEMMONIKER = 4,
546 MKSYS_POINTERMONIKER = 5,
547 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
548 MKSYS_CLASSMONIKER = 7
551 typedef [v1_enum] enum tagMKREDUCE {
552 MKRREDUCE_ONE = 3 << 16,
553 MKRREDUCE_TOUSER = 2 << 16,
554 MKRREDUCE_THROUGHUSER = 1 << 16,
559 HRESULT BindToObject(
560 [in, unique] IBindCtx *pbc,
561 [in, unique] IMoniker *pmkToLeft,
562 [in] REFIID riidResult,
563 [out, iid_is(riidResult)] void **ppvResult);
565 [call_as(BindToObject)]
566 HRESULT RemoteBindToObject(
567 [in, unique] IBindCtx *pbc,
568 [in, unique] IMoniker *pmkToLeft,
569 [in] REFIID riidResult,
570 [out, iid_is(riidResult)] IUnknown **ppvResult);
573 HRESULT BindToStorage(
574 [in, unique] IBindCtx *pbc,
575 [in, unique] IMoniker *pmkToLeft,
577 [out, iid_is(riid)] void **ppvObj);
579 [call_as(BindToStorage)]
580 HRESULT RemoteBindToStorage(
581 [in, unique] IBindCtx *pbc,
582 [in, unique] IMoniker *pmkToLeft,
584 [out, iid_is(riid)] IUnknown **ppvObj);
587 [in, unique] IBindCtx *pbc,
588 [in] DWORD dwReduceHowFar,
589 [in, out, unique] IMoniker **ppmkToLeft,
590 [out] IMoniker **ppmkReduced);
593 [in, unique] IMoniker *pmkRight,
594 [in] BOOL fOnlyIfNotGeneric,
595 [out] IMoniker **ppmkComposite);
599 [out] IEnumMoniker **ppenumMoniker);
602 [in, unique] IMoniker *pmkOtherMoniker);
605 [out] DWORD *pdwHash);
608 [in, unique] IBindCtx *pbc,
609 [in, unique] IMoniker *pmkToLeft,
610 [in, unique] IMoniker *pmkNewlyRunning);
612 HRESULT GetTimeOfLastChange(
613 [in, unique] IBindCtx *pbc,
614 [in, unique] IMoniker *pmkToLeft,
615 [out] FILETIME *pFileTime);
618 [out] IMoniker **ppmk);
620 HRESULT CommonPrefixWith(
621 [in, unique] IMoniker *pmkOther,
622 [out] IMoniker **ppmkPrefix);
624 HRESULT RelativePathTo(
625 [in, unique] IMoniker *pmkOther,
626 [out] IMoniker **ppmkRelPath);
628 HRESULT GetDisplayName(
629 [in, unique] IBindCtx *pbc,
630 [in, unique] IMoniker *pmkToLeft,
631 [out] LPOLESTR *ppszDisplayName);
633 HRESULT ParseDisplayName(
634 [in, unique] IBindCtx *pbc,
635 [in, unique] IMoniker *pmkToLeft,
636 [in] LPOLESTR pszDisplayName,
637 [out] ULONG *pchEaten,
638 [out] IMoniker **ppmkOut);
640 HRESULT IsSystemMoniker(
641 [out] DWORD *pdwMksys);
646 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
647 pointer_default(unique)
649 interface IROTData : IUnknown
651 HRESULT GetComparisonData(
652 [out, size_is(cbMax)] byte *pbData,
654 [out] ULONG *pcbData);
659 uuid(00000101-0000-0000-C000-000000000046),
660 pointer_default(unique)
662 interface IEnumString : IUnknown
664 typedef [unique] IEnumString *LPENUMSTRING;
669 [out, size_is(celt), length_is(*pceltFetched)]
671 [out] ULONG *pceltFetched);
676 [out, size_is(celt), length_is(*pceltFetched)]
678 [out] ULONG *pceltFetched);
686 [out] IEnumString **ppenum);
691 uuid(00000140-0000-0000-C000-000000000046)
693 interface IClassActivator : IUnknown
695 HRESULT GetClassObject(
696 [in] REFCLSID rclsid,
697 [in] DWORD dwClassContext,
700 [out, iid_is(riid)] void **ppv);
703 /******************** Storage ********************/
707 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
708 pointer_default(unique)
710 interface ISequentialStream : IUnknown
714 [out, size_is(cb), length_is(*pcbRead)]
717 [out] ULONG *pcbRead);
721 [out, size_is(cb), length_is(*pcbRead)]
724 [out] ULONG *pcbRead);
728 [in, size_is(cb)] const void *pv,
730 [out] ULONG *pcbWritten);
734 [in, size_is(cb)] const byte *pv,
736 [out] ULONG *pcbWritten);
741 uuid(0000000c-0000-0000-C000-000000000046),
742 pointer_default(unique)
744 interface IStream : ISequentialStream
746 typedef [unique] IStream *LPSTREAM;
748 typedef struct tagSTATSTG {
751 ULARGE_INTEGER cbSize;
756 DWORD grfLocksSupported;
762 typedef enum tagSTGTY {
769 typedef enum tagSTREAM_SEEK {
775 /* these are defined in Linux's fcntl.h,
776 * undefine them to avoid conflicts */
777 cpp_quote("#undef LOCK_MAND")
778 cpp_quote("#undef LOCK_READ")
779 cpp_quote("#undef LOCK_WRITE")
780 cpp_quote("#undef LOCK_RW")
782 typedef enum tagLOCKTYPE {
790 [in] LARGE_INTEGER dlibMove,
792 [out] ULARGE_INTEGER *plibNewPosition);
796 [in] LARGE_INTEGER dlibMove,
798 [out] ULARGE_INTEGER *plibNewPosition);
801 [in] ULARGE_INTEGER libNewSize);
805 [in, unique] IStream *pstm,
806 [in] ULARGE_INTEGER cb,
807 [out] ULARGE_INTEGER *pcbRead,
808 [out] ULARGE_INTEGER *pcbWritten);
811 HRESULT RemoteCopyTo(
812 [in, unique] IStream *pstm,
813 [in] ULARGE_INTEGER cb,
814 [out] ULARGE_INTEGER *pcbRead,
815 [out] ULARGE_INTEGER *pcbWritten);
818 [in] DWORD grfCommitFlags);
823 [in] ULARGE_INTEGER libOffset,
824 [in] ULARGE_INTEGER cb,
825 [in] DWORD dwLockType);
827 HRESULT UnlockRegion(
828 [in] ULARGE_INTEGER libOffset,
829 [in] ULARGE_INTEGER cb,
830 [in] DWORD dwLockType);
833 [out] STATSTG *pstatstg,
834 [in] DWORD grfStatFlag);
837 [out] IStream **ppstm);
842 uuid(0000000d-0000-0000-C000-000000000046),
843 pointer_default(unique)
845 interface IEnumSTATSTG : IUnknown
847 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
852 [out, size_is(celt), length_is(*pceltFetched)]
854 [out] ULONG *pceltFetched);
859 [out, size_is(celt), length_is(*pceltFetched)]
861 [out] ULONG *pceltFetched);
869 [out] IEnumSTATSTG **ppenum);
874 uuid(0000000b-0000-0000-C000-000000000046),
875 pointer_default(unique)
877 interface IStorage : IUnknown
879 typedef [unique] IStorage *LPSTORAGE;
881 typedef struct tagRemSNB {
882 unsigned long ulCntStr;
883 unsigned long ulCntChar;
884 [size_is(ulCntChar)] OLECHAR rgString[];
887 typedef [unique] RemSNB *wireSNB;
888 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
890 HRESULT CreateStream(
891 [in] LPCOLESTR pwcsName,
893 [in] DWORD reserved1,
894 [in] DWORD reserved2,
895 [out] IStream **ppstm);
899 [in] LPCOLESTR pwcsName,
900 [in, unique] void *reserved1,
902 [in] DWORD reserved2,
903 [out] IStream **ppstm);
905 [call_as(OpenStream)]
906 HRESULT RemoteOpenStream(
907 [in] LPCOLESTR pwcsName,
908 [in] unsigned long cbReserved1,
909 [in, unique, size_is(cbReserved1)] byte *reserved1,
911 [in] DWORD reserved2,
912 [out] IStream **ppstm);
914 HRESULT CreateStorage(
915 [in] LPCOLESTR pwcsName,
918 [in] DWORD reserved2,
919 [out] IStorage **ppstg);
922 [in, unique] LPCOLESTR pwcsName,
923 [in, unique] IStorage *pstgPriority,
925 [in, unique] SNB snbExclude,
927 [out] IStorage **ppstg);
930 [in] DWORD ciidExclude,
931 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
932 [in, unique] SNB snbExclude,
933 [in, unique] IStorage *pstgDest);
935 HRESULT MoveElementTo(
936 [in] LPCOLESTR pwcsName,
937 [in, unique] IStorage *pstgDest,
938 [in] LPCOLESTR pwcsNewName,
939 [in] DWORD grfFlags);
942 [in] DWORD grfCommitFlags);
947 HRESULT EnumElements(
948 [in] DWORD reserved1,
949 [in, unique, size_is(1)] void *reserved2,
950 [in] DWORD reserved3,
951 [out] IEnumSTATSTG **ppenum);
953 [call_as(EnumElements)]
954 HRESULT RemoteEnumElements(
955 [in] DWORD reserved1,
956 [in] unsigned long cbReserved2,
957 [in, unique, size_is(cbReserved2)] byte *reserved2,
958 [in] DWORD reserved3,
959 [out] IEnumSTATSTG **ppenum);
961 HRESULT DestroyElement(
962 [in] LPCOLESTR pwcsName);
964 HRESULT RenameElement(
965 [in] LPCOLESTR pwcsOldName,
966 [in] LPCOLESTR pwcsNewName);
968 HRESULT SetElementTimes(
969 [in, unique] LPCOLESTR pwcsName,
970 [in, unique] const FILETIME *pctime,
971 [in, unique] const FILETIME *patime,
972 [in, unique] const FILETIME *pmtime);
975 [in] REFCLSID clsid);
977 HRESULT SetStateBits(
978 [in] DWORD grfStateBits,
982 [out] STATSTG *pstatstg,
983 [in] DWORD grfStatFlag);
988 uuid(0000010b-0000-0000-C000-000000000046),
989 pointer_default(unique)
991 interface IPersistFile : IPersist
993 typedef [unique] IPersistFile *LPPERSISTFILE;
998 [in] LPCOLESTR pszFileName,
1002 [in, unique] LPCOLESTR pszFileName,
1003 [in] BOOL fRemember);
1005 HRESULT SaveCompleted(
1006 [in, unique] LPCOLESTR pszFileName);
1009 [out] LPOLESTR *ppszFileName);
1014 uuid(0000010a-0000-0000-C000-000000000046),
1015 pointer_default(unique)
1017 interface IPersistStorage : IPersist
1019 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1024 [in, unique] IStorage *pStg);
1027 [in, unique] IStorage *pStg);
1030 [in, unique] IStorage *pStgSave,
1031 [in] BOOL fSameAsLoad);
1033 HRESULT SaveCompleted(
1034 [in, unique] IStorage *pStgNew);
1036 HRESULT HandsOffStorage();
1041 uuid(00000012-0000-0000-C000-000000000046),
1042 pointer_default(unique)
1044 interface IRootStorage : IUnknown
1046 typedef [unique] IRootStorage *LPROOTSTORAGE;
1048 HRESULT SwitchToFile(
1049 [in] LPOLESTR pszFile);
1054 uuid(0000000a-0000-0000-C000-000000000046),
1055 pointer_default(unique)
1057 interface ILockBytes : IUnknown
1059 typedef [unique] ILockBytes *LPLOCKBYTES;
1063 [in] ULARGE_INTEGER ulOffset,
1064 [out, size_is(cb), length_is(*pcbRead)]
1067 [out] ULONG *pcbRead);
1070 HRESULT RemoteReadAt(
1071 [in] ULARGE_INTEGER ulOffset,
1072 [out, size_is(cb), length_is(*pcbRead)]
1075 [out] ULONG *pcbRead);
1079 [in] ULARGE_INTEGER ulOffset,
1080 [in, size_is(cb)] const void *pv,
1082 [out] ULONG *pcbWritten);
1085 HRESULT RemoteWriteAt(
1086 [in] ULARGE_INTEGER ulOffset,
1087 [in, size_is(cb)] const byte *pv,
1089 [out] ULONG *pcbWritten);
1094 [in] ULARGE_INTEGER cb);
1097 [in] ULARGE_INTEGER libOffset,
1098 [in] ULARGE_INTEGER cb,
1099 [in] DWORD dwLockType);
1101 HRESULT UnlockRegion(
1102 [in] ULARGE_INTEGER libOffset,
1103 [in] ULARGE_INTEGER cb,
1104 [in] DWORD dwLockType);
1107 [out] STATSTG *pstatstg,
1108 [in] DWORD grfStatFlag);
1113 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1114 pointer_default(unique)
1116 interface IFillLockBytes : IUnknown
1120 [in, size_is(cb)] const void *pv,
1122 [out] ULONG *pcbWritten);
1124 [call_as(FillAppend)]
1125 HRESULT RemoteFillAppend(
1126 [in, size_is(cb)] const byte *pv,
1128 [out] ULONG *pcbWritten);
1132 [in] ULARGE_INTEGER ulOffset,
1133 [in, size_is(cb)] const void *pv,
1135 [out] ULONG *pcbWritten);
1138 HRESULT RemoteFillAt(
1139 [in] ULARGE_INTEGER ulOffset,
1140 [in, size_is(cb)] const byte *pv,
1142 [out] ULONG *pcbWritten);
1144 HRESULT SetFillSize(
1145 [in] ULARGE_INTEGER ulSize);
1148 [in] BOOL bCanceled);
1153 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1154 pointer_default(unique)
1156 interface IProgressNotify : IUnknown
1159 [in] DWORD dwProgressCurrent,
1160 [in] DWORD dwProgressMaximum,
1161 [in] BOOL fAccurate,
1168 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1169 pointer_default(unique)
1171 interface ILayoutStorage : IUnknown
1173 typedef struct tagStorageLayout {
1175 OLECHAR *pwcsElementName;
1176 LARGE_INTEGER cOffset;
1177 LARGE_INTEGER cBytes;
1180 HRESULT LayoutScript(
1181 [in] StorageLayout *pStorageLayout,
1182 [in] DWORD nEntries,
1183 [in] DWORD glfInterleavedFlag);
1185 HRESULT BeginMonitor();
1187 HRESULT EndMonitor();
1189 HRESULT ReLayoutDocfile(
1190 [in] OLECHAR *pwcsNewDfName);
1192 HRESULT ReLayoutDocfileOnILockBytes(
1193 [in] ILockBytes *pILockBytes);
1198 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
1200 interface IBlockingLock : IUnknown
1203 [in] DWORD dwTimeout);
1211 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
1213 interface ITimeAndNoticeControl : IUnknown
1215 HRESULT SuppressChanges(
1225 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
1227 interface IOplockStorage: IUnknown
1229 HRESULT CreateStorageEx(
1230 [in] LPCWSTR pwcsName,
1233 [in] DWORD grfAttrs,
1235 [out, iid_is(riid)] void **ppstgOpen);
1237 HRESULT OpenStorageEx(
1238 [in] LPCWSTR pwcsName,
1241 [in] DWORD grfAttrs,
1243 [out, iid_is(riid)] void **ppstgOpen);
1246 /******************** Data Object ********************/
1250 uuid(00000103-0000-0000-C000-000000000046),
1251 pointer_default(unique)
1253 interface IEnumFORMATETC : IUnknown
1255 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1257 typedef struct tagDVTARGETDEVICE {
1259 WORD tdDriverNameOffset;
1260 WORD tdDeviceNameOffset;
1261 WORD tdPortNameOffset;
1262 WORD tdExtDevmodeOffset;
1263 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1267 typedef CLIPFORMAT *LPCLIPFORMAT;
1269 typedef struct tagFORMATETC {
1270 CLIPFORMAT cfFormat;
1271 [unique] DVTARGETDEVICE *ptd;
1275 } FORMATETC, *LPFORMATETC;
1280 [out, size_is(celt), length_is(*pceltFetched)]
1282 [out] ULONG *pceltFetched);
1287 [out, size_is(celt), length_is(*pceltFetched)]
1289 [out] ULONG *pceltFetched);
1297 [out] IEnumFORMATETC **ppenum);
1302 uuid(00000105-0000-0000-C000-000000000046),
1303 pointer_default(unique)
1305 interface IEnumSTATDATA : IUnknown
1307 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1309 typedef enum tagADVF {
1311 ADVF_PRIMEFIRST = 2,
1313 ADVF_DATAONSTOP = 64,
1314 ADVFCACHE_NOHANDLER = 8,
1315 ADVFCACHE_FORCEBUILTIN = 16,
1316 ADVFCACHE_ONSAVE = 32
1319 typedef struct tagSTATDATA
1321 FORMATETC formatetc;
1323 [unique] IAdviseSink *pAdvSink;
1325 } STATDATA, *LPSTATDATA;
1330 [out, size_is(celt), length_is(*pceltFetched)]
1332 [out] ULONG *pceltFetched);
1337 [out, size_is(celt), length_is(*pceltFetched)]
1339 [out] ULONG *pceltFetched);
1347 [out] IEnumSTATDATA **ppenum);
1352 uuid(0000010f-0000-0000-C000-000000000046),
1353 pointer_default(unique)
1355 interface IAdviseSink : IUnknown
1357 typedef IAdviseSink *LPADVISESINK;
1359 typedef [v1_enum] enum tagTYMED {
1370 typedef struct tagRemSTGMEDIUM {
1373 unsigned long pData;
1374 unsigned long pUnkForRelease;
1375 unsigned long cbData;
1376 [size_is(cbData)] byte data[];
1379 /* FIXME: C/C++ nameless union version */
1380 typedef struct tagSTGMEDIUM {
1382 [switch_is(tymed)] union {
1383 [case(TYMED_GDI)] HBITMAP hBitmap;
1384 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1385 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1386 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1387 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1388 [case(TYMED_ISTREAM)] IStream *pstm;
1389 [case(TYMED_ISTORAGE)] IStorage *pstg;
1392 [unique] IUnknown *pUnkForRelease;
1395 /* copied from wingdi.h */
1399 #define OBJ_METADC 4
1402 #define OBJ_BITMAP 7
1403 #define OBJ_REGION 8
1404 #define OBJ_METAFILE 9
1405 #define OBJ_MEMDC 10
1406 #define OBJ_EXTPEN 11
1407 #define OBJ_ENHMETADC 12
1408 #define OBJ_ENHMETAFILE 13
1410 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1411 case OBJ_BITMAP: wireHBITMAP hBitmap;
1412 case OBJ_PAL: wireHPALETTE hPalette;
1413 default: wireHGLOBAL hGeneric;
1416 typedef struct _userSTGMEDIUM {
1417 union switch(DWORD tymed) u {
1419 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1420 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1421 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1422 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1423 case TYMED_FILE: LPOLESTR lpszFileName;
1424 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1425 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1427 IUnknown *pUnkForRelease;
1430 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1431 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1433 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1434 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1436 typedef STGMEDIUM *LPSTGMEDIUM;
1438 typedef struct _userFLAG_STGMEDIUM {
1440 long fPassOwnership;
1441 userSTGMEDIUM Stgmed;
1442 } userFLAG_STGMEDIUM;
1444 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1446 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1448 long fPassOwnership;
1454 [in, unique] FORMATETC *pFormatetc,
1455 [in, unique] STGMEDIUM *pStgmed);
1457 [call_as(OnDataChange), async]
1458 HRESULT RemoteOnDataChange(
1459 [in] IAsyncManager **ppIAM,
1460 [in, unique] FORMATETC *pFormatetc,
1461 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1465 [in] DWORD dwAspect,
1468 [call_as(OnViewChange), async]
1469 HRESULT RemoteOnViewChange(
1470 [in] IAsyncManager **ppIAM,
1471 [in] DWORD dwAspect,
1476 [in] IMoniker *pmk);
1478 [call_as(OnRename), async]
1479 HRESULT RemoteOnRename(
1480 [in] IAsyncManager **ppIAM,
1481 [in] IMoniker *pmk);
1486 [call_as(OnSave), async]
1487 HRESULT RemoteOnSave(
1488 [in] IAsyncManager **ppIAM);
1494 HRESULT RemoteOnClose();
1499 uuid(00000125-0000-0000-C000-000000000046),
1500 pointer_default(unique)
1502 interface IAdviseSink2 : IAdviseSink
1504 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1507 void OnLinkSrcChange(
1508 [in, unique] IMoniker *pmk);
1510 [call_as(OnLinkSrcChange), async]
1511 HRESULT RemoteOnLinkSrcChange(
1512 [in] IAsyncManager **ppIAM,
1513 [in, unique] IMoniker *pmk);
1518 uuid(0000010e-0000-0000-C000-000000000046),
1519 pointer_default(unique)
1521 interface IDataObject : IUnknown
1523 typedef [unique] IDataObject *LPDATAOBJECT;
1525 typedef enum tagDATADIR {
1532 [in, unique] FORMATETC *pformatetcIn,
1533 [out] STGMEDIUM *pmedium);
1536 HRESULT RemoteGetData(
1537 [in, unique] FORMATETC *pformatetcIn,
1538 [out] STGMEDIUM *pRemoteMedium);
1541 HRESULT GetDataHere(
1542 [in, unique] FORMATETC *pformatetc,
1543 [in, out] STGMEDIUM *pmedium);
1545 [call_as(GetDataHere)]
1546 HRESULT RemoteGetDataHere(
1547 [in, unique] FORMATETC *pformatetc,
1548 [in, out] STGMEDIUM *pRemoteMedium);
1550 HRESULT QueryGetData(
1551 [in, unique] FORMATETC *pformatetc);
1553 HRESULT GetCanonicalFormatEtc(
1554 [in, unique] FORMATETC *pformatectIn,
1555 [out] FORMATETC *pformatetcOut);
1559 [in, unique] FORMATETC *pformatetc,
1560 [in, unique] STGMEDIUM *pmedium,
1561 [in] BOOL fRelease);
1564 HRESULT RemoteSetData(
1565 [in, unique] FORMATETC *pformatetc,
1566 [in, unique] FLAG_STGMEDIUM *pmedium,
1567 [in] BOOL fRelease);
1569 HRESULT EnumFormatEtc(
1570 [in] DWORD dwDirection,
1571 [out] IEnumFORMATETC **ppenumFormatEtc);
1574 [in] FORMATETC *pformatetc,
1576 [in, unique] IAdviseSink *pAdvSink,
1577 [out] DWORD *pdwConnection);
1580 [in] DWORD dwConnection);
1582 HRESULT EnumDAdvise(
1583 [out] IEnumSTATDATA **ppenumAdvise);
1589 uuid(00000110-0000-0000-C000-000000000046)
1591 interface IDataAdviseHolder : IUnknown
1593 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1596 [in, unique] IDataObject *pDataObject,
1597 [in, unique] FORMATETC *pFetc,
1599 [in, unique] IAdviseSink *pAdvise,
1600 [out] DWORD *pdwConnection);
1603 [in] DWORD dwConnection);
1606 [out] IEnumSTATDATA **ppenumAdvise);
1608 HRESULT SendOnDataChange(
1609 [in, unique] IDataObject *pDataObject,
1610 [in] DWORD dwReserved,
1614 /******************** Remoting ********************/
1619 uuid(00000016-0000-0000-C000-000000000046)
1621 interface IMessageFilter : IUnknown
1623 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1625 typedef enum tagCALLTYPE {
1626 CALLTYPE_TOPLEVEL = 1,
1627 CALLTYPE_NESTED = 2,
1629 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1630 CALLTYPE_ASYNC_CALLPENDING = 5
1633 typedef enum tagSERVERCALL {
1634 SERVERCALL_ISHANDLED = 0,
1635 SERVERCALL_REJECTED = 1,
1636 SERVERCALL_RETRYLATER = 2
1639 typedef enum tagPENDINGTYPE {
1640 PENDINGTYPE_TOPLEVEL = 1,
1641 PENDINGTYPE_NESTED = 2
1644 typedef enum tagPENDINGMSG {
1645 PENDINGMSG_CANCELCALL = 0,
1646 PENDINGMSG_WAITNOPROCESS = 1,
1647 PENDINGMSG_WAITDEFPROCESS = 2
1650 typedef struct tagINTERFACEINFO {
1654 } INTERFACEINFO, *LPINTERFACEINFO;
1656 DWORD HandleInComingCall(
1657 [in] DWORD dwCallType,
1658 [in] HTASK htaskCaller,
1659 [in] DWORD dwTickCount,
1660 [in] LPINTERFACEINFO lpInterfaceInfo);
1662 DWORD RetryRejectedCall(
1663 [in] HTASK htaskCallee,
1664 [in] DWORD dwTickCount,
1665 [in] DWORD dwRejectType);
1667 DWORD MessagePending(
1668 [in] HTASK htaskCallee,
1669 [in] DWORD dwTickCount,
1670 [in] DWORD dwPendingType);
1676 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1678 interface IRpcChannelBuffer : IUnknown
1680 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1682 typedef unsigned long RPCOLEDATAREP;
1684 typedef struct tagRPCOLEMESSAGE {
1686 RPCOLEDATAREP dataRepresentation;
1694 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1697 [in] RPCOLEMESSAGE *pMessage,
1700 HRESULT SendReceive(
1701 [in,out] RPCOLEMESSAGE *pMessage,
1702 [out] ULONG *pStatus);
1705 [in] RPCOLEMESSAGE *pMessage);
1708 [out] DWORD *pdwDestContext,
1709 [out] void **ppvDestContext);
1711 HRESULT IsConnected();
1717 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1719 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1721 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1723 HRESULT GetProtocolVersion(
1724 [in,out] DWORD *pdwVersion);
1730 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1732 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1734 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1737 [in,out] RPCOLEMESSAGE *pMsg,
1738 [out] ULONG *pulStatus);
1741 [in,out] RPCOLEMESSAGE *pMsg,
1743 [out] ULONG *pulStatus);
1746 [in] RPCOLEMESSAGE *pMsg);
1748 HRESULT GetCallContext(
1749 [in] RPCOLEMESSAGE *pMsg,
1751 [out] void **pInterface);
1753 HRESULT GetDestCtxEx(
1754 [in] RPCOLEMESSAGE *pMsg,
1755 [out] DWORD *pdwDestContext,
1756 [out] void **ppvDestContext);
1759 [in] RPCOLEMESSAGE *pMsg,
1760 [out] DWORD *pState);
1762 HRESULT RegisterAsync(
1763 [in] RPCOLEMESSAGE *pMsg,
1764 [in] IAsyncManager *pAsyncMgr);
1770 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
1771 pointer_default(unique)
1773 interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
1776 [in, out] RPCOLEMESSAGE *pMsg,
1777 [in] ISynchronize *pSync,
1778 [out] ULONG *pulStatus);
1781 [in, out] RPCOLEMESSAGE *pMsg,
1782 [out] ULONG *pulStatus);
1784 HRESULT GetDestCtxEx(
1785 [in] RPCOLEMESSAGE *pMsg,
1786 [out] DWORD *pdwDestContext,
1787 [out] void **ppvDestContext);
1793 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
1795 interface IRpcSyntaxNegotiate : IUnknown
1797 HRESULT NegotiateSyntax(
1798 [in, out] RPCOLEMESSAGE *pMsg);
1804 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1806 interface IRpcProxyBuffer : IUnknown
1808 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1811 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1819 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1821 interface IRpcStubBuffer : IUnknown
1823 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1826 [in] IUnknown *pUnkServer);
1831 [in] RPCOLEMESSAGE *_prpcmsg,
1832 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1834 IRpcStubBuffer *IsIIDSupported(
1839 HRESULT DebugServerQueryInterface(
1842 void DebugServerRelease(
1849 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1851 interface IPSFactoryBuffer : IUnknown
1853 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1855 HRESULT CreateProxy(
1856 [in] IUnknown *pUnkOuter,
1858 [out] IRpcProxyBuffer **ppProxy,
1863 [in, unique] IUnknown *pUnkServer,
1864 [out] IRpcStubBuffer **ppStub);
1870 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1872 interface IChannelHook : IUnknown
1874 typedef [unique] IChannelHook *LPCHANNELHOOK;
1876 typedef struct SChannelHookCallInfo {
1883 } SChannelHookCallInfo;
1886 [in] REFGUID uExtent,
1888 [out] ULONG *pDataSize);
1890 void ClientFillBuffer(
1891 [in] REFGUID uExtent,
1893 [in, out] ULONG *pDataSize,
1894 [in] void *pDataBuffer);
1897 [in] REFGUID uExtent,
1899 [in] ULONG cbDataSize,
1900 [in] void *pDataBuffer,
1901 [in] DWORD lDataRep,
1902 [in] HRESULT hrFault);
1905 [in] REFGUID uExtent,
1907 [in] ULONG cbDataSize,
1908 [in] void *pDataBuffer,
1909 [in] DWORD lDataRep);
1912 [in] REFGUID uExtent,
1914 [in] HRESULT hrFault,
1915 [out] ULONG *pDataSize);
1917 void ServerFillBuffer(
1918 [in] REFGUID uExtent,
1920 [in, out] ULONG *pDataSize,
1921 [in] void *pDataBuffer,
1922 [in] HRESULT hrFault );
1925 extern const FMTID FMTID_SummaryInformation;
1926 extern const FMTID FMTID_DocSummaryInformation;
1927 extern const FMTID FMTID_UserDefinedProperties;
1930 /******************** Connection Points ********************/
1933 /******************** DCOM ********************/
1938 uuid(0000013D-0000-0000-C000-000000000046)
1940 interface IClientSecurity : IUnknown
1942 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1945 OLECHAR *pPrincipalName;
1947 } SOLE_AUTHENTICATION_SERVICE;
1949 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1951 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1953 EOAC_MUTUAL_AUTH = 0x1,
1954 EOAC_CLOAKING = 0x10,
1955 EOAC_SECURE_REFS = 0x2,
1956 EOAC_ACCESS_CONTROL = 0x4,
1958 } EOLE_AUTHENTICATION_CAPABILITIES;
1960 HRESULT QueryBlanket(
1961 [in] IUnknown *pProxy,
1962 [out] DWORD *pAuthnSvc,
1963 [out] DWORD *pAuthzSvc,
1964 [out] OLECHAR **pServerPrincName,
1965 [out] DWORD *pAuthnLevel,
1966 [out] DWORD *pImpLevel,
1967 [out] void **pAuthInfo,
1968 [out] DWORD *pCapabilites);
1971 [in] IUnknown *pProxy,
1972 [in] DWORD AuthnSvc,
1973 [in] DWORD AuthzSvc,
1974 [in] OLECHAR *pServerPrincName,
1975 [in] DWORD AuthnLevel,
1976 [in] DWORD ImpLevel,
1977 [in] void *pAuthInfo,
1978 [in] DWORD Capabilities);
1981 [in] IUnknown *pProxy,
1982 [out] IUnknown **ppCopy);
1988 uuid(0000013E-0000-0000-C000-000000000046)
1990 interface IServerSecurity : IUnknown
1992 HRESULT QueryBlanket(
1993 [out] DWORD *pAuthnSvc,
1994 [out] DWORD *pAuthzSvc,
1995 [out] OLECHAR **pServerPrincName,
1996 [out] DWORD *pAuthnLevel,
1997 [out] DWORD *pImpLevel,
1998 [out] void **pPrivs,
1999 [out] DWORD *pCapabilities);
2001 HRESULT ImpersonateClient();
2003 HRESULT RevertToSelf();
2005 BOOL IsImpersonating();
2011 uuid(00000024-0000-0000-C000-000000000046)
2013 interface IAsyncSetup : IUnknown
2015 HRESULT GetAsyncManager(
2017 [in] IUnknown *pOuter,
2019 [out] IUnknown **ppInner,
2020 [out] IAsyncManager **ppAsyncMgr);
2025 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
2027 interface IDirectWriterLock : IUnknown
2029 HRESULT WaitForWriteAccess(
2030 [in] DWORD dwTimeout);
2032 HRESULT ReleaseWriteAccess();
2034 HRESULT HaveWriteAccess();
2039 uuid(00000030-0000-0000-C000-000000000046)
2042 interface ISynchronize : IUnknown
2046 [in] DWORD dwMilliseconds);
2057 uuid(00000031-0000-0000-C000-000000000046)
2059 interface ISynchronizeHandle : IUnknown
2069 uuid(00000032-0000-0000-C000-000000000046)
2071 interface ISynchronizeEvent : ISynchronizeHandle
2073 HRESULT SetEventHandle(
2081 uuid(00000033-0000-0000-C000-000000000046)
2083 interface ISynchronizeContainer : IUnknown
2085 HRESULT AddSynchronize(
2086 [in] ISynchronize *pSync);
2088 HRESULT WaitMultiple(
2090 [in] DWORD dwTimeOut,
2091 [out] ISynchronize **ppSync);
2097 uuid(00000025-0000-0000-C000-000000000046)
2099 interface ISynchronizeMutex : ISynchronize
2101 HRESULT ReleaseMutex();
2107 uuid(00000029-0000-0000-C000-000000000046)
2110 interface ICancelMethodCalls : IUnknown
2112 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2115 [in] ULONG ulSeconds);
2117 HRESULT TestCancel();
2123 uuid(0000002A-0000-0000-C000-000000000046)
2125 interface IAsyncManager : IUnknown
2127 typedef enum tagDCOM_CALL_STATE {
2129 DCOM_CALL_COMPLETE = 1,
2130 DCOM_CALL_CANCELED = 2
2133 HRESULT CompleteCall(
2134 [in] HRESULT Result);
2136 HRESULT GetCallContext(
2138 [out] void **pInterface);
2141 [out] ULONG *pulStateFlags);
2147 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
2148 pointer_default(unique)
2150 interface ICallFactory : IUnknown
2154 [in] IUnknown *pCtrlUnk,
2156 [out, iid_is(riid2)] IUnknown **ppv);
2162 uuid(00000144-0000-0000-C000-000000000046)
2164 interface IRpcOptions : IUnknown
2167 [in] IUnknown *pPrx,
2168 [in] DWORD dwProperty,
2169 [in] ULONG_PTR dwValue);
2172 [in] IUnknown *pPrx,
2173 [in] DWORD dwProperty,
2174 [out] ULONG_PTR *pdwValue);
2178 COMBND_RPCTIMEOUT = 1,
2179 COMBND_SERVER_LOCALITY = 2
2183 SERVER_LOCALITY_PROCESS_LOCAL = 0,
2184 SERVER_LOCALITY_MACHINE_LOCAL = 1,
2185 SERVER_LOCALITY_REMOTE = 2
2191 uuid(00000149-0000-0000-C000-000000000046),
2192 pointer_default(unique)
2194 interface IRpcHelper : IUnknown
2196 HRESULT GetDCOMProtocolVersion(
2197 [out] DWORD *pComVersion);
2199 HRESULT GetIIDFromOBJREF(
2207 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
2209 interface IReleaseMarshalBuffers : IUnknown
2211 HRESULT ReleaseMarshalBuffer(
2212 [in] RPCOLEMESSAGE *pMsg,
2214 [in, unique] IUnknown *pChnl);
2220 uuid(0000002B-0000-0000-C000-000000000046)
2222 interface IWaitMultiple : IUnknown
2224 HRESULT WaitMultiple(
2226 [out] ISynchronize **pSync);
2227 HRESULT AddSynchronize(
2228 [in] ISynchronize *pSync);
2234 uuid(00000026-0000-0000-C000-000000000046)
2236 interface IUrlMon : IUnknown
2238 HRESULT AsyncGetClassBits(
2239 [in] REFCLSID rclsid,
2240 [in, unique] LPCWSTR pszTYPE,
2241 [in, unique] LPCWSTR pszExt,
2242 [in] DWORD dwFileVersionMS,
2243 [in] DWORD dwFileVersionLS,
2244 [in, unique] LPCWSTR pszCodeBase,
2246 [in] DWORD dwClassContext,
2254 uuid(00000145-0000-0000-C000-000000000046)
2256 interface IForegroundTransfer : IUnknown
2258 HRESULT AllowForegroundTransfer(
2259 [in] void *lpvReserved);
2265 uuid(00000147-0000-0000-C000-000000000046)
2267 interface IAddrTrackingControl : IUnknown
2269 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
2271 HRESULT EnableCOMDynamicAddrTracking();
2272 HRESULT DisableCOMDynamicAddrTracking();
2278 uuid(00000148-0000-0000-C000-000000000046)
2280 interface IAddrExclusionControl : IUnknown
2282 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
2284 HRESULT GetCurrentAddrExclusionList(
2286 [out, iid_is(riid)] void **ppEnumerator);
2287 HRESULT UpdateAddrExclusionList(
2288 [in] IUnknown *pEnumerator);
2291 typedef enum _APTTYPE {
2292 APTTYPE_CURRENT = -1,
2299 typedef enum _THDTYPE {
2300 THDTYPE_BLOCKMESSAGES = 0,
2301 THDTYPE_PROCESSMESSAGES = 1
2307 uuid(000001ce-0000-0000-C000-000000000046),
2308 pointer_default(unique)
2310 interface IComThreadingInfo : IUnknown
2312 HRESULT GetCurrentApartmentType(
2313 [out] APTTYPE *pAptType);
2314 HRESULT GetCurrentThreadType(
2315 [out] THDTYPE *pThreadType);
2316 HRESULT GetCurrentLogicalThreadId(
2317 [out] GUID *pguidLogicalThreadId);
2318 HRESULT SetCurrentLogicalThreadId(
2319 [in] REFGUID rguid);
2325 pointer_default(unique),
2326 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
2328 interface IProcessInitControl : IUnknown
2330 HRESULT ResetInitializerTimeout(
2331 [in] DWORD dwSecondsRemaining);
2337 uuid(00000034-0000-0000-C000-000000000046),
2338 pointer_default(unique)
2340 interface IInitializeSpy : IUnknown
2342 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
2344 HRESULT PreInitialize(
2345 [in] DWORD dwCoInit,
2346 [in] DWORD dwCurThreadAptRefs);
2348 HRESULT PostInitialize(
2349 [in] HRESULT hrCoInit,
2350 [in] DWORD dwCoInit,
2351 [in] DWORD dwNewThreadAptRefs);
2353 HRESULT PreUninitialize(
2354 [in] DWORD dwCurThreadAptRefs);
2356 HRESULT PostUninitialize(
2357 [in] DWORD dwNewThreadAptRefs);
2362 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
2364 interface IThumbnailExtractor : IUnknown
2366 HRESULT ExtractThumbnail(
2367 [in] IStorage *pStg,
2368 [in] ULONG ulLength,
2369 [in] ULONG ulHeight,
2370 [out] ULONG *pulOutputLength,
2371 [out] ULONG *pulOutputHeight,
2372 [out] HBITMAP *phOutputBitmap);
2375 HRESULT OnFileUpdated(
2376 [in] IStorage *pStg);