devenum/tests: Get rid of strchrW() and strncmpW().
[wine.git] / include / objidl.idl
bloba86ceb8b1d6bf96f606fb446f35e1aab3fa7cc79
1 /*
2 * Copyright 2002 Ove Kaaven
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef DO_NO_IMPORTS
20 import "unknwn.idl";
21 #endif
23 interface IStream;
24 interface IEnumString;
25 interface IRunningObjectTable;
26 interface IMoniker;
27 interface IAdviseSink;
28 interface IAsyncManager;
29 interface ISynchronize;
31 typedef struct _COSERVERINFO {
32 DWORD dwReserved1;
33 LPWSTR pwszName;
34 COAUTHINFO *pAuthInfo;
35 DWORD dwReserved2;
36 } COSERVERINFO;
38 /******************** Fundamentals ********************/
41 local,
42 object,
43 uuid(00000003-0000-0000-C000-000000000046)
45 interface IMarshal : IUnknown
47 typedef [unique] IMarshal *LPMARSHAL;
49 HRESULT GetUnmarshalClass(
50 [in] REFIID riid,
51 [in, unique] void *pv,
52 [in] DWORD dwDestContext,
53 [in, unique] void *pvDestContext,
54 [in] DWORD mshlflags,
55 [out] CLSID *pCid);
57 HRESULT GetMarshalSizeMax(
58 [in] REFIID riid,
59 [in, unique] void *pv,
60 [in] DWORD dwDestContext,
61 [in, unique] void *pvDestContext,
62 [in] DWORD mshlflags,
63 [out] DWORD *pSize);
65 HRESULT MarshalInterface(
66 [in, unique] IStream *pStm,
67 [in] REFIID riid,
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,
75 [in] REFIID riid,
76 [out] void **ppv);
78 HRESULT ReleaseMarshalData(
79 [in, unique] IStream *pStm);
81 HRESULT DisconnectObject(
82 [in] DWORD dwReserved);
86 local,
87 object,
88 uuid(000001cf-0000-0000-C000-000000000046)
90 interface IMarshal2 : IMarshal
92 typedef [unique] IMarshal2 *LPMARSHAL2;
96 local,
97 object,
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);
111 local,
112 object,
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
123 } EXTCONN;
125 DWORD AddConnection(
126 [in] DWORD extconn,
127 [in] DWORD reserved);
129 DWORD ReleaseConnection(
130 [in] DWORD extconn,
131 [in] DWORD reserved,
132 [in] BOOL fLastReleaseCloses);
136 local,
137 object,
138 uuid(00000020-0000-0000-C000-000000000046)
140 interface IMultiQI : IUnknown
142 typedef [unique] IMultiQI *LPMULTIQI;
144 typedef struct tagMULTI_QI {
145 const IID *pIID;
146 IUnknown *pItf;
147 HRESULT hr;
148 } MULTI_QI;
150 HRESULT QueryMultipleInterfaces(
151 [in] ULONG cMQIs,
152 [in, out] MULTI_QI *pMQIs);
156 local,
157 object,
158 uuid(00000002-0000-0000-C000-000000000046)
160 interface IMalloc : IUnknown
162 typedef [unique] IMalloc *LPMALLOC;
164 LPVOID Alloc(
165 [in] SIZE_T cb);
167 LPVOID Realloc(
168 [in] LPVOID pv,
169 [in] SIZE_T cb);
171 void Free(
172 [in] LPVOID pv);
174 SIZE_T GetSize(
175 [in] LPVOID pv);
177 int DidAlloc(LPVOID pv);
179 void HeapMinimize();
183 local,
184 object,
185 uuid(0000001d-0000-0000-C000-000000000046)
187 interface IMallocSpy : IUnknown
189 typedef [unique] IMallocSpy *LPMALLOCSPY;
191 SIZE_T PreAlloc(
192 [in] SIZE_T cbRequest);
194 LPVOID PostAlloc(
195 [in] LPVOID pActual);
197 LPVOID PreFree(
198 [in] LPVOID pRequest,
199 [in] BOOL fSpyed);
201 void PostFree(
202 [in] BOOL fSpyed);
204 SIZE_T PreRealloc(
205 [in] LPVOID pRequest,
206 [in] SIZE_T cbRequest,
207 [out] LPVOID *ppNewRequest,
208 [in] BOOL fSpyed);
210 LPVOID PostRealloc(
211 [in] LPVOID pActual,
212 [in] BOOL fSpyed);
214 LPVOID PreGetSize(
215 [in] LPVOID pRequest,
216 [in] BOOL fSpyed);
218 SIZE_T PostGetSize(
219 [in] SIZE_T cbActual,
220 [in] BOOL fSpyed);
222 LPVOID PreDidAlloc(
223 [in] LPVOID pRequest,
224 [in] BOOL fSpyed);
226 int PostDidAlloc(
227 [in] LPVOID pRequest,
228 [in] BOOL fSpyed,
229 [in] int fActual);
231 void PreHeapMinimize();
233 void PostHeapMinimize();
237 local,
238 object,
239 uuid(00000021-0000-0000-C000-000000000046)
241 interface IInternalUnknown : IUnknown
243 HRESULT QueryInternalInterface(
244 [in] REFIID riid,
245 [out] void **ppv);
249 object,
250 uuid(00000100-0000-0000-C000-000000000046),
251 pointer_default(unique)
253 interface IEnumUnknown : IUnknown
255 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
257 [local]
258 HRESULT Next(
259 [in] ULONG celt,
260 [out] IUnknown **rgelt,
261 [out] ULONG *pceltFetched);
263 [call_as(Next)]
264 HRESULT RemoteNext(
265 [in] ULONG celt,
266 [out, size_is(celt), length_is(*pceltFetched)]
267 IUnknown **rgelt,
268 [out] ULONG *pceltFetched);
270 HRESULT Skip(
271 [in] ULONG celt);
273 HRESULT Reset();
275 HRESULT Clone(
276 [out] IEnumUnknown **ppenum);
280 object,
281 uuid(00000022-0000-0000-C000-000000000046),
282 version(1.0),
283 pointer_default(unique)
285 interface ISurrogate : IUnknown
287 typedef [unique] ISurrogate *LPSURROGATE;
289 HRESULT LoadDllServer(
290 [in] REFCLSID Clsid);
291 HRESULT FreeSurrogate();
295 local,
296 object,
297 uuid(00000146-0000-0000-C000-000000000046)
299 interface IGlobalInterfaceTable : IUnknown
301 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
303 HRESULT RegisterInterfaceInGlobal(
304 [in] IUnknown *pUnk,
305 [in] REFIID riid,
306 [out] DWORD *pdwCookie);
308 HRESULT RevokeInterfaceFromGlobal(
309 [in] DWORD dwCookie);
311 HRESULT GetInterfaceFromGlobal(
312 [in] DWORD dwCookie,
313 [in] REFIID riid,
314 [out, iid_is(riid)] void **ppv);
317 /******************** Monikers ********************/
320 object,
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 {
330 DWORD cbStruct;
331 DWORD grfFlags;
332 DWORD grfMode;
333 DWORD dwTickCountDeadline;
334 } BIND_OPTS, *LPBIND_OPTS;
336 /* FIXME: C++ crap */
337 typedef struct tagBIND_OPTS2 {
338 DWORD cbStruct;
339 DWORD grfFlags;
340 DWORD grfMode;
341 DWORD dwTickCountDeadline;
342 DWORD dwTrackFlags;
343 DWORD dwClassContext;
344 LCID locale;
345 COSERVERINFO *pServerInfo;
346 } BIND_OPTS2, *LPBIND_OPTS2;
348 typedef struct tagBIND_OPTS3 {
349 DWORD cbStruct;
350 DWORD grfFlags;
351 DWORD grfMode;
352 DWORD dwTickCountDeadline;
353 DWORD dwTrackFlags;
354 DWORD dwClassContext;
355 LCID locale;
356 COSERVERINFO *pServerInfo;
357 HWND hwnd;
358 } BIND_OPTS3, *LPBIND_OPTS3;
360 typedef enum tagBIND_FLAGS {
361 BIND_MAYBOTHERUSER = 1,
362 BIND_JUSTTESTEXISTENCE = 2
363 } BIND_FLAGS;
365 HRESULT RegisterObjectBound(
366 [in, unique] IUnknown *punk);
368 HRESULT RevokeObjectBound(
369 [in, unique] IUnknown *punk);
371 HRESULT ReleaseBoundObjects();
373 [local]
374 HRESULT SetBindOptions(
375 [in] BIND_OPTS *pbindopts);
377 [call_as(SetBindOptions)]
378 HRESULT RemoteSetBindOptions(
379 [in] BIND_OPTS2 *pbindopts);
381 [local]
382 HRESULT GetBindOptions(
383 [in, out] BIND_OPTS *pbindopts);
385 [call_as(GetBindOptions)]
386 HRESULT RemoteGetBindOptions(
387 [in, out] BIND_OPTS2 *pbindopts);
389 HRESULT GetRunningObjectTable(
390 [out] IRunningObjectTable **pprot);
392 HRESULT RegisterObjectParam(
393 [in] LPOLESTR pszKey,
394 [in, unique] IUnknown *punk);
396 HRESULT GetObjectParam(
397 [in] LPOLESTR pszKey,
398 [out] IUnknown **ppunk);
400 HRESULT EnumObjectParam(
401 [out] IEnumString **ppenum);
403 HRESULT RevokeObjectParam(
404 [in] LPOLESTR pszKey);
408 object,
409 uuid(00000102-0000-0000-C000-000000000046),
410 pointer_default(unique)
412 interface IEnumMoniker : IUnknown
414 typedef [unique] IEnumMoniker *LPENUMMONIKER;
416 [local]
417 HRESULT Next(
418 [in] ULONG celt,
419 [out, size_is(celt), length_is(*pceltFetched)]
420 IMoniker **rgelt,
421 [out] ULONG *pceltFetched);
423 [call_as(Next)]
424 HRESULT RemoteNext(
425 [in] ULONG celt,
426 [out, size_is(celt), length_is(*pceltFetched)]
427 IMoniker **rgelt,
428 [out] ULONG *pceltFetched);
430 HRESULT Skip(
431 [in] ULONG celt);
433 HRESULT Reset();
435 HRESULT Clone(
436 [out] IEnumMoniker **ppenum);
440 object,
441 uuid(00000126-0000-0000-C000-000000000046)
443 interface IRunnableObject : IUnknown
445 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
447 HRESULT GetRunningClass(
448 [out] LPCLSID lpClsid);
450 HRESULT Run(
451 [in] LPBINDCTX pbc);
453 [local]
454 BOOL IsRunning();
456 [call_as(IsRunning)]
457 HRESULT RemoteIsRunning();
459 HRESULT LockRunning(
460 [in] BOOL fLock,
461 [in] BOOL fLastUnlockCloses);
463 HRESULT SetContainedObject(
464 [in] BOOL fContained);
467 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
468 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
469 * but GetObject is used as a valid method name below, so we have
470 * to undefine it in that case */
471 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
472 cpp_quote("#undef GetObject")
473 cpp_quote("#endif")
476 object,
477 uuid(00000010-0000-0000-C000-000000000046)
479 interface IRunningObjectTable : IUnknown
481 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
483 HRESULT Register(
484 [in] DWORD grfFlags,
485 [in, unique] IUnknown *punkObject,
486 [in, unique] IMoniker *pmkObjectName,
487 [out] DWORD *pdwRegister);
489 HRESULT Revoke(
490 [in] DWORD dwRegister);
492 HRESULT IsRunning(
493 [in, unique] IMoniker *pmkObjectName);
495 HRESULT GetObject(
496 [in, unique] IMoniker *pmkObjectName,
497 [out] IUnknown **ppunkObject);
499 HRESULT NoteChangeTime(
500 [in] DWORD dwRegister,
501 [in] FILETIME *pfiletime);
503 HRESULT GetTimeOfLastChange(
504 [in, unique] IMoniker *pmkObjectName,
505 [out] FILETIME *pfiletime);
507 HRESULT EnumRunning(
508 [out] IEnumMoniker **ppenumMoniker);
512 object,
513 uuid(0000010c-0000-0000-C000-000000000046)
515 interface IPersist : IUnknown
517 typedef [unique] IPersist *LPPERSIST;
519 HRESULT GetClassID(
520 [out] CLSID *pClassID);
524 object,
525 uuid(00000109-0000-0000-C000-000000000046),
526 pointer_default(unique)
528 interface IPersistStream : IPersist
530 typedef [unique] IPersistStream *LPPERSISTSTREAM;
532 HRESULT IsDirty();
534 HRESULT Load(
535 [in, unique] IStream *pStm);
537 HRESULT Save(
538 [in, unique] IStream *pStm,
539 [in] BOOL fClearDirty);
541 HRESULT GetSizeMax(
542 [out] ULARGE_INTEGER *pcbSize);
546 object,
547 uuid(0000000f-0000-0000-C000-000000000046),
548 pointer_default(unique)
550 interface IMoniker : IPersistStream
552 typedef [unique] IMoniker *LPMONIKER;
554 typedef enum tagMKSYS {
555 MKSYS_NONE = 0,
556 MKSYS_GENERICCOMPOSITE = 1,
557 MKSYS_FILEMONIKER = 2,
558 MKSYS_ANTIMONIKER = 3,
559 MKSYS_ITEMMONIKER = 4,
560 MKSYS_POINTERMONIKER = 5,
561 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
562 MKSYS_CLASSMONIKER = 7
563 } MKSYS;
565 typedef [v1_enum] enum tagMKREDUCE {
566 MKRREDUCE_ONE = 3 << 16,
567 MKRREDUCE_TOUSER = 2 << 16,
568 MKRREDUCE_THROUGHUSER = 1 << 16,
569 MKRREDUCE_ALL = 0
570 } MKRREDUCE;
572 [local]
573 HRESULT BindToObject(
574 [in, unique] IBindCtx *pbc,
575 [in, unique] IMoniker *pmkToLeft,
576 [in] REFIID riidResult,
577 [out, iid_is(riidResult)] void **ppvResult);
579 [call_as(BindToObject)]
580 HRESULT RemoteBindToObject(
581 [in, unique] IBindCtx *pbc,
582 [in, unique] IMoniker *pmkToLeft,
583 [in] REFIID riidResult,
584 [out, iid_is(riidResult)] IUnknown **ppvResult);
586 [local]
587 HRESULT BindToStorage(
588 [in, unique] IBindCtx *pbc,
589 [in, unique] IMoniker *pmkToLeft,
590 [in] REFIID riid,
591 [out, iid_is(riid)] void **ppvObj);
593 [call_as(BindToStorage)]
594 HRESULT RemoteBindToStorage(
595 [in, unique] IBindCtx *pbc,
596 [in, unique] IMoniker *pmkToLeft,
597 [in] REFIID riid,
598 [out, iid_is(riid)] IUnknown **ppvObj);
600 HRESULT Reduce(
601 [in, unique] IBindCtx *pbc,
602 [in] DWORD dwReduceHowFar,
603 [in, out, unique] IMoniker **ppmkToLeft,
604 [out] IMoniker **ppmkReduced);
606 HRESULT ComposeWith(
607 [in, unique] IMoniker *pmkRight,
608 [in] BOOL fOnlyIfNotGeneric,
609 [out] IMoniker **ppmkComposite);
611 HRESULT Enum(
612 [in] BOOL fForward,
613 [out] IEnumMoniker **ppenumMoniker);
615 HRESULT IsEqual(
616 [in, unique] IMoniker *pmkOtherMoniker);
618 HRESULT Hash(
619 [out] DWORD *pdwHash);
621 HRESULT IsRunning(
622 [in, unique] IBindCtx *pbc,
623 [in, unique] IMoniker *pmkToLeft,
624 [in, unique] IMoniker *pmkNewlyRunning);
626 HRESULT GetTimeOfLastChange(
627 [in, unique] IBindCtx *pbc,
628 [in, unique] IMoniker *pmkToLeft,
629 [out] FILETIME *pFileTime);
631 HRESULT Inverse(
632 [out] IMoniker **ppmk);
634 HRESULT CommonPrefixWith(
635 [in, unique] IMoniker *pmkOther,
636 [out] IMoniker **ppmkPrefix);
638 HRESULT RelativePathTo(
639 [in, unique] IMoniker *pmkOther,
640 [out] IMoniker **ppmkRelPath);
642 HRESULT GetDisplayName(
643 [in, unique] IBindCtx *pbc,
644 [in, unique] IMoniker *pmkToLeft,
645 [out] LPOLESTR *ppszDisplayName);
647 HRESULT ParseDisplayName(
648 [in, unique] IBindCtx *pbc,
649 [in, unique] IMoniker *pmkToLeft,
650 [in] LPOLESTR pszDisplayName,
651 [out] ULONG *pchEaten,
652 [out] IMoniker **ppmkOut);
654 HRESULT IsSystemMoniker(
655 [out] DWORD *pdwMksys);
659 object,
660 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
661 pointer_default(unique)
663 interface IROTData : IUnknown
665 HRESULT GetComparisonData(
666 [out, size_is(cbMax)] byte *pbData,
667 [in] ULONG cbMax,
668 [out] ULONG *pcbData);
672 object,
673 uuid(00000101-0000-0000-C000-000000000046),
674 pointer_default(unique)
676 interface IEnumString : IUnknown
678 typedef [unique] IEnumString *LPENUMSTRING;
680 [local]
681 HRESULT Next(
682 [in] ULONG celt,
683 [out, size_is(celt), length_is(*pceltFetched)]
684 LPOLESTR *rgelt,
685 [out] ULONG *pceltFetched);
687 [call_as(Next)]
688 HRESULT RemoteNext(
689 [in] ULONG celt,
690 [out, size_is(celt), length_is(*pceltFetched)]
691 LPOLESTR *rgelt,
692 [out] ULONG *pceltFetched);
694 HRESULT Skip(
695 [in] ULONG celt);
697 HRESULT Reset();
699 HRESULT Clone(
700 [out] IEnumString **ppenum);
704 object,
705 uuid(00000140-0000-0000-C000-000000000046)
707 interface IClassActivator : IUnknown
709 HRESULT GetClassObject(
710 [in] REFCLSID rclsid,
711 [in] DWORD dwClassContext,
712 [in] LCID locale,
713 [in] REFIID riid,
714 [out, iid_is(riid)] void **ppv);
717 /******************** Storage ********************/
720 object,
721 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
722 pointer_default(unique)
724 interface ISequentialStream : IUnknown
726 [local]
727 HRESULT Read(
728 [out, size_is(cb), length_is(*pcbRead)]
729 void *pv,
730 [in] ULONG cb,
731 [out] ULONG *pcbRead);
733 [call_as(Read)]
734 HRESULT RemoteRead(
735 [out, size_is(cb), length_is(*pcbRead)]
736 byte *pv,
737 [in] ULONG cb,
738 [out] ULONG *pcbRead);
740 [local]
741 HRESULT Write(
742 [in, size_is(cb)] const void *pv,
743 [in] ULONG cb,
744 [out] ULONG *pcbWritten);
746 [call_as(Write)]
747 HRESULT RemoteWrite(
748 [in, size_is(cb)] const byte *pv,
749 [in] ULONG cb,
750 [out] ULONG *pcbWritten);
754 object,
755 uuid(0000000c-0000-0000-C000-000000000046),
756 pointer_default(unique)
758 interface IStream : ISequentialStream
760 typedef [unique] IStream *LPSTREAM;
762 typedef struct tagSTATSTG {
763 LPOLESTR pwcsName;
764 DWORD type;
765 ULARGE_INTEGER cbSize;
766 FILETIME mtime;
767 FILETIME ctime;
768 FILETIME atime;
769 DWORD grfMode;
770 DWORD grfLocksSupported;
771 CLSID clsid;
772 DWORD grfStateBits;
773 DWORD reserved;
774 } STATSTG;
776 typedef enum tagSTGTY {
777 STGTY_STORAGE = 1,
778 STGTY_STREAM = 2,
779 STGTY_LOCKBYTES = 3,
780 STGTY_PROPERTY = 4
781 } STGTY;
783 typedef enum tagSTREAM_SEEK {
784 STREAM_SEEK_SET = 0,
785 STREAM_SEEK_CUR = 1,
786 STREAM_SEEK_END = 2
787 } STREAM_SEEK;
789 /* these are defined in Linux's fcntl.h,
790 * undefine them to avoid conflicts */
791 cpp_quote("#undef LOCK_MAND")
792 cpp_quote("#undef LOCK_READ")
793 cpp_quote("#undef LOCK_WRITE")
794 cpp_quote("#undef LOCK_RW")
796 typedef enum tagLOCKTYPE {
797 LOCK_WRITE = 1,
798 LOCK_EXCLUSIVE = 2,
799 LOCK_ONLYONCE = 4
800 } LOCKTYPE;
802 [local]
803 HRESULT Seek(
804 [in] LARGE_INTEGER dlibMove,
805 [in] DWORD dwOrigin,
806 [out] ULARGE_INTEGER *plibNewPosition);
808 [call_as(Seek)]
809 HRESULT RemoteSeek(
810 [in] LARGE_INTEGER dlibMove,
811 [in] DWORD dwOrigin,
812 [out] ULARGE_INTEGER *plibNewPosition);
814 HRESULT SetSize(
815 [in] ULARGE_INTEGER libNewSize);
817 [local]
818 HRESULT CopyTo(
819 [in, unique] IStream *pstm,
820 [in] ULARGE_INTEGER cb,
821 [out] ULARGE_INTEGER *pcbRead,
822 [out] ULARGE_INTEGER *pcbWritten);
824 [call_as(CopyTo)]
825 HRESULT RemoteCopyTo(
826 [in, unique] IStream *pstm,
827 [in] ULARGE_INTEGER cb,
828 [out] ULARGE_INTEGER *pcbRead,
829 [out] ULARGE_INTEGER *pcbWritten);
831 HRESULT Commit(
832 [in] DWORD grfCommitFlags);
834 HRESULT Revert();
836 HRESULT LockRegion(
837 [in] ULARGE_INTEGER libOffset,
838 [in] ULARGE_INTEGER cb,
839 [in] DWORD dwLockType);
841 HRESULT UnlockRegion(
842 [in] ULARGE_INTEGER libOffset,
843 [in] ULARGE_INTEGER cb,
844 [in] DWORD dwLockType);
846 HRESULT Stat(
847 [out] STATSTG *pstatstg,
848 [in] DWORD grfStatFlag);
850 HRESULT Clone(
851 [out] IStream **ppstm);
855 object,
856 uuid(0000000d-0000-0000-C000-000000000046),
857 pointer_default(unique)
859 interface IEnumSTATSTG : IUnknown
861 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
863 [local]
864 HRESULT Next(
865 [in] ULONG celt,
866 [out, size_is(celt), length_is(*pceltFetched)]
867 STATSTG *rgelt,
868 [out] ULONG *pceltFetched);
870 [call_as(Next)]
871 HRESULT RemoteNext(
872 [in] ULONG celt,
873 [out, size_is(celt), length_is(*pceltFetched)]
874 STATSTG *rgelt,
875 [out] ULONG *pceltFetched);
877 HRESULT Skip(
878 [in] ULONG celt);
880 HRESULT Reset();
882 HRESULT Clone(
883 [out] IEnumSTATSTG **ppenum);
887 object,
888 uuid(0000000b-0000-0000-C000-000000000046),
889 pointer_default(unique)
891 interface IStorage : IUnknown
893 typedef [unique] IStorage *LPSTORAGE;
895 typedef struct tagRemSNB {
896 unsigned long ulCntStr;
897 unsigned long ulCntChar;
898 [size_is(ulCntChar)] OLECHAR rgString[];
899 } RemSNB;
901 typedef [unique] RemSNB *wireSNB;
902 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
904 HRESULT CreateStream(
905 [in] LPCOLESTR pwcsName,
906 [in] DWORD grfMode,
907 [in] DWORD reserved1,
908 [in] DWORD reserved2,
909 [out] IStream **ppstm);
911 [local]
912 HRESULT OpenStream(
913 [in] LPCOLESTR pwcsName,
914 [in, unique] void *reserved1,
915 [in] DWORD grfMode,
916 [in] DWORD reserved2,
917 [out] IStream **ppstm);
919 [call_as(OpenStream)]
920 HRESULT RemoteOpenStream(
921 [in] LPCOLESTR pwcsName,
922 [in] unsigned long cbReserved1,
923 [in, unique, size_is(cbReserved1)] byte *reserved1,
924 [in] DWORD grfMode,
925 [in] DWORD reserved2,
926 [out] IStream **ppstm);
928 HRESULT CreateStorage(
929 [in] LPCOLESTR pwcsName,
930 [in] DWORD grfMode,
931 [in] DWORD dwStgFmt,
932 [in] DWORD reserved2,
933 [out] IStorage **ppstg);
935 HRESULT OpenStorage(
936 [in, unique] LPCOLESTR pwcsName,
937 [in, unique] IStorage *pstgPriority,
938 [in] DWORD grfMode,
939 [in, unique] SNB snbExclude,
940 [in] DWORD reserved,
941 [out] IStorage **ppstg);
943 HRESULT CopyTo(
944 [in] DWORD ciidExclude,
945 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
946 [in, unique] SNB snbExclude,
947 [in, unique] IStorage *pstgDest);
949 HRESULT MoveElementTo(
950 [in] LPCOLESTR pwcsName,
951 [in, unique] IStorage *pstgDest,
952 [in] LPCOLESTR pwcsNewName,
953 [in] DWORD grfFlags);
955 HRESULT Commit(
956 [in] DWORD grfCommitFlags);
958 HRESULT Revert();
960 [local]
961 HRESULT EnumElements(
962 [in] DWORD reserved1,
963 [in, unique, size_is(1)] void *reserved2,
964 [in] DWORD reserved3,
965 [out] IEnumSTATSTG **ppenum);
967 [call_as(EnumElements)]
968 HRESULT RemoteEnumElements(
969 [in] DWORD reserved1,
970 [in] unsigned long cbReserved2,
971 [in, unique, size_is(cbReserved2)] byte *reserved2,
972 [in] DWORD reserved3,
973 [out] IEnumSTATSTG **ppenum);
975 HRESULT DestroyElement(
976 [in] LPCOLESTR pwcsName);
978 HRESULT RenameElement(
979 [in] LPCOLESTR pwcsOldName,
980 [in] LPCOLESTR pwcsNewName);
982 HRESULT SetElementTimes(
983 [in, unique] LPCOLESTR pwcsName,
984 [in, unique] const FILETIME *pctime,
985 [in, unique] const FILETIME *patime,
986 [in, unique] const FILETIME *pmtime);
988 HRESULT SetClass(
989 [in] REFCLSID clsid);
991 HRESULT SetStateBits(
992 [in] DWORD grfStateBits,
993 [in] DWORD grfMask);
995 HRESULT Stat(
996 [out] STATSTG *pstatstg,
997 [in] DWORD grfStatFlag);
1001 object,
1002 uuid(0000010b-0000-0000-C000-000000000046),
1003 pointer_default(unique)
1005 interface IPersistFile : IPersist
1007 typedef [unique] IPersistFile *LPPERSISTFILE;
1009 HRESULT IsDirty();
1011 HRESULT Load(
1012 [in] LPCOLESTR pszFileName,
1013 [in] DWORD dwMode);
1015 HRESULT Save(
1016 [in, unique] LPCOLESTR pszFileName,
1017 [in] BOOL fRemember);
1019 HRESULT SaveCompleted(
1020 [in, unique] LPCOLESTR pszFileName);
1022 HRESULT GetCurFile(
1023 [out] LPOLESTR *ppszFileName);
1027 object,
1028 uuid(0000010a-0000-0000-C000-000000000046),
1029 pointer_default(unique)
1031 interface IPersistStorage : IPersist
1033 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1035 HRESULT IsDirty();
1037 HRESULT InitNew(
1038 [in, unique] IStorage *pStg);
1040 HRESULT Load(
1041 [in, unique] IStorage *pStg);
1043 HRESULT Save(
1044 [in, unique] IStorage *pStgSave,
1045 [in] BOOL fSameAsLoad);
1047 HRESULT SaveCompleted(
1048 [in, unique] IStorage *pStgNew);
1050 HRESULT HandsOffStorage();
1054 object,
1055 uuid(00000012-0000-0000-C000-000000000046),
1056 pointer_default(unique)
1058 interface IRootStorage : IUnknown
1060 typedef [unique] IRootStorage *LPROOTSTORAGE;
1062 HRESULT SwitchToFile(
1063 [in] LPOLESTR pszFile);
1067 object,
1068 uuid(0000000a-0000-0000-C000-000000000046),
1069 pointer_default(unique)
1071 interface ILockBytes : IUnknown
1073 typedef [unique] ILockBytes *LPLOCKBYTES;
1075 [local]
1076 HRESULT ReadAt(
1077 [in] ULARGE_INTEGER ulOffset,
1078 [out, size_is(cb), length_is(*pcbRead)]
1079 void *pv,
1080 [in] ULONG cb,
1081 [out] ULONG *pcbRead);
1083 [call_as(ReadAt)]
1084 HRESULT RemoteReadAt(
1085 [in] ULARGE_INTEGER ulOffset,
1086 [out, size_is(cb), length_is(*pcbRead)]
1087 byte *pv,
1088 [in] ULONG cb,
1089 [out] ULONG *pcbRead);
1091 [local]
1092 HRESULT WriteAt(
1093 [in] ULARGE_INTEGER ulOffset,
1094 [in, size_is(cb)] const void *pv,
1095 [in] ULONG cb,
1096 [out] ULONG *pcbWritten);
1098 [call_as(WriteAt)]
1099 HRESULT RemoteWriteAt(
1100 [in] ULARGE_INTEGER ulOffset,
1101 [in, size_is(cb)] const byte *pv,
1102 [in] ULONG cb,
1103 [out] ULONG *pcbWritten);
1105 HRESULT Flush();
1107 HRESULT SetSize(
1108 [in] ULARGE_INTEGER cb);
1110 HRESULT LockRegion(
1111 [in] ULARGE_INTEGER libOffset,
1112 [in] ULARGE_INTEGER cb,
1113 [in] DWORD dwLockType);
1115 HRESULT UnlockRegion(
1116 [in] ULARGE_INTEGER libOffset,
1117 [in] ULARGE_INTEGER cb,
1118 [in] DWORD dwLockType);
1120 HRESULT Stat(
1121 [out] STATSTG *pstatstg,
1122 [in] DWORD grfStatFlag);
1126 object,
1127 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1128 pointer_default(unique)
1130 interface IFillLockBytes : IUnknown
1132 [local]
1133 HRESULT FillAppend(
1134 [in, size_is(cb)] const void *pv,
1135 [in] ULONG cb,
1136 [out] ULONG *pcbWritten);
1138 [call_as(FillAppend)]
1139 HRESULT RemoteFillAppend(
1140 [in, size_is(cb)] const byte *pv,
1141 [in] ULONG cb,
1142 [out] ULONG *pcbWritten);
1144 [local]
1145 HRESULT FillAt(
1146 [in] ULARGE_INTEGER ulOffset,
1147 [in, size_is(cb)] const void *pv,
1148 [in] ULONG cb,
1149 [out] ULONG *pcbWritten);
1151 [call_as(FillAt)]
1152 HRESULT RemoteFillAt(
1153 [in] ULARGE_INTEGER ulOffset,
1154 [in, size_is(cb)] const byte *pv,
1155 [in] ULONG cb,
1156 [out] ULONG *pcbWritten);
1158 HRESULT SetFillSize(
1159 [in] ULARGE_INTEGER ulSize);
1161 HRESULT Terminate(
1162 [in] BOOL bCanceled);
1166 object,
1167 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1168 pointer_default(unique)
1170 interface IProgressNotify : IUnknown
1172 HRESULT OnProgress(
1173 [in] DWORD dwProgressCurrent,
1174 [in] DWORD dwProgressMaximum,
1175 [in] BOOL fAccurate,
1176 [in] BOOL fOwner);
1180 local,
1181 object,
1182 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1183 pointer_default(unique)
1185 interface ILayoutStorage : IUnknown
1187 typedef struct tagStorageLayout {
1188 DWORD LayoutType;
1189 OLECHAR *pwcsElementName;
1190 LARGE_INTEGER cOffset;
1191 LARGE_INTEGER cBytes;
1192 } StorageLayout;
1194 HRESULT LayoutScript(
1195 [in] StorageLayout *pStorageLayout,
1196 [in] DWORD nEntries,
1197 [in] DWORD glfInterleavedFlag);
1199 HRESULT BeginMonitor();
1201 HRESULT EndMonitor();
1203 HRESULT ReLayoutDocfile(
1204 [in] OLECHAR *pwcsNewDfName);
1206 HRESULT ReLayoutDocfileOnILockBytes(
1207 [in] ILockBytes *pILockBytes);
1211 object,
1212 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
1214 interface IBlockingLock : IUnknown
1216 HRESULT Lock(
1217 [in] DWORD dwTimeout);
1219 HRESULT Unlock();
1224 object,
1225 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
1227 interface ITimeAndNoticeControl : IUnknown
1229 HRESULT SuppressChanges(
1230 [in] DWORD res1,
1231 [in] DWORD res2);
1238 object,
1239 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
1241 interface IOplockStorage: IUnknown
1243 HRESULT CreateStorageEx(
1244 [in] LPCWSTR pwcsName,
1245 [in] DWORD grfMode,
1246 [in] DWORD stgfmt,
1247 [in] DWORD grfAttrs,
1248 [in] REFIID riid,
1249 [out, iid_is(riid)] void **ppstgOpen);
1251 HRESULT OpenStorageEx(
1252 [in] LPCWSTR pwcsName,
1253 [in] DWORD grfMode,
1254 [in] DWORD stgfmt,
1255 [in] DWORD grfAttrs,
1256 [in] REFIID riid,
1257 [out, iid_is(riid)] void **ppstgOpen);
1260 /******************** Data Object ********************/
1263 object,
1264 uuid(00000103-0000-0000-C000-000000000046),
1265 pointer_default(unique)
1267 interface IEnumFORMATETC : IUnknown
1269 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1271 typedef struct tagDVTARGETDEVICE {
1272 DWORD tdSize;
1273 WORD tdDriverNameOffset;
1274 WORD tdDeviceNameOffset;
1275 WORD tdPortNameOffset;
1276 WORD tdExtDevmodeOffset;
1277 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1278 BYTE tdData[];
1279 } DVTARGETDEVICE;
1281 typedef CLIPFORMAT *LPCLIPFORMAT;
1283 typedef struct tagFORMATETC {
1284 CLIPFORMAT cfFormat;
1285 [unique] DVTARGETDEVICE *ptd;
1286 DWORD dwAspect;
1287 LONG lindex;
1288 DWORD tymed;
1289 } FORMATETC, *LPFORMATETC;
1291 [local]
1292 HRESULT Next(
1293 [in] ULONG celt,
1294 [out, size_is(celt), length_is(*pceltFetched)]
1295 FORMATETC *rgelt,
1296 [out] ULONG *pceltFetched);
1298 [call_as(Next)]
1299 HRESULT RemoteNext(
1300 [in] ULONG celt,
1301 [out, size_is(celt), length_is(*pceltFetched)]
1302 FORMATETC *rgelt,
1303 [out] ULONG *pceltFetched);
1305 HRESULT Skip(
1306 [in] ULONG celt);
1308 HRESULT Reset();
1310 HRESULT Clone(
1311 [out] IEnumFORMATETC **ppenum);
1315 object,
1316 uuid(00000105-0000-0000-C000-000000000046),
1317 pointer_default(unique)
1319 interface IEnumSTATDATA : IUnknown
1321 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1323 typedef enum tagADVF {
1324 ADVF_NODATA = 1,
1325 ADVF_PRIMEFIRST = 2,
1326 ADVF_ONLYONCE = 4,
1327 ADVF_DATAONSTOP = 64,
1328 ADVFCACHE_NOHANDLER = 8,
1329 ADVFCACHE_FORCEBUILTIN = 16,
1330 ADVFCACHE_ONSAVE = 32
1331 } ADVF;
1333 typedef struct tagSTATDATA
1335 FORMATETC formatetc;
1336 DWORD advf;
1337 [unique] IAdviseSink *pAdvSink;
1338 DWORD dwConnection;
1339 } STATDATA, *LPSTATDATA;
1341 [local]
1342 HRESULT Next(
1343 [in] ULONG celt,
1344 [out, size_is(celt), length_is(*pceltFetched)]
1345 STATDATA *rgelt,
1346 [out] ULONG *pceltFetched);
1348 [call_as(Next)]
1349 HRESULT RemoteNext(
1350 [in] ULONG celt,
1351 [out, size_is(celt), length_is(*pceltFetched)]
1352 STATDATA *rgelt,
1353 [out] ULONG *pceltFetched);
1355 HRESULT Skip(
1356 [in] ULONG celt);
1358 HRESULT Reset();
1360 HRESULT Clone(
1361 [out] IEnumSTATDATA **ppenum);
1365 object,
1366 uuid(0000010f-0000-0000-C000-000000000046),
1367 pointer_default(unique)
1369 interface IAdviseSink : IUnknown
1371 typedef IAdviseSink *LPADVISESINK;
1373 typedef [v1_enum] enum tagTYMED {
1374 TYMED_HGLOBAL = 1,
1375 TYMED_FILE = 2,
1376 TYMED_ISTREAM = 4,
1377 TYMED_ISTORAGE = 8,
1378 TYMED_GDI = 16,
1379 TYMED_MFPICT = 32,
1380 TYMED_ENHMF = 64,
1381 TYMED_NULL = 0
1382 } TYMED;
1384 typedef struct tagRemSTGMEDIUM {
1385 DWORD tymed;
1386 DWORD dwHandleType;
1387 unsigned long pData;
1388 unsigned long pUnkForRelease;
1389 unsigned long cbData;
1390 [size_is(cbData)] byte data[];
1391 } RemSTGMEDIUM;
1393 typedef struct tagSTGMEDIUM {
1394 DWORD tymed;
1395 [switch_is(tymed)] union {
1396 [case(TYMED_GDI)] HBITMAP hBitmap;
1397 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1398 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1399 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1400 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1401 [case(TYMED_ISTREAM)] IStream *pstm;
1402 [case(TYMED_ISTORAGE)] IStorage *pstg;
1403 [default] ;
1404 } DUMMYUNIONNAME;
1405 [unique] IUnknown *pUnkForRelease;
1406 } uSTGMEDIUM;
1408 /* copied from wingdi.h */
1409 #define OBJ_PEN 1
1410 #define OBJ_BRUSH 2
1411 #define OBJ_DC 3
1412 #define OBJ_METADC 4
1413 #define OBJ_PAL 5
1414 #define OBJ_FONT 6
1415 #define OBJ_BITMAP 7
1416 #define OBJ_REGION 8
1417 #define OBJ_METAFILE 9
1418 #define OBJ_MEMDC 10
1419 #define OBJ_EXTPEN 11
1420 #define OBJ_ENHMETADC 12
1421 #define OBJ_ENHMETAFILE 13
1423 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1424 case OBJ_BITMAP: wireHBITMAP hBitmap;
1425 case OBJ_PAL: wireHPALETTE hPalette;
1426 default: wireHGLOBAL hGeneric;
1427 } GDI_OBJECT;
1429 /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION
1430 * violates the C spec, but is necessary for C++. Avoid C spec violation. */
1431 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1432 cpp_quote("#define _STGMEDIUM_UNION")
1433 cpp_quote("#endif")
1435 typedef struct _userSTGMEDIUM {
1436 union _STGMEDIUM_UNION switch(DWORD tymed) u {
1437 case TYMED_NULL: ;
1438 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1439 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1440 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1441 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1442 case TYMED_FILE: LPOLESTR lpszFileName;
1443 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1444 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1445 } DUMMYUNIONNAME;
1446 IUnknown *pUnkForRelease;
1447 } userSTGMEDIUM;
1449 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1450 cpp_quote("#undef _STGMEDIUM_UNION")
1451 cpp_quote("#endif")
1453 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1454 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1456 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1457 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1459 typedef STGMEDIUM *LPSTGMEDIUM;
1461 typedef struct _userFLAG_STGMEDIUM {
1462 long ContextFlags;
1463 long fPassOwnership;
1464 userSTGMEDIUM Stgmed;
1465 } userFLAG_STGMEDIUM;
1467 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1469 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1470 long ContextFlags;
1471 long fPassOwnership;
1472 STGMEDIUM Stgmed;
1473 } FLAG_STGMEDIUM;
1475 [local]
1476 void OnDataChange(
1477 [in, unique] FORMATETC *pFormatetc,
1478 [in, unique] STGMEDIUM *pStgmed);
1480 [call_as(OnDataChange)]
1481 HRESULT RemoteOnDataChange(
1482 [in, unique] FORMATETC *pFormatetc,
1483 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1485 [local]
1486 void OnViewChange(
1487 [in] DWORD dwAspect,
1488 [in] LONG lindex);
1490 [call_as(OnViewChange)]
1491 HRESULT RemoteOnViewChange(
1492 [in] DWORD dwAspect,
1493 [in] LONG lindex);
1495 [local]
1496 void OnRename(
1497 [in] IMoniker *pmk);
1499 [call_as(OnRename)]
1500 HRESULT RemoteOnRename(
1501 [in] IMoniker *pmk);
1503 [local]
1504 void OnSave();
1506 [call_as(OnSave)]
1507 HRESULT RemoteOnSave();
1509 [local]
1510 void OnClose();
1512 [call_as(OnClose)]
1513 HRESULT RemoteOnClose();
1517 object,
1518 uuid(00000125-0000-0000-C000-000000000046),
1519 pointer_default(unique)
1521 interface IAdviseSink2 : IAdviseSink
1523 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1525 [local]
1526 void OnLinkSrcChange(
1527 [in, unique] IMoniker *pmk);
1529 [call_as(OnLinkSrcChange)]
1530 HRESULT RemoteOnLinkSrcChange(
1531 [in, unique] IMoniker *pmk);
1535 object,
1536 uuid(0000010e-0000-0000-C000-000000000046),
1537 pointer_default(unique)
1539 interface IDataObject : IUnknown
1541 typedef [unique] IDataObject *LPDATAOBJECT;
1543 typedef enum tagDATADIR {
1544 DATADIR_GET = 1,
1545 DATADIR_SET = 2
1546 } DATADIR;
1548 [local]
1549 HRESULT GetData(
1550 [in, unique] FORMATETC *pformatetcIn,
1551 [out] STGMEDIUM *pmedium);
1553 [call_as(GetData)]
1554 HRESULT RemoteGetData(
1555 [in, unique] FORMATETC *pformatetcIn,
1556 [out] STGMEDIUM *pRemoteMedium);
1558 [local]
1559 HRESULT GetDataHere(
1560 [in, unique] FORMATETC *pformatetc,
1561 [in, out] STGMEDIUM *pmedium);
1563 [call_as(GetDataHere)]
1564 HRESULT RemoteGetDataHere(
1565 [in, unique] FORMATETC *pformatetc,
1566 [in, out] STGMEDIUM *pRemoteMedium);
1568 HRESULT QueryGetData(
1569 [in, unique] FORMATETC *pformatetc);
1571 HRESULT GetCanonicalFormatEtc(
1572 [in, unique] FORMATETC *pformatectIn,
1573 [out] FORMATETC *pformatetcOut);
1575 [local]
1576 HRESULT SetData(
1577 [in, unique] FORMATETC *pformatetc,
1578 [in, unique] STGMEDIUM *pmedium,
1579 [in] BOOL fRelease);
1581 [call_as(SetData)]
1582 HRESULT RemoteSetData(
1583 [in, unique] FORMATETC *pformatetc,
1584 [in, unique] FLAG_STGMEDIUM *pmedium,
1585 [in] BOOL fRelease);
1587 HRESULT EnumFormatEtc(
1588 [in] DWORD dwDirection,
1589 [out] IEnumFORMATETC **ppenumFormatEtc);
1591 HRESULT DAdvise(
1592 [in] FORMATETC *pformatetc,
1593 [in] DWORD advf,
1594 [in, unique] IAdviseSink *pAdvSink,
1595 [out] DWORD *pdwConnection);
1597 HRESULT DUnadvise(
1598 [in] DWORD dwConnection);
1600 HRESULT EnumDAdvise(
1601 [out] IEnumSTATDATA **ppenumAdvise);
1605 local,
1606 object,
1607 uuid(00000110-0000-0000-C000-000000000046)
1609 interface IDataAdviseHolder : IUnknown
1611 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1613 HRESULT Advise(
1614 [in, unique] IDataObject *pDataObject,
1615 [in, unique] FORMATETC *pFetc,
1616 [in] DWORD advf,
1617 [in, unique] IAdviseSink *pAdvise,
1618 [out] DWORD *pdwConnection);
1620 HRESULT Unadvise(
1621 [in] DWORD dwConnection);
1623 HRESULT EnumAdvise(
1624 [out] IEnumSTATDATA **ppenumAdvise);
1626 HRESULT SendOnDataChange(
1627 [in, unique] IDataObject *pDataObject,
1628 [in] DWORD dwReserved,
1629 [in] DWORD advf);
1632 /******************** Remoting ********************/
1635 local,
1636 object,
1637 uuid(00000016-0000-0000-C000-000000000046)
1639 interface IMessageFilter : IUnknown
1641 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1643 typedef enum tagCALLTYPE {
1644 CALLTYPE_TOPLEVEL = 1,
1645 CALLTYPE_NESTED = 2,
1646 CALLTYPE_ASYNC = 3,
1647 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1648 CALLTYPE_ASYNC_CALLPENDING = 5
1649 } CALLTYPE;
1651 typedef enum tagSERVERCALL {
1652 SERVERCALL_ISHANDLED = 0,
1653 SERVERCALL_REJECTED = 1,
1654 SERVERCALL_RETRYLATER = 2
1655 } SERVERCALL;
1657 typedef enum tagPENDINGTYPE {
1658 PENDINGTYPE_TOPLEVEL = 1,
1659 PENDINGTYPE_NESTED = 2
1660 } PENDINGTYPE;
1662 typedef enum tagPENDINGMSG {
1663 PENDINGMSG_CANCELCALL = 0,
1664 PENDINGMSG_WAITNOPROCESS = 1,
1665 PENDINGMSG_WAITDEFPROCESS = 2
1666 } PENDINGMSG;
1668 typedef struct tagINTERFACEINFO {
1669 IUnknown *pUnk;
1670 IID iid;
1671 WORD wMethod;
1672 } INTERFACEINFO, *LPINTERFACEINFO;
1674 DWORD HandleInComingCall(
1675 [in] DWORD dwCallType,
1676 [in] HTASK htaskCaller,
1677 [in] DWORD dwTickCount,
1678 [in] LPINTERFACEINFO lpInterfaceInfo);
1680 DWORD RetryRejectedCall(
1681 [in] HTASK htaskCallee,
1682 [in] DWORD dwTickCount,
1683 [in] DWORD dwRejectType);
1685 DWORD MessagePending(
1686 [in] HTASK htaskCallee,
1687 [in] DWORD dwTickCount,
1688 [in] DWORD dwPendingType);
1692 local,
1693 object,
1694 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1696 interface IRpcChannelBuffer : IUnknown
1698 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1700 typedef unsigned long RPCOLEDATAREP;
1702 typedef struct tagRPCOLEMESSAGE {
1703 void *reserved1;
1704 RPCOLEDATAREP dataRepresentation;
1705 void *Buffer;
1706 ULONG cbBuffer;
1707 ULONG iMethod;
1708 void *reserved2[5];
1709 ULONG rpcFlags;
1710 } RPCOLEMESSAGE;
1712 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1714 HRESULT GetBuffer(
1715 [in] RPCOLEMESSAGE *pMessage,
1716 [in] REFIID riid);
1718 HRESULT SendReceive(
1719 [in,out] RPCOLEMESSAGE *pMessage,
1720 [out] ULONG *pStatus);
1722 HRESULT FreeBuffer(
1723 [in] RPCOLEMESSAGE *pMessage);
1725 HRESULT GetDestCtx(
1726 [out] DWORD *pdwDestContext,
1727 [out] void **ppvDestContext);
1729 HRESULT IsConnected();
1733 local,
1734 object,
1735 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1737 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1739 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1741 HRESULT GetProtocolVersion(
1742 [in,out] DWORD *pdwVersion);
1746 local,
1747 object,
1748 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1750 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1752 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1754 HRESULT Send(
1755 [in,out] RPCOLEMESSAGE *pMsg,
1756 [out] ULONG *pulStatus);
1758 HRESULT Receive(
1759 [in,out] RPCOLEMESSAGE *pMsg,
1760 [in] ULONG ulSize,
1761 [out] ULONG *pulStatus);
1763 HRESULT Cancel(
1764 [in] RPCOLEMESSAGE *pMsg);
1766 HRESULT GetCallContext(
1767 [in] RPCOLEMESSAGE *pMsg,
1768 [in] REFIID riid,
1769 [out] void **pInterface);
1771 HRESULT GetDestCtxEx(
1772 [in] RPCOLEMESSAGE *pMsg,
1773 [out] DWORD *pdwDestContext,
1774 [out] void **ppvDestContext);
1776 HRESULT GetState(
1777 [in] RPCOLEMESSAGE *pMsg,
1778 [out] DWORD *pState);
1780 HRESULT RegisterAsync(
1781 [in] RPCOLEMESSAGE *pMsg,
1782 [in] IAsyncManager *pAsyncMgr);
1786 local,
1787 object,
1788 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
1789 pointer_default(unique)
1791 interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
1793 HRESULT Send(
1794 [in, out] RPCOLEMESSAGE *pMsg,
1795 [in] ISynchronize *pSync,
1796 [out] ULONG *pulStatus);
1798 HRESULT Receive(
1799 [in, out] RPCOLEMESSAGE *pMsg,
1800 [out] ULONG *pulStatus);
1802 HRESULT GetDestCtxEx(
1803 [in] RPCOLEMESSAGE *pMsg,
1804 [out] DWORD *pdwDestContext,
1805 [out] void **ppvDestContext);
1809 local,
1810 object,
1811 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
1813 interface IRpcSyntaxNegotiate : IUnknown
1815 HRESULT NegotiateSyntax(
1816 [in, out] RPCOLEMESSAGE *pMsg);
1820 local,
1821 object,
1822 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1824 interface IRpcProxyBuffer : IUnknown
1826 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1828 HRESULT Connect(
1829 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1831 void Disconnect();
1835 local,
1836 object,
1837 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1839 interface IRpcStubBuffer : IUnknown
1841 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1843 HRESULT Connect(
1844 [in] IUnknown *pUnkServer);
1846 void Disconnect();
1848 HRESULT Invoke(
1849 [in] RPCOLEMESSAGE *_prpcmsg,
1850 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1852 IRpcStubBuffer *IsIIDSupported(
1853 [in] REFIID riid);
1855 ULONG CountRefs();
1857 HRESULT DebugServerQueryInterface(
1858 void **ppv);
1860 void DebugServerRelease(
1861 void *pv);
1865 local,
1866 object,
1867 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1869 interface IPSFactoryBuffer : IUnknown
1871 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1873 HRESULT CreateProxy(
1874 [in] IUnknown *pUnkOuter,
1875 [in] REFIID riid,
1876 [out] IRpcProxyBuffer **ppProxy,
1877 [out] void **ppv);
1879 HRESULT CreateStub(
1880 [in] REFIID riid,
1881 [in, unique] IUnknown *pUnkServer,
1882 [out] IRpcStubBuffer **ppStub);
1886 local,
1887 object,
1888 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1890 interface IChannelHook : IUnknown
1892 typedef [unique] IChannelHook *LPCHANNELHOOK;
1894 typedef struct SChannelHookCallInfo {
1895 IID iid;
1896 DWORD cbSize;
1897 GUID uCausality;
1898 DWORD dwServerPid;
1899 DWORD iMethod;
1900 void *pObject;
1901 } SChannelHookCallInfo;
1903 void ClientGetSize(
1904 [in] REFGUID uExtent,
1905 [in] REFIID riid,
1906 [out] ULONG *pDataSize);
1908 void ClientFillBuffer(
1909 [in] REFGUID uExtent,
1910 [in] REFIID riid,
1911 [in, out] ULONG *pDataSize,
1912 [in] void *pDataBuffer);
1914 void ClientNotify(
1915 [in] REFGUID uExtent,
1916 [in] REFIID riid,
1917 [in] ULONG cbDataSize,
1918 [in] void *pDataBuffer,
1919 [in] DWORD lDataRep,
1920 [in] HRESULT hrFault);
1922 void ServerNotify(
1923 [in] REFGUID uExtent,
1924 [in] REFIID riid,
1925 [in] ULONG cbDataSize,
1926 [in] void *pDataBuffer,
1927 [in] DWORD lDataRep);
1929 void ServerGetSize(
1930 [in] REFGUID uExtent,
1931 [in] REFIID riid,
1932 [in] HRESULT hrFault,
1933 [out] ULONG *pDataSize);
1935 void ServerFillBuffer(
1936 [in] REFGUID uExtent,
1937 [in] REFIID riid,
1938 [in, out] ULONG *pDataSize,
1939 [in] void *pDataBuffer,
1940 [in] HRESULT hrFault );
1943 extern const FMTID FMTID_SummaryInformation;
1944 extern const FMTID FMTID_DocSummaryInformation;
1945 extern const FMTID FMTID_UserDefinedProperties;
1948 /******************** Connection Points ********************/
1949 /* FIXME */
1951 /******************** DCOM ********************/
1954 local,
1955 object,
1956 uuid(0000013D-0000-0000-C000-000000000046)
1958 interface IClientSecurity : IUnknown
1960 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1961 DWORD dwAuthnSvc;
1962 DWORD dwAuthzSvc;
1963 OLECHAR *pPrincipalName;
1964 HRESULT hr;
1965 } SOLE_AUTHENTICATION_SERVICE;
1967 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1969 typedef struct tagSOLE_AUTHENTICATION_INFO {
1970 DWORD dwAuthnSvc;
1971 DWORD dwAuthzSvc;
1972 void *pAuthInfo;
1973 } SOLE_AUTHENTICATION_INFO;
1975 const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
1976 const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
1978 typedef struct tagSOLE_AUTHENTICATION_LIST {
1979 DWORD cAuthInfo;
1980 SOLE_AUTHENTICATION_INFO *aAuthInfo;
1981 } SOLE_AUTHENTICATION_LIST;
1983 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1984 EOAC_NONE = 0x0,
1985 EOAC_MUTUAL_AUTH = 0x1,
1986 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
1987 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
1988 EOAC_APPID = 0x8, /* CoInitializeSecurity only */
1989 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
1990 EOAC_STATIC_CLOAKING = 0x20,
1991 EOAC_DYNAMIC_CLOAKING = 0x40,
1992 EOAC_ANY_AUTHORITY = 0x80,
1993 EOAC_MAKE_FULLSIC = 0x100,
1994 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
1995 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
1996 EOAC_DEFAULT = 0x800,
1997 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
1998 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
1999 } EOLE_AUTHENTICATION_CAPABILITIES;
2001 HRESULT QueryBlanket(
2002 [in] IUnknown *pProxy,
2003 [out] DWORD *pAuthnSvc,
2004 [out] DWORD *pAuthzSvc,
2005 [out] OLECHAR **pServerPrincName,
2006 [out] DWORD *pAuthnLevel,
2007 [out] DWORD *pImpLevel,
2008 [out] void **pAuthInfo,
2009 [out] DWORD *pCapabilities);
2011 HRESULT SetBlanket(
2012 [in] IUnknown *pProxy,
2013 [in] DWORD AuthnSvc,
2014 [in] DWORD AuthzSvc,
2015 [in] OLECHAR *pServerPrincName,
2016 [in] DWORD AuthnLevel,
2017 [in] DWORD ImpLevel,
2018 [in] void *pAuthInfo,
2019 [in] DWORD Capabilities);
2021 HRESULT CopyProxy(
2022 [in] IUnknown *pProxy,
2023 [out] IUnknown **ppCopy);
2027 local,
2028 object,
2029 uuid(0000013E-0000-0000-C000-000000000046)
2031 interface IServerSecurity : IUnknown
2033 HRESULT QueryBlanket(
2034 [out] DWORD *pAuthnSvc,
2035 [out] DWORD *pAuthzSvc,
2036 [out] OLECHAR **pServerPrincName,
2037 [out] DWORD *pAuthnLevel,
2038 [out] DWORD *pImpLevel,
2039 [out] void **pPrivs,
2040 [out] DWORD *pCapabilities);
2042 HRESULT ImpersonateClient();
2044 HRESULT RevertToSelf();
2046 BOOL IsImpersonating();
2050 local,
2051 object,
2052 uuid(00000024-0000-0000-C000-000000000046)
2054 interface IAsyncSetup : IUnknown
2056 HRESULT GetAsyncManager(
2057 [in] REFIID riid,
2058 [in] IUnknown *pOuter,
2059 [in] DWORD dwFlags,
2060 [out] IUnknown **ppInner,
2061 [out] IAsyncManager **ppAsyncMgr);
2065 object,
2066 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
2068 interface IDirectWriterLock : IUnknown
2070 HRESULT WaitForWriteAccess(
2071 [in] DWORD dwTimeout);
2073 HRESULT ReleaseWriteAccess();
2075 HRESULT HaveWriteAccess();
2079 object,
2080 uuid(00000030-0000-0000-C000-000000000046)
2083 interface ISynchronize : IUnknown
2085 HRESULT Wait(
2086 [in] DWORD dwFlags,
2087 [in] DWORD dwMilliseconds);
2089 HRESULT Signal();
2091 HRESULT Reset();
2096 local,
2097 object,
2098 uuid(00000031-0000-0000-C000-000000000046)
2100 interface ISynchronizeHandle : IUnknown
2102 HRESULT GetHandle(
2103 [out] HANDLE *ph);
2108 local,
2109 object,
2110 uuid(00000032-0000-0000-C000-000000000046)
2112 interface ISynchronizeEvent : ISynchronizeHandle
2114 HRESULT SetEventHandle(
2115 [in] HANDLE *ph);
2120 local,
2121 object,
2122 uuid(00000033-0000-0000-C000-000000000046)
2124 interface ISynchronizeContainer : IUnknown
2126 HRESULT AddSynchronize(
2127 [in] ISynchronize *pSync);
2129 HRESULT WaitMultiple(
2130 [in] DWORD dwFlags,
2131 [in] DWORD dwTimeOut,
2132 [out] ISynchronize **ppSync);
2136 local,
2137 object,
2138 uuid(00000025-0000-0000-C000-000000000046)
2140 interface ISynchronizeMutex : ISynchronize
2142 HRESULT ReleaseMutex();
2146 local,
2147 object,
2148 uuid(00000029-0000-0000-C000-000000000046)
2151 interface ICancelMethodCalls : IUnknown
2153 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2155 HRESULT Cancel(
2156 [in] ULONG ulSeconds);
2158 HRESULT TestCancel();
2162 local,
2163 object,
2164 uuid(0000002A-0000-0000-C000-000000000046)
2166 interface IAsyncManager : IUnknown
2168 typedef enum tagDCOM_CALL_STATE {
2169 DCOM_NONE = 0,
2170 DCOM_CALL_COMPLETE = 1,
2171 DCOM_CALL_CANCELED = 2
2172 } DCOM_CALL_STATE;
2174 HRESULT CompleteCall(
2175 [in] HRESULT Result);
2177 HRESULT GetCallContext(
2178 [in] REFIID riid,
2179 [out] void **pInterface);
2181 HRESULT GetState(
2182 [out] ULONG *pulStateFlags);
2186 local,
2187 object,
2188 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
2189 pointer_default(unique)
2191 interface ICallFactory : IUnknown
2193 HRESULT CreateCall(
2194 [in] REFIID riid,
2195 [in] IUnknown *pCtrlUnk,
2196 [in] REFIID riid2,
2197 [out, iid_is(riid2)] IUnknown **ppv);
2201 local,
2202 object,
2203 uuid(00000144-0000-0000-C000-000000000046)
2205 interface IRpcOptions : IUnknown
2207 HRESULT Set(
2208 [in] IUnknown *pPrx,
2209 [in] DWORD dwProperty,
2210 [in] ULONG_PTR dwValue);
2212 HRESULT Query(
2213 [in] IUnknown *pPrx,
2214 [in] DWORD dwProperty,
2215 [out] ULONG_PTR *pdwValue);
2218 enum {
2219 COMBND_RPCTIMEOUT = 1,
2220 COMBND_SERVER_LOCALITY = 2
2223 enum {
2224 SERVER_LOCALITY_PROCESS_LOCAL = 0,
2225 SERVER_LOCALITY_MACHINE_LOCAL = 1,
2226 SERVER_LOCALITY_REMOTE = 2
2230 local,
2231 object,
2232 uuid(00000149-0000-0000-C000-000000000046),
2233 pointer_default(unique)
2235 interface IRpcHelper : IUnknown
2237 HRESULT GetDCOMProtocolVersion(
2238 [out] DWORD *pComVersion);
2240 HRESULT GetIIDFromOBJREF(
2241 [in] void *pObjRef,
2242 [out] IID **piid);
2246 local,
2247 object,
2248 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
2250 interface IReleaseMarshalBuffers : IUnknown
2252 HRESULT ReleaseMarshalBuffer(
2253 [in] RPCOLEMESSAGE *pMsg,
2254 [in] DWORD dwFlags,
2255 [in, unique] IUnknown *pChnl);
2259 local,
2260 object,
2261 uuid(0000002B-0000-0000-C000-000000000046)
2263 interface IWaitMultiple : IUnknown
2265 HRESULT WaitMultiple(
2266 [in] DWORD timeout,
2267 [out] ISynchronize **pSync);
2268 HRESULT AddSynchronize(
2269 [in] ISynchronize *pSync);
2274 object,
2275 uuid(00000026-0000-0000-C000-000000000046)
2277 interface IUrlMon : IUnknown
2279 HRESULT AsyncGetClassBits(
2280 [in] REFCLSID rclsid,
2281 [in, unique] LPCWSTR pszTYPE,
2282 [in, unique] LPCWSTR pszExt,
2283 [in] DWORD dwFileVersionMS,
2284 [in] DWORD dwFileVersionLS,
2285 [in, unique] LPCWSTR pszCodeBase,
2286 [in] IBindCtx *pbc,
2287 [in] DWORD dwClassContext,
2288 [in] REFIID riid,
2289 [in] DWORD flags);
2293 local,
2294 object,
2295 uuid(00000145-0000-0000-C000-000000000046)
2297 interface IForegroundTransfer : IUnknown
2299 HRESULT AllowForegroundTransfer(
2300 [in] void *lpvReserved);
2304 local,
2305 object,
2306 uuid(00000147-0000-0000-C000-000000000046)
2308 interface IAddrTrackingControl : IUnknown
2310 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
2312 HRESULT EnableCOMDynamicAddrTracking();
2313 HRESULT DisableCOMDynamicAddrTracking();
2317 local,
2318 object,
2319 uuid(00000148-0000-0000-C000-000000000046)
2321 interface IAddrExclusionControl : IUnknown
2323 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
2325 HRESULT GetCurrentAddrExclusionList(
2326 [in] REFIID riid,
2327 [out, iid_is(riid)] void **ppEnumerator);
2328 HRESULT UpdateAddrExclusionList(
2329 [in] IUnknown *pEnumerator);
2332 typedef enum _APTTYPE {
2333 APTTYPE_CURRENT = -1,
2334 APTTYPE_STA = 0,
2335 APTTYPE_MTA = 1,
2336 APTTYPE_NA = 2,
2337 APTTYPE_MAINSTA = 3
2338 } APTTYPE;
2340 typedef enum _APTTYPEQUALIFIER {
2341 APTTYPEQUALIFIER_NONE,
2342 APTTYPEQUALIFIER_IMPLICIT_MTA,
2343 APTTYPEQUALIFIER_NA_ON_MTA,
2344 APTTYPEQUALIFIER_NA_ON_STA,
2345 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA,
2346 APTTYPEQUALIFIER_NA_ON_MAINSTA
2347 } APTTYPEQUALIFIER;
2349 typedef enum _THDTYPE {
2350 THDTYPE_BLOCKMESSAGES = 0,
2351 THDTYPE_PROCESSMESSAGES = 1
2352 } THDTYPE;
2355 local,
2356 object,
2357 uuid(000001ce-0000-0000-C000-000000000046),
2358 pointer_default(unique)
2360 interface IComThreadingInfo : IUnknown
2362 HRESULT GetCurrentApartmentType(
2363 [out] APTTYPE *pAptType);
2364 HRESULT GetCurrentThreadType(
2365 [out] THDTYPE *pThreadType);
2366 HRESULT GetCurrentLogicalThreadId(
2367 [out] GUID *pguidLogicalThreadId);
2368 HRESULT SetCurrentLogicalThreadId(
2369 [in] REFGUID rguid);
2374 object,
2375 pointer_default(unique),
2376 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
2378 interface IProcessInitControl : IUnknown
2380 HRESULT ResetInitializerTimeout(
2381 [in] DWORD dwSecondsRemaining);
2385 local,
2386 object,
2387 uuid(00000034-0000-0000-C000-000000000046),
2388 pointer_default(unique)
2390 interface IInitializeSpy : IUnknown
2392 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
2394 HRESULT PreInitialize(
2395 [in] DWORD dwCoInit,
2396 [in] DWORD dwCurThreadAptRefs);
2398 HRESULT PostInitialize(
2399 [in] HRESULT hrCoInit,
2400 [in] DWORD dwCoInit,
2401 [in] DWORD dwNewThreadAptRefs);
2403 HRESULT PreUninitialize(
2404 [in] DWORD dwCurThreadAptRefs);
2406 HRESULT PostUninitialize(
2407 [in] DWORD dwNewThreadAptRefs);
2411 object,
2412 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
2414 interface IThumbnailExtractor : IUnknown
2416 HRESULT ExtractThumbnail(
2417 [in] IStorage *pStg,
2418 [in] ULONG ulLength,
2419 [in] ULONG ulHeight,
2420 [out] ULONG *pulOutputLength,
2421 [out] ULONG *pulOutputHeight,
2422 [out] HBITMAP *phOutputBitmap);
2425 HRESULT OnFileUpdated(
2426 [in] IStorage *pStg);
2429 typedef enum tagGLOBALOPT_PROPERTIES
2431 COMGLB_EXCEPTION_HANDLING = 1,
2432 COMGLB_APPID = 2,
2433 COMGLB_RPC_THREADPOOL_SETTING = 3
2434 } GLOBALOPT_PROPERTIES;
2436 typedef enum tagGLOBALOPT_EH_VALUES
2438 COMGLB_EXCEPTION_HANDLE = 0,
2439 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
2440 COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
2441 COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
2442 } GLOBALOPT_EH_VALUES;
2444 typedef enum tagGLOBALOPT_RPCTP_VALUES
2446 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
2447 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
2448 } GLOBALOPT_RPCTP_VALUES;
2452 object,
2453 local,
2454 pointer_default(unique),
2455 uuid(0000015B-0000-0000-C000-000000000046)
2457 interface IGlobalOptions : IUnknown
2459 HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
2460 HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
2464 object,
2465 pointer_default(unique),
2466 uuid(947990de-cc28-11d2-a0f7-00805f858fb1)
2468 interface IDummyHICONIncluder : IUnknown
2470 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc);
2474 object,
2475 local,
2476 pointer_default(unique),
2477 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b)
2479 interface IApartmentShutdown : IUnknown
2481 void OnUninitialize([in] UINT64 identifier);
2484 cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
2486 typedef DWORD CPFLAGS;
2488 typedef struct tagContextProperty
2490 GUID policyId;
2491 CPFLAGS flags;
2492 [unique] IUnknown *pUnk;
2493 } ContextProperty;
2496 local,
2497 object,
2498 uuid(000001c1-0000-0000-C000-000000000046)
2500 interface IEnumContextProps : IUnknown
2502 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
2504 HRESULT Next(
2505 [in] ULONG celt,
2506 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
2507 [out] ULONG *pceltFetched);
2509 HRESULT Skip(
2510 [in] ULONG celt);
2512 HRESULT Reset();
2514 HRESULT Clone(
2515 [out] IEnumContextProps **ppEnumContextProps);
2517 HRESULT Count(
2518 [out] ULONG *pcelt);
2522 local,
2523 object,
2524 uuid(000001c0-0000-0000-C000-000000000046)
2526 interface IContext : IUnknown
2528 HRESULT SetProperty(
2529 [in] REFGUID policyId,
2530 [in] CPFLAGS flags,
2531 [in] IUnknown *pUnk);
2533 HRESULT RemoveProperty(
2534 [in] REFGUID policyId);
2536 HRESULT GetProperty(
2537 [in] REFGUID guid,
2538 [out] CPFLAGS *pFlags,
2539 [out] IUnknown **ppUnk);
2541 HRESULT EnumContextProps(
2542 [out] IEnumContextProps **ppEnumContextProps);
2546 local,
2547 object,
2548 uuid(000001c6-0000-0000-c000-000000000046),
2549 pointer_default(unique)
2551 interface IObjContext : IContext
2553 void Reserved1();
2554 void Reserved2();
2555 void Reserved3();
2556 void Reserved4();
2557 void Reserved5();
2558 void Reserved6();
2559 void Reserved7();
2562 cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")