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;
28 /* FIXME: COSERVERINFO should be moved here from wtypes.idl */
30 /******************** Fundamentals ********************/
35 uuid(00000003-0000-0000-C000-000000000046)
37 interface IMarshal : IUnknown
39 typedef [unique] IMarshal *LPMARSHAL;
41 HRESULT GetUnmarshalClass(
43 [in, unique] void *pv,
44 [in] DWORD dwDestContext,
45 [in, unique] void *pvDestContext,
49 HRESULT GetMarshalSizeMax(
51 [in, unique] void *pv,
52 [in] DWORD dwDestContext,
53 [in, unique] void *pvDestContext,
57 HRESULT MarshalInterface(
58 [in, unique] IStream *pStm,
60 [in, unique] void *pv,
61 [in] DWORD dwDestContext,
62 [in, unique] void *pvDestContext,
63 [in] DWORD mshlflags);
65 HRESULT UnmarshalInterface(
66 [in, unique] IStream *pStm,
70 HRESULT ReleaseMarshalData(
71 [in, unique] IStream *pStm);
73 HRESULT DisconnectObject(
74 [in] DWORD dwReserved);
80 uuid(00000018-0000-0000-C000-000000000046)
82 interface IStdMarshalInfo : IUnknown
84 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
86 HRESULT GetClassForHandler(
87 [in] DWORD dwDestContext,
88 [in, unique] void *pvDestContext,
95 uuid(00000019-0000-0000-C000-000000000046)
97 interface IExternalConnection : IUnknown
99 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
101 typedef enum tagEXTCONN {
102 EXTCONN_STRONG = 0x0001,
103 EXTCONN_WEAK = 0x0002,
104 EXTCONN_CALLABLE = 0x0004
109 [in] DWORD reserved);
111 DWORD ReleaseConnection(
114 [in] BOOL fLastReleaseCloses);
120 uuid(00000020-0000-0000-C000-000000000046)
122 interface IMultiQI : IUnknown
124 typedef [unique] IMultiQI *LPMULTIQI;
126 typedef struct tagMULTI_QI {
132 HRESULT QueryMultipleInterfaces(
134 [in, out] MULTI_QI *pMQIs);
140 uuid(00000002-0000-0000-C000-000000000046)
142 interface IMalloc : IUnknown
144 typedef [unique] IMalloc *LPMALLOC;
159 int DidAlloc(LPVOID pv);
167 uuid(0000001d-0000-0000-C000-000000000046)
169 interface IMallocSpy : IUnknown
171 typedef [unique] IMallocSpy *LPMALLOCSPY;
174 [in] ULONG cbRequest);
177 [in] LPVOID pActual);
180 [in] LPVOID pRequest,
187 [in] LPVOID pRequest,
188 [in] ULONG cbRequest,
189 [out] LPVOID *ppNewRequest,
197 [in] LPVOID pRequest,
205 [in] LPVOID pRequest,
209 [in] LPVOID pRequest,
213 void PreHeapMinimize();
215 void PostHeapMinimize();
221 uuid(00000021-0000-0000-C000-000000000046)
223 interface IInternalUnknown : IUnknown
225 HRESULT QueryInternalInterface(
232 uuid(00000100-0000-0000-C000-000000000046),
233 pointer_default(unique)
235 interface IEnumUnknown : IUnknown
237 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
242 [out] IUnknown **rgelt,
243 [out] ULONG *pceltFetched);
248 [out, size_is(celt), length_is(*pceltFetched)]
250 [out] ULONG *pceltFetched);
258 [out] IEnumUnknown **ppenum);
263 uuid(00000022-0000-0000-C000-000000000046),
265 pointer_default(unique)
267 interface ISurrogate : IUnknown
269 typedef [unique] ISurrogate *LPSURROGATE;
271 HRESULT LoadDllServer(
272 [in] REFCLSID Clsid);
273 HRESULT FreeSurrogate();
279 uuid(00000146-0000-0000-C000-000000000046)
281 interface IGlobalInterfaceTable : IUnknown
283 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
285 HRESULT RegisterInterfaceInGlobal(
288 [out] DWORD *pdwCookie);
290 HRESULT RevokeInterfaceFromGlobal(
291 [in] DWORD dwCookie);
293 HRESULT GetInterfaceFromGlobal(
296 [out, iid_is(riid)] void **ppv);
299 /******************** Monikers ********************/
303 uuid(0000000e-0000-0000-C000-000000000046),
304 pointer_default(unique)
306 interface IBindCtx : IUnknown
308 typedef [unique] IBindCtx *LPBINDCTX;
309 typedef [unique] IBindCtx *LPBC;
311 typedef struct tagBIND_OPTS {
315 DWORD dwTickCountDeadline;
316 } BIND_OPTS, *LPBIND_OPTS;
318 /* FIXME: C++ crap */
319 typedef struct tagBIND_OPTS2 {
323 DWORD dwTickCountDeadline;
325 DWORD dwClassContext;
327 COSERVERINFO *pServerInfo;
328 } BIND_OPTS2, *LPBIND_OPTS2;
330 typedef enum tagBIND_FLAGS {
331 BIND_MAYBOTHERUSER = 1,
332 BIND_JUSTTESTEXISTENCE = 2
335 HRESULT RegisterObjectBound(
336 [in, unique] IUnknown *punk);
338 HRESULT RevokeObjectBound(
339 [in, unique] IUnknown *punk);
341 HRESULT ReleaseBoundObjects();
344 HRESULT SetBindOptions(
345 [in] BIND_OPTS *pbindopts);
347 [call_as(SetBindOptions)]
348 HRESULT RemoteSetBindOptions(
349 [in] BIND_OPTS2 *pbindopts);
352 HRESULT GetBindOptions(
353 [in, out] BIND_OPTS *pbindopts);
355 [call_as(GetBindOptions)]
356 HRESULT RemoteGetBindOptions(
357 [in, out] BIND_OPTS2 *pbindopts);
359 HRESULT GetRunningObjectTable(
360 [out] IRunningObjectTable **pprot);
362 HRESULT RegisterObjectParam(
363 [in] LPOLESTR pszKey,
364 [in, unique] IUnknown *punk);
366 HRESULT GetObjectParam(
367 [in] LPOLESTR pszKey,
368 [out] IUnknown **ppunk);
370 HRESULT EnumObjectParam(
371 [out] IEnumString **ppenum);
373 HRESULT RevokeObjectParam(
374 [in] LPOLESTR pszKey);
379 uuid(00000102-0000-0000-C000-000000000046),
380 pointer_default(unique)
382 interface IEnumMoniker : IUnknown
384 typedef [unique] IEnumMoniker *LPENUMMONIKER;
389 [out, size_is(celt), length_is(*pceltFetched)]
391 [out] ULONG *pceltFetched);
396 [out, size_is(celt), length_is(*pceltFetched)]
398 [out] ULONG *pceltFetched);
406 [out] IEnumMoniker **ppenum);
411 uuid(00000126-0000-0000-C000-000000000046)
413 interface IRunnableObject : IUnknown
415 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
417 HRESULT GetRunningClass(
418 [out] LPCLSID lpClsid);
427 HRESULT RemoteIsRunning();
431 [in] BOOL fLastUnlockCloses);
433 HRESULT SetContainedObject(
434 [in] BOOL fContained);
437 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
438 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
439 * but GetObject is used as a valid method name below, so we have
440 * to undefine it in that case */
441 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
442 cpp_quote("#undef GetObject")
447 uuid(00000010-0000-0000-C000-000000000046)
449 interface IRunningObjectTable : IUnknown
451 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
455 [in, unique] IUnknown *punkObject,
456 [in, unique] IMoniker *pmkObjectName,
457 [out] DWORD *pdwRegister);
460 [in] DWORD dwRegister);
463 [in, unique] IMoniker *pmkObjectName);
466 [in, unique] IMoniker *pmkObjectName,
467 [out] IUnknown **ppunkObject);
469 HRESULT NoteChangeTime(
470 [in] DWORD dwRegister,
471 [in] FILETIME *pfiletime);
473 HRESULT GetTimeOfLastChange(
474 [in, unique] IMoniker *pmkObjectName,
475 [out] FILETIME *pfiletime);
478 [out] IEnumMoniker **ppenumMoniker);
483 uuid(0000010c-0000-0000-C000-000000000046)
485 interface IPersist : IUnknown
487 typedef [unique] IPersist *LPPERSIST;
490 [out] CLSID *pClassID);
495 uuid(00000109-0000-0000-C000-000000000046),
496 pointer_default(unique)
498 interface IPersistStream : IPersist
500 typedef [unique] IPersistStream *LPPERSISTSTREAM;
505 [in, unique] IStream *pStm);
508 [in, unique] IStream *pStm,
509 [in] BOOL fClearDirty);
512 [out] ULARGE_INTEGER *pcbSize);
517 uuid(0000000f-0000-0000-C000-000000000046),
518 pointer_default(unique)
520 interface IMoniker : IPersistStream
522 typedef [unique] IMoniker *LPMONIKER;
524 typedef enum tagMKSYS {
526 MKSYS_GENERICCOMPOSITE = 1,
527 MKSYS_FILEMONIKER = 2,
528 MKSYS_ANTIMONIKER = 3,
529 MKSYS_ITEMMONIKER = 4,
530 MKSYS_POINTERMONIKER = 5,
531 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
532 MKSYS_CLASSMONIKER = 7
535 typedef [v1_enum] enum tagMKREDUCE {
536 MKRREDUCE_ONE = 3 << 16,
537 MKRREDUCE_TOUSER = 2 << 16,
538 MKRREDUCE_THROUGHUSER = 1 << 16,
543 HRESULT BindToObject(
544 [in, unique] IBindCtx *pbc,
545 [in, unique] IMoniker *pmkToLeft,
546 [in] REFIID riidResult,
547 [out, iid_is(riidResult)] void **ppvResult);
549 [call_as(BindToObject)]
550 HRESULT RemoteBindToObject(
551 [in, unique] IBindCtx *pbc,
552 [in, unique] IMoniker *pmkToLeft,
553 [in] REFIID riidResult,
554 [out, iid_is(riidResult)] IUnknown **ppvResult);
557 HRESULT BindToStorage(
558 [in, unique] IBindCtx *pbc,
559 [in, unique] IMoniker *pmkToLeft,
561 [out, iid_is(riid)] void **ppvObj);
563 [call_as(BindToStorage)]
564 HRESULT RemoteBindToStorage(
565 [in, unique] IBindCtx *pbc,
566 [in, unique] IMoniker *pmkToLeft,
568 [out, iid_is(riid)] IUnknown **ppvObj);
571 [in, unique] IBindCtx *pbc,
572 [in] DWORD dwReduceHowFar,
573 [in, out, unique] IMoniker **ppmkToLeft,
574 [out] IMoniker **ppmkReduced);
577 [in, unique] IMoniker *pmkRight,
578 [in] BOOL fOnlyIfNotGeneric,
579 [out] IMoniker **ppmkComposite);
583 [out] IEnumMoniker **ppenumMoniker);
586 [in, unique] IMoniker *pmkOtherMoniker);
589 [out] DWORD *pdwHash);
592 [in, unique] IBindCtx *pbc,
593 [in, unique] IMoniker *pmkToLeft,
594 [in, unique] IMoniker *pmkNewlyRunning);
596 HRESULT GetTimeOfLastChange(
597 [in, unique] IBindCtx *pbc,
598 [in, unique] IMoniker *pmkToLeft,
599 [out] FILETIME *pFileTime);
602 [out] IMoniker **ppmk);
604 HRESULT CommonPrefixWith(
605 [in, unique] IMoniker *pmkOther,
606 [out] IMoniker **ppmkPrefix);
608 HRESULT RelativePathTo(
609 [in, unique] IMoniker *pmkOther,
610 [out] IMoniker **ppmkRelPath);
612 HRESULT GetDisplayName(
613 [in, unique] IBindCtx *pbc,
614 [in, unique] IMoniker *pmkToLeft,
615 [out] LPOLESTR *ppszDisplayName);
617 HRESULT ParseDisplayName(
618 [in, unique] IBindCtx *pbc,
619 [in, unique] IMoniker *pmkToLeft,
620 [in] LPOLESTR pszDisplayName,
621 [out] ULONG *pchEaten,
622 [out] IMoniker **ppmkOut);
624 HRESULT IsSystemMoniker(
625 [out] DWORD *pdwMksys);
630 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
631 pointer_default(unique)
633 interface IROTData : IUnknown
635 HRESULT GetComparisonData(
636 [out, size_is(cbMax)] byte *pbData,
638 [out] ULONG *pcbData);
643 uuid(00000101-0000-0000-C000-000000000046),
644 pointer_default(unique)
646 interface IEnumString : IUnknown
648 typedef [unique] IEnumString *LPENUMSTRING;
653 [out, size_is(celt), length_is(*pceltFetched)]
655 [out] ULONG *pceltFetched);
660 [out, size_is(celt), length_is(*pceltFetched)]
662 [out] ULONG *pceltFetched);
670 [out] IEnumString **ppenum);
675 uuid(00000140-0000-0000-C000-000000000046)
677 interface IClassActivator : IUnknown
679 HRESULT GetClassObject(
680 [in] REFCLSID rclsid,
681 [in] DWORD dwClassContext,
684 [out, iid_is(riid)] void **ppv);
687 /******************** Storage ********************/
691 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
692 pointer_default(unique)
694 interface ISequentialStream : IUnknown
698 [out, size_is(cb), length_is(*pcbRead)]
701 [out] ULONG *pcbRead);
705 [out, size_is(cb), length_is(*pcbRead)]
708 [out] ULONG *pcbRead);
712 [in, size_is(cb)] const void *pv,
714 [out] ULONG *pcbWritten);
718 [in, size_is(cb)] const byte *pv,
720 [out] ULONG *pcbWritten);
725 uuid(0000000c-0000-0000-C000-000000000046),
726 pointer_default(unique)
728 interface IStream : ISequentialStream
730 typedef [unique] IStream *LPSTREAM;
732 typedef struct tagSTATSTG {
735 ULARGE_INTEGER cbSize;
740 DWORD grfLocksSupported;
746 typedef enum tagSTGTY {
753 typedef enum tagSTREAM_SEEK {
759 /* these are defined in Linux's fcntl.h,
760 * undefine them to avoid conflicts */
761 cpp_quote("#undef LOCK_MAND")
762 cpp_quote("#undef LOCK_READ")
763 cpp_quote("#undef LOCK_WRITE")
764 cpp_quote("#undef LOCK_RW")
766 typedef enum tagLOCKTYPE {
774 [in] LARGE_INTEGER dlibMove,
776 [out] ULARGE_INTEGER *plibNewPosition);
780 [in] LARGE_INTEGER dlibMove,
782 [out] ULARGE_INTEGER *plibNewPosition);
785 [in] ULARGE_INTEGER libNewSize);
789 [in, unique] IStream *pstm,
790 [in] ULARGE_INTEGER cb,
791 [out] ULARGE_INTEGER *pcbRead,
792 [out] ULARGE_INTEGER *pcbWritten);
795 HRESULT RemoteCopyTo(
796 [in, unique] IStream *pstm,
797 [in] ULARGE_INTEGER cb,
798 [out] ULARGE_INTEGER *pcbRead,
799 [out] ULARGE_INTEGER *pcbWritten);
802 [in] DWORD grfCommitFlags);
807 [in] ULARGE_INTEGER libOffset,
808 [in] ULARGE_INTEGER cb,
809 [in] DWORD dwLockType);
811 HRESULT UnlockRegion(
812 [in] ULARGE_INTEGER libOffset,
813 [in] ULARGE_INTEGER cb,
814 [in] DWORD dwLockType);
817 [out] STATSTG *pstatstg,
818 [in] DWORD grfStatFlag);
821 [out] IStream **ppstm);
826 uuid(0000000d-0000-0000-C000-000000000046),
827 pointer_default(unique)
829 interface IEnumSTATSTG : IUnknown
831 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
836 [out, size_is(celt), length_is(*pceltFetched)]
838 [out] ULONG *pceltFetched);
843 [out, size_is(celt), length_is(*pceltFetched)]
845 [out] ULONG *pceltFetched);
853 [out] IEnumSTATSTG **ppenum);
858 uuid(0000000b-0000-0000-C000-000000000046),
859 pointer_default(unique)
861 interface IStorage : IUnknown
863 typedef [unique] IStorage *LPSTORAGE;
865 typedef struct tagRemSNB {
866 unsigned long ulCntStr;
867 unsigned long ulCntChar;
868 [size_is(ulCntChar)] OLECHAR rgString[];
871 typedef [unique] RemSNB *wireSNB;
872 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
874 HRESULT CreateStream(
875 [in] LPCOLESTR pwcsName,
877 [in] DWORD reserved1,
878 [in] DWORD reserved2,
879 [out] IStream **ppstm);
883 [in] LPCOLESTR pwcsName,
884 [in, unique] void *reserved1,
886 [in] DWORD reserved2,
887 [out] IStream **ppstm);
889 [call_as(OpenStream)]
890 HRESULT RemoteOpenStream(
891 [in] LPCOLESTR pwcsName,
892 [in] unsigned long cbReserved1,
893 [in, unique, size_is(cbReserved1)] byte *reserved1,
895 [in] DWORD reserved2,
896 [out] IStream **ppstm);
898 HRESULT CreateStorage(
899 [in] LPCOLESTR pwcsName,
902 [in] DWORD reserved2,
903 [out] IStorage **ppstg);
906 [in, unique] LPCOLESTR pwcsName,
907 [in, unique] IStorage *pstgPriority,
909 [in, unique] SNB snbExclude,
911 [out] IStorage **ppstg);
914 [in] DWORD ciidExclude,
915 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
916 [in, unique] SNB snbExclude,
917 [in, unique] IStorage *pstgDest);
919 HRESULT MoveElementTo(
920 [in] LPCOLESTR pwcsName,
921 [in, unique] IStorage *pstgDest,
922 [in] LPCOLESTR pwcsNewName,
923 [in] DWORD grfFlags);
926 [in] DWORD grfCommitFlags);
931 HRESULT EnumElements(
932 [in] DWORD reserved1,
933 [in, unique, size_is(1)] void *reserved2,
934 [in] DWORD reserved3,
935 [out] IEnumSTATSTG **ppenum);
937 [call_as(EnumElements)]
938 HRESULT RemoteEnumElements(
939 [in] DWORD reserved1,
940 [in] unsigned long cbReserved2,
941 [in, unique, size_is(cbReserved2)] byte *reserved2,
942 [in] DWORD reserved3,
943 [out] IEnumSTATSTG **ppenum);
945 HRESULT DestroyElement(
946 [in] LPCOLESTR pwcsName);
948 HRESULT RenameElement(
949 [in] LPCOLESTR pwcsOldName,
950 [in] LPCOLESTR pwcsNewName);
952 HRESULT SetElementTimes(
953 [in, unique] LPCOLESTR pwcsName,
954 [in, unique] const FILETIME *pctime,
955 [in, unique] const FILETIME *patime,
956 [in, unique] const FILETIME *pmtime);
959 [in] REFCLSID clsid);
961 HRESULT SetStateBits(
962 [in] DWORD grfStateBits,
966 [out] STATSTG *pstatstg,
967 [in] DWORD grfStatFlag);
972 uuid(0000010b-0000-0000-C000-000000000046),
973 pointer_default(unique)
975 interface IPersistFile : IPersist
977 typedef [unique] IPersistFile *LPPERSISTFILE;
982 [in] LPCOLESTR pszFileName,
986 [in, unique] LPCOLESTR pszFileName,
987 [in] BOOL fRemember);
989 HRESULT SaveCompleted(
990 [in, unique] LPCOLESTR pszFileName);
993 [out] LPOLESTR *ppszFileName);
998 uuid(0000010a-0000-0000-C000-000000000046),
999 pointer_default(unique)
1001 interface IPersistStorage : IPersist
1003 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1008 [in, unique] IStorage *pStg);
1011 [in, unique] IStorage *pStg);
1014 [in, unique] IStorage *pStgSave,
1015 [in] BOOL fSameAsLoad);
1017 HRESULT SaveCompleted(
1018 [in, unique] IStorage *pStgNew);
1020 HRESULT HandsOffStorage();
1025 uuid(00000012-0000-0000-C000-000000000046),
1026 pointer_default(unique)
1028 interface IRootStorage : IUnknown
1030 typedef [unique] IRootStorage *LPROOTSTORAGE;
1032 HRESULT SwitchToFile(
1033 [in] LPOLESTR pszFile);
1038 uuid(0000000a-0000-0000-C000-000000000046),
1039 pointer_default(unique)
1041 interface ILockBytes : IUnknown
1043 typedef [unique] ILockBytes *LPLOCKBYTES;
1047 [in] ULARGE_INTEGER ulOffset,
1048 [out, size_is(cb), length_is(*pcbRead)]
1051 [out] ULONG *pcbRead);
1054 HRESULT RemoteReadAt(
1055 [in] ULARGE_INTEGER ulOffset,
1056 [out, size_is(cb), length_is(*pcbRead)]
1059 [out] ULONG *pcbRead);
1063 [in] ULARGE_INTEGER ulOffset,
1064 [in, size_is(cb)] const void *pv,
1066 [out] ULONG *pcbWritten);
1069 HRESULT RemoteWriteAt(
1070 [in] ULARGE_INTEGER ulOffset,
1071 [in, size_is(cb)] const byte *pv,
1073 [out] ULONG *pcbWritten);
1078 [in] ULARGE_INTEGER cb);
1081 [in] ULARGE_INTEGER libOffset,
1082 [in] ULARGE_INTEGER cb,
1083 [in] DWORD dwLockType);
1085 HRESULT UnlockRegion(
1086 [in] ULARGE_INTEGER libOffset,
1087 [in] ULARGE_INTEGER cb,
1088 [in] DWORD dwLockType);
1091 [out] STATSTG *pstatstg,
1092 [in] DWORD grfStatFlag);
1097 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1098 pointer_default(unique)
1100 interface IFillLockBytes : IUnknown
1104 [in, size_is(cb)] const void *pv,
1106 [out] ULONG *pcbWritten);
1108 [call_as(FillAppend)]
1109 HRESULT RemoteFillAppend(
1110 [in, size_is(cb)] const byte *pv,
1112 [out] ULONG *pcbWritten);
1116 [in] ULARGE_INTEGER ulOffset,
1117 [in, size_is(cb)] const void *pv,
1119 [out] ULONG *pcbWritten);
1122 HRESULT RemoteFillAt(
1123 [in] ULARGE_INTEGER ulOffset,
1124 [in, size_is(cb)] const byte *pv,
1126 [out] ULONG *pcbWritten);
1128 HRESULT SetFillSize(
1129 [in] ULARGE_INTEGER ulSize);
1132 [in] BOOL bCanceled);
1137 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1138 pointer_default(unique)
1140 interface IProgressNotify : IUnknown
1143 [in] DWORD dwProgressCurrent,
1144 [in] DWORD dwProgressMaximum,
1145 [in] BOOL fAccurate,
1152 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1153 pointer_default(unique)
1155 interface ILayoutStorage : IUnknown
1157 typedef struct tagStorageLayout {
1159 OLECHAR *pwcsElementName;
1160 LARGE_INTEGER cOffset;
1161 LARGE_INTEGER cBytes;
1164 HRESULT LayoutScript(
1165 [in] StorageLayout *pStorageLayout,
1166 [in] DWORD nEntries,
1167 [in] DWORD glfInterleavedFlag);
1169 HRESULT BeginMonitor();
1171 HRESULT EndMonitor();
1173 HRESULT ReLayoutDocfile(
1174 [in] OLECHAR *pwcsNewDfName);
1176 HRESULT ReLayoutDocfileOnILockBytes(
1177 [in] ILockBytes *pILockBytes);
1180 /******************** Data Object ********************/
1184 uuid(00000103-0000-0000-C000-000000000046),
1185 pointer_default(unique)
1187 interface IEnumFORMATETC : IUnknown
1189 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1191 typedef struct tagDVTARGETDEVICE {
1193 WORD tdDriverNameOffset;
1194 WORD tdDeviceNameOffset;
1195 WORD tdPortNameOffset;
1196 WORD tdExtDevmodeOffset;
1197 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1201 typedef CLIPFORMAT *LPCLIPFORMAT;
1203 typedef struct tagFORMATETC {
1204 CLIPFORMAT cfFormat;
1205 [unique] DVTARGETDEVICE *ptd;
1209 } FORMATETC, *LPFORMATETC;
1214 [out, size_is(celt), length_is(*pceltFetched)]
1216 [out] ULONG *pceltFetched);
1221 [out, size_is(celt), length_is(*pceltFetched)]
1223 [out] ULONG *pceltFetched);
1231 [out] IEnumFORMATETC **ppenum);
1236 uuid(00000105-0000-0000-C000-000000000046),
1237 pointer_default(unique)
1239 interface IEnumSTATDATA : IUnknown
1241 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1243 typedef enum tagADVF {
1245 ADVF_PRIMEFIRST = 2,
1247 ADVF_DATAONSTOP = 64,
1248 ADVFCACHE_NOHANDLER = 8,
1249 ADVFCACHE_FORCEBUILTIN = 16,
1250 ADVFCACHE_ONSAVE = 32
1253 typedef struct tagSTATDATA
1255 FORMATETC formatetc;
1257 [unique] IAdviseSink *pAdvSink;
1259 } STATDATA, *LPSTATDATA;
1264 [out, size_is(celt), length_is(*pceltFetched)]
1266 [out] ULONG *pceltFetched);
1271 [out, size_is(celt), length_is(*pceltFetched)]
1273 [out] ULONG *pceltFetched);
1281 [out] IEnumSTATDATA **ppenum);
1286 uuid(0000010f-0000-0000-C000-000000000046),
1287 pointer_default(unique)
1289 interface IAdviseSink : IUnknown
1291 typedef IAdviseSink *LPADVISESINK;
1293 typedef [v1_enum] enum tagTYMED {
1304 typedef struct tagRemSTGMEDIUM {
1307 unsigned long pData;
1308 unsigned long pUnkForRelease;
1309 unsigned long cbData;
1310 [size_is(cbData)] byte data[];
1313 /* FIXME: C/C++ nameless union version */
1314 typedef struct tagSTGMEDIUM {
1316 [switch_is(tymed)] union {
1317 [case(TYMED_GDI)] HBITMAP hBitmap;
1318 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1319 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1320 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1321 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1322 [case(TYMED_ISTREAM)] IStream *pstm;
1323 [case(TYMED_ISTORAGE)] IStorage *pstg;
1326 [unique] IUnknown *pUnkForRelease;
1329 /* copied from wingdi.h */
1333 #define OBJ_METADC 4
1336 #define OBJ_BITMAP 7
1337 #define OBJ_REGION 8
1338 #define OBJ_METAFILE 9
1339 #define OBJ_MEMDC 10
1340 #define OBJ_EXTPEN 11
1341 #define OBJ_ENHMETADC 12
1342 #define OBJ_ENHMETAFILE 13
1344 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1345 case OBJ_BITMAP: wireHBITMAP hBitmap;
1346 case OBJ_PAL: wireHPALETTE hPalette;
1347 default: wireHGLOBAL hGeneric;
1350 typedef struct _userSTGMEDIUM {
1351 union switch(DWORD tymed) u {
1353 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1354 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1355 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1356 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1357 case TYMED_FILE: LPOLESTR lpszFileName;
1358 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1359 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1361 IUnknown *pUnkForRelease;
1364 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1365 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1367 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1368 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1370 typedef STGMEDIUM *LPSTGMEDIUM;
1372 typedef struct _userFLAG_STGMEDIUM {
1374 long fPassOwnership;
1375 userSTGMEDIUM Stgmed;
1376 } userFLAG_STGMEDIUM;
1378 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1380 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1382 long fPassOwnership;
1388 [in, unique] FORMATETC *pFormatetc,
1389 [in, unique] STGMEDIUM *pStgmed);
1391 [call_as(OnDataChange), async]
1392 HRESULT RemoteOnDataChange(
1393 [in] IAsyncManager **ppIAM,
1394 [in, unique] FORMATETC *pFormatetc,
1395 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1399 [in] DWORD dwAspect,
1402 [call_as(OnViewChange), async]
1403 HRESULT RemoteOnViewChange(
1404 [in] IAsyncManager **ppIAM,
1405 [in] DWORD dwAspect,
1410 [in] IMoniker *pmk);
1412 [call_as(OnRename), async]
1413 HRESULT RemoteOnRename(
1414 [in] IAsyncManager **ppIAM,
1415 [in] IMoniker *pmk);
1420 [call_as(OnSave), async]
1421 HRESULT RemoteOnSave(
1422 [in] IAsyncManager **ppIAM);
1428 HRESULT RemoteOnClose();
1433 uuid(00000125-0000-0000-C000-000000000046),
1434 pointer_default(unique)
1436 interface IAdviseSink2 : IAdviseSink
1438 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1441 void OnLinkSrcChange(
1442 [in, unique] IMoniker *pmk);
1444 [call_as(OnLinkSrcChange), async]
1445 HRESULT RemoteOnLinkSrcChange(
1446 [in] IAsyncManager **ppIAM,
1447 [in, unique] IMoniker *pmk);
1452 uuid(0000010e-0000-0000-C000-000000000046),
1453 pointer_default(unique)
1455 interface IDataObject : IUnknown
1457 typedef [unique] IDataObject *LPDATAOBJECT;
1459 typedef enum tagDATADIR {
1466 [in, unique] FORMATETC *pformatetcIn,
1467 [out] STGMEDIUM *pmedium);
1470 HRESULT RemoteGetData(
1471 [in, unique] FORMATETC *pformatetcIn,
1472 [out] STGMEDIUM *pRemoteMedium);
1475 HRESULT GetDataHere(
1476 [in, unique] FORMATETC *pformatetc,
1477 [in, out] STGMEDIUM *pmedium);
1479 [call_as(GetDataHere)]
1480 HRESULT RemoteGetDataHere(
1481 [in, unique] FORMATETC *pformatetc,
1482 [in, out] STGMEDIUM *pRemoteMedium);
1484 HRESULT QueryGetData(
1485 [in, unique] FORMATETC *pformatetc);
1487 HRESULT GetCanonicalFormatEtc(
1488 [in, unique] FORMATETC *pformatectIn,
1489 [out] FORMATETC *pformatetcOut);
1493 [in, unique] FORMATETC *pformatetc,
1494 [in, unique] STGMEDIUM *pmedium,
1495 [in] BOOL fRelease);
1498 HRESULT RemoteSetData(
1499 [in, unique] FORMATETC *pformatetc,
1500 [in, unique] FLAG_STGMEDIUM *pmedium,
1501 [in] BOOL fRelease);
1503 HRESULT EnumFormatEtc(
1504 [in] DWORD dwDirection,
1505 [out] IEnumFORMATETC **ppenumFormatEtc);
1508 [in] FORMATETC *pformatetc,
1510 [in, unique] IAdviseSink *pAdvSink,
1511 [out] DWORD *pdwConnection);
1514 [in] DWORD dwConnection);
1516 HRESULT EnumDAdvise(
1517 [out] IEnumSTATDATA **ppenumAdvise);
1523 uuid(00000110-0000-0000-C000-000000000046)
1525 interface IDataAdviseHolder : IUnknown
1527 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1530 [in, unique] IDataObject *pDataObject,
1531 [in, unique] FORMATETC *pFetc,
1533 [in, unique] IAdviseSink *pAdvise,
1534 [out] DWORD *pdwConnection);
1537 [in] DWORD dwConnection);
1540 [out] IEnumSTATDATA **ppenumAdvise);
1542 HRESULT SendOnDataChange(
1543 [in, unique] IDataObject *pDataObject,
1544 [in] DWORD dwReserved,
1548 /******************** Remoting ********************/
1553 uuid(00000016-0000-0000-C000-000000000046)
1555 interface IMessageFilter : IUnknown
1557 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1559 typedef enum tagCALLTYPE {
1560 CALLTYPE_TOPLEVEL = 1,
1561 CALLTYPE_NESTED = 2,
1563 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1564 CALLTYPE_ASYNC_CALLPENDING = 5
1567 typedef enum tagSERVERCALL {
1568 SERVERCALL_ISHANDLED = 0,
1569 SERVERCALL_REJECTED = 1,
1570 SERVERCALL_RETRYLATER = 2
1573 typedef enum tagPENDINGTYPE {
1574 PENDINGTYPE_TOPLEVEL = 1,
1575 PENDINGTYPE_NESTED = 2
1578 typedef enum tagPENDINGMSG {
1579 PENDINGMSG_CANCELCALL = 0,
1580 PENDINGMSG_WAITNOPROCESS = 1,
1581 PENDINGMSG_WAITDEFPROCESS = 2
1584 typedef struct tagINTERFACEINFO {
1588 } INTERFACEINFO, *LPINTERFACEINFO;
1590 DWORD HandleInComingCall(
1591 [in] DWORD dwCallType,
1592 [in] HTASK htaskCaller,
1593 [in] DWORD dwTickCount,
1594 [in] LPINTERFACEINFO lpInterfaceInfo);
1596 DWORD RetryRejectedCall(
1597 [in] HTASK htaskCallee,
1598 [in] DWORD dwTickCount,
1599 [in] DWORD dwRejectType);
1601 DWORD MessagePending(
1602 [in] HTASK htaskCallee,
1603 [in] DWORD dwTickCount,
1604 [in] DWORD dwPendingType);
1610 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1612 interface IRpcChannelBuffer : IUnknown
1614 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1616 typedef unsigned long RPCOLEDATAREP;
1618 typedef struct tagRPCOLEMESSAGE {
1620 RPCOLEDATAREP dataRepresentation;
1628 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1631 [in] RPCOLEMESSAGE *pMessage,
1634 HRESULT SendReceive(
1635 [in,out] RPCOLEMESSAGE *pMessage,
1636 [out] ULONG *pStatus);
1639 [in] RPCOLEMESSAGE *pMessage);
1642 [out] DWORD *pdwDestContext,
1643 [out] void **ppvDestContext);
1645 HRESULT IsConnected();
1651 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1653 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1655 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1657 HRESULT GetProtocolVersion(
1658 [in,out] DWORD *pdwVersion);
1664 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1666 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1668 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1671 [in,out] RPCOLEMESSAGE *pMsg,
1672 [out] ULONG *pulStatus);
1675 [in,out] RPCOLEMESSAGE *pMsg,
1677 [out] ULONG *pulStatus);
1680 [in] RPCOLEMESSAGE *pMsg);
1682 HRESULT GetCallContext(
1683 [in] RPCOLEMESSAGE *pMsg,
1685 [out] void **pInterface);
1687 HRESULT GetDestCtxEx(
1688 [in] RPCOLEMESSAGE *pMsg,
1689 [out] DWORD *pdwDestContext,
1690 [out] void **ppvDestContext);
1693 [in] RPCOLEMESSAGE *pMsg,
1694 [out] DWORD *pState);
1696 HRESULT RegisterAsync(
1697 [in] RPCOLEMESSAGE *pMsg,
1698 [in] IAsyncManager *pAsyncMgr);
1704 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1706 interface IRpcProxyBuffer : IUnknown
1708 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1711 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1719 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1721 interface IRpcStubBuffer : IUnknown
1723 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1726 [in] IUnknown *pUnkServer);
1731 [in] RPCOLEMESSAGE *_prpcmsg,
1732 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1734 IRpcStubBuffer *IsIIDSupported(
1739 HRESULT DebugServerQueryInterface(
1742 void DebugServerRelease(
1749 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1751 interface IPSFactoryBuffer : IUnknown
1753 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1755 HRESULT CreateProxy(
1756 [in] IUnknown *pUnkOuter,
1758 [out] IRpcProxyBuffer **ppProxy,
1763 [in, unique] IUnknown *pUnkServer,
1764 [out] IRpcStubBuffer **ppStub);
1770 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1772 interface IChannelHook : IUnknown
1774 typedef [unique] IChannelHook *LPCHANNELHOOK;
1776 typedef struct SChannelHookCallInfo {
1783 } SChannelHookCallInfo;
1786 [in] REFGUID uExtent,
1788 [out] ULONG *pDataSize);
1790 void ClientFillBuffer(
1791 [in] REFGUID uExtent,
1793 [in, out] ULONG *pDataSize,
1794 [in] void *pDataBuffer);
1797 [in] REFGUID uExtent,
1799 [in] ULONG cbDataSize,
1800 [in] void *pDataBuffer,
1801 [in] DWORD lDataRep,
1802 [in] HRESULT hrFault);
1805 [in] REFGUID uExtent,
1807 [in] ULONG cbDataSize,
1808 [in] void *pDataBuffer,
1809 [in] DWORD lDataRep);
1812 [in] REFGUID uExtent,
1814 [in] HRESULT hrFault,
1815 [out] ULONG *pDataSize);
1817 void ServerFillBuffer(
1818 [in] REFGUID uExtent,
1820 [in, out] ULONG *pDataSize,
1821 [in] void *pDataBuffer,
1822 [in] HRESULT hrFault );
1825 extern const FMTID FMTID_SummaryInformation;
1826 extern const FMTID FMTID_DocSummaryInformation;
1827 extern const FMTID FMTID_UserDefinedProperties;
1830 /******************** Connection Points ********************/
1833 /******************** DCOM ********************/
1838 uuid(0000013D-0000-0000-C000-000000000046)
1840 interface IClientSecurity : IUnknown
1842 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1845 OLECHAR *pPrincipalName;
1847 } SOLE_AUTHENTICATION_SERVICE;
1849 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1851 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1853 EOAC_MUTUAL_AUTH = 0x1,
1854 EOAC_CLOAKING = 0x10,
1855 EOAC_SECURE_REFS = 0x2,
1856 EOAC_ACCESS_CONTROL = 0x4,
1858 } EOLE_AUTHENTICATION_CAPABILITIES;
1860 HRESULT QueryBlanket(
1861 [in] IUnknown *pProxy,
1862 [out] DWORD *pAuthnSvc,
1863 [out] DWORD *pAuthzSvc,
1864 [out] OLECHAR **pServerPrincName,
1865 [out] DWORD *pAuthnLevel,
1866 [out] DWORD *pImpLevel,
1867 [out] void **pAuthInfo,
1868 [out] DWORD *pCapabilites);
1871 [in] IUnknown *pProxy,
1872 [in] DWORD AuthnSvc,
1873 [in] DWORD AuthzSvc,
1874 [in] OLECHAR *pServerPrincName,
1875 [in] DWORD AuthnLevel,
1876 [in] DWORD ImpLevel,
1877 [in] void *pAuthInfo,
1878 [in] DWORD Capabilities);
1881 [in] IUnknown *pProxy,
1882 [out] IUnknown **ppCopy);
1888 uuid(0000013E-0000-0000-C000-000000000046)
1890 interface IServerSecurity : IUnknown
1892 HRESULT QueryBlanket(
1893 [out] DWORD *pAuthnSvc,
1894 [out] DWORD *pAuthzSvc,
1895 [out] OLECHAR **pServerPrincName,
1896 [out] DWORD *pAuthnLevel,
1897 [out] DWORD *pImpLevel,
1898 [out] void **pPrivs,
1899 [out] DWORD *pCapabilities);
1901 HRESULT ImpersonateClient();
1903 HRESULT RevertToSelf();
1905 BOOL IsImpersonating();
1911 uuid(00000024-0000-0000-C000-000000000046)
1913 interface IAsyncSetup : IUnknown
1915 HRESULT GetAsyncManager(
1917 [in] IUnknown *pOuter,
1919 [out] IUnknown **ppInner,
1920 [out] IAsyncManager **ppAsyncMgr);
1926 uuid(0000002A-0000-0000-C000-000000000046)
1928 interface IAsyncManager : IUnknown
1930 typedef enum tagDCOM_CALL_STATE {
1932 DCOM_CALL_COMPLETE = 1,
1933 DCOM_CALL_CANCELED = 2
1936 HRESULT CompleteCall(
1937 [in] HRESULT Result);
1938 HRESULT GetCallContext(
1940 [out] void **pInterface);
1942 [out] ULONG *pulStateFlags);