ReactOS 0.4.15-dev-7788-g1ad9096
objidl.idl
Go to the documentation of this file.
1/*
2 * Copyright 2002 Ove Kaaven
3 *
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.
8 *
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.
13 *
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
17 */
18
19#ifndef DO_NO_IMPORTS
20import "unknwn.idl";
21#endif
22
23interface IStream;
24interface IEnumString;
25interface IRunningObjectTable;
26interface IMoniker;
27interface IAdviseSink;
28interface IAsyncManager;
29interface ISynchronize;
30
31typedef struct _COSERVERINFO {
34 COAUTHINFO *pAuthInfo;
37
38/******************** Fundamentals ********************/
39
40[
41 local,
42 object,
43 uuid(00000003-0000-0000-C000-000000000046)
44]
45interface IMarshal : IUnknown
46{
48
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);
56
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);
64
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);
72
74 [in, unique] IStream *pStm,
75 [in] REFIID riid,
76 [out] void **ppv);
77
79 [in, unique] IStream *pStm);
80
83}
84
85[
86 local,
87 object,
88 uuid(000001cf-0000-0000-C000-000000000046)
89]
91{
93}
94
95[
96 local,
97 object,
98 uuid(00000018-0000-0000-C000-000000000046)
99]
101{
103
105 [in] DWORD dwDestContext,
106 [in, unique] void *pvDestContext,
107 [out] CLSID *pClsid);
108}
109
110[
111 local,
112 object,
113 uuid(00000019-0000-0000-C000-000000000046)
114]
116{
118
119 typedef enum tagEXTCONN {
121 EXTCONN_WEAK = 0x0002,
122 EXTCONN_CALLABLE = 0x0004
124
126 [in] DWORD extconn,
127 [in] DWORD reserved);
128
130 [in] DWORD extconn,
131 [in] DWORD reserved,
132 [in] BOOL fLastReleaseCloses);
133}
134
135[
136 local,
137 object,
138 uuid(00000020-0000-0000-C000-000000000046)
139]
141{
143
144 typedef struct tagMULTI_QI {
145 const IID *pIID;
149
151 [in] ULONG cMQIs,
152 [in, out] MULTI_QI *pMQIs);
153}
154
155[
156 local,
157 object,
158 uuid(00000002-0000-0000-C000-000000000046)
159]
160interface IMalloc : IUnknown
161{
163
165 [in] SIZE_T cb);
166
168 [in] LPVOID pv,
169 [in] SIZE_T cb);
170
171 void Free(
172 [in] LPVOID pv);
173
175 [in] LPVOID pv);
176
178
180}
181
182[
183 local,
184 object,
185 uuid(0000001d-0000-0000-C000-000000000046)
186]
188{
190
192 [in] SIZE_T cbRequest);
193
195 [in] LPVOID pActual);
196
199 [in] BOOL fSpyed);
200
202 [in] BOOL fSpyed);
203
206 [in] SIZE_T cbRequest,
207 [out] LPVOID *ppNewRequest,
208 [in] BOOL fSpyed);
209
211 [in] LPVOID pActual,
212 [in] BOOL fSpyed);
213
216 [in] BOOL fSpyed);
217
219 [in] SIZE_T cbActual,
220 [in] BOOL fSpyed);
221
224 [in] BOOL fSpyed);
225
228 [in] BOOL fSpyed,
229 [in] int fActual);
230
232
234}
235
236[
237 local,
238 object,
239 uuid(00000021-0000-0000-C000-000000000046)
240]
242{
244 [in] REFIID riid,
245 [out] void **ppv);
246}
247
248[
249 object,
250 uuid(00000100-0000-0000-C000-000000000046),
252]
254{
256
257 [local]
259 [in] ULONG celt,
260 [out] IUnknown **rgelt,
261 [out] ULONG *pceltFetched);
262
263 [call_as(Next)]
265 [in] ULONG celt,
266 [out, size_is(celt), length_is(*pceltFetched)]
267 IUnknown **rgelt,
268 [out] ULONG *pceltFetched);
269
271 [in] ULONG celt);
272
274
276 [out] IEnumUnknown **ppenum);
277}
278
279[
280 object,
281 uuid(00000022-0000-0000-C000-000000000046),
282 version(1.0),
284]
286{
288
290 [in] REFCLSID Clsid);
292}
293
294[
295 local,
296 object,
297 uuid(00000146-0000-0000-C000-000000000046)
298]
300{
302
304 [in] IUnknown *pUnk,
305 [in] REFIID riid,
306 [out] DWORD *pdwCookie);
307
309 [in] DWORD dwCookie);
310
312 [in] DWORD dwCookie,
313 [in] REFIID riid,
314 [out, iid_is(riid)] void **ppv);
315}
316
317/******************** Monikers ********************/
318
319[
320 object,
321 uuid(0000000e-0000-0000-C000-000000000046),
323]
325{
327 typedef [unique] IBindCtx *LPBC;
328
329 typedef struct tagBIND_OPTS {
335
336 /* FIXME: C++ crap */
337 typedef struct tagBIND_OPTS2 {
347
348 typedef struct tagBIND_OPTS3 {
359
360 typedef enum tagBIND_FLAGS {
364
366 [in, unique] IUnknown *punk);
367
369 [in, unique] IUnknown *punk);
370
372
373 [local]
375 [in] BIND_OPTS *pbindopts);
376
377 [call_as(SetBindOptions)]
379 [in] BIND_OPTS2 *pbindopts);
380
381 [local]
383 [in, out] BIND_OPTS *pbindopts);
384
385 [call_as(GetBindOptions)]
387 [in, out] BIND_OPTS2 *pbindopts);
388
390 [out] IRunningObjectTable **pprot);
391
393 [in] LPOLESTR pszKey,
394 [in, unique] IUnknown *punk);
395
397 [in] LPOLESTR pszKey,
398 [out] IUnknown **ppunk);
399
401 [out] IEnumString **ppenum);
402
404 [in] LPOLESTR pszKey);
405}
406
407[
408 object,
409 uuid(00000102-0000-0000-C000-000000000046),
411]
413{
415
416 [local]
418 [in] ULONG celt,
419 [out, size_is(celt), length_is(*pceltFetched)]
420 IMoniker **rgelt,
421 [out] ULONG *pceltFetched);
422
423 [call_as(Next)]
425 [in] ULONG celt,
426 [out, size_is(celt), length_is(*pceltFetched)]
427 IMoniker **rgelt,
428 [out] ULONG *pceltFetched);
429
431 [in] ULONG celt);
432
434
436 [out] IEnumMoniker **ppenum);
437}
438
439[
440 object,
441 uuid(00000126-0000-0000-C000-000000000046)
442]
444{
446
448 [out] LPCLSID lpClsid);
449
451 [in] LPBINDCTX pbc);
452
453 [local]
455
456 [call_as(IsRunning)]
458
460 [in] BOOL fLock,
461 [in] BOOL fLastUnlockCloses);
462
464 [in] BOOL fContained);
465}
466
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 */
471cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
472cpp_quote("#undef GetObject")
473cpp_quote("#endif")
474
475[
476 object,
477 uuid(00000010-0000-0000-C000-000000000046)
478]
479interface IRunningObjectTable : IUnknown
480{
481 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
482
483 HRESULT Register(
484 [in] DWORD grfFlags,
485 [in, unique] IUnknown *punkObject,
486 [in, unique] IMoniker *pmkObjectName,
487 [out] DWORD *pdwRegister);
488
489 HRESULT Revoke(
490 [in] DWORD dwRegister);
491
492 HRESULT IsRunning(
493 [in, unique] IMoniker *pmkObjectName);
494
495 HRESULT GetObject(
496 [in, unique] IMoniker *pmkObjectName,
497 [out] IUnknown **ppunkObject);
498
499 HRESULT NoteChangeTime(
500 [in] DWORD dwRegister,
501 [in] FILETIME *pfiletime);
502
503 HRESULT GetTimeOfLastChange(
504 [in, unique] IMoniker *pmkObjectName,
505 [out] FILETIME *pfiletime);
506
507 HRESULT EnumRunning(
508 [out] IEnumMoniker **ppenumMoniker);
509}
510
511[
512 object,
513 uuid(0000010c-0000-0000-C000-000000000046)
514]
515interface IPersist : IUnknown
516{
517 typedef [unique] IPersist *LPPERSIST;
518
519 HRESULT GetClassID(
520 [out] CLSID *pClassID);
521}
522
523[
524 object,
525 uuid(00000109-0000-0000-C000-000000000046),
526 pointer_default(unique)
527]
528interface IPersistStream : IPersist
529{
530 typedef [unique] IPersistStream *LPPERSISTSTREAM;
531
532 HRESULT IsDirty();
533
534 HRESULT Load(
535 [in, unique] IStream *pStm);
536
537 HRESULT Save(
538 [in, unique] IStream *pStm,
539 [in] BOOL fClearDirty);
540
541 HRESULT GetSizeMax(
542 [out] ULARGE_INTEGER *pcbSize);
543}
544
545[
546 object,
547 uuid(0000000f-0000-0000-C000-000000000046),
548 pointer_default(unique)
549]
550interface IMoniker : IPersistStream
551{
552 typedef [unique] IMoniker *LPMONIKER;
553
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;
564
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;
571
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);
578
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);
585
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);
592
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);
599
600 HRESULT Reduce(
601 [in, unique] IBindCtx *pbc,
602 [in] DWORD dwReduceHowFar,
603 [in, out, unique] IMoniker **ppmkToLeft,
604 [out] IMoniker **ppmkReduced);
605
606 HRESULT ComposeWith(
607 [in, unique] IMoniker *pmkRight,
608 [in] BOOL fOnlyIfNotGeneric,
609 [out] IMoniker **ppmkComposite);
610
611 HRESULT Enum(
612 [in] BOOL fForward,
613 [out] IEnumMoniker **ppenumMoniker);
614
615 HRESULT IsEqual(
616 [in, unique] IMoniker *pmkOtherMoniker);
617
618 HRESULT Hash(
619 [out] DWORD *pdwHash);
620
621 HRESULT IsRunning(
622 [in, unique] IBindCtx *pbc,
623 [in, unique] IMoniker *pmkToLeft,
624 [in, unique] IMoniker *pmkNewlyRunning);
625
626 HRESULT GetTimeOfLastChange(
627 [in, unique] IBindCtx *pbc,
628 [in, unique] IMoniker *pmkToLeft,
629 [out] FILETIME *pFileTime);
630
631 HRESULT Inverse(
632 [out] IMoniker **ppmk);
633
634 HRESULT CommonPrefixWith(
635 [in, unique] IMoniker *pmkOther,
636 [out] IMoniker **ppmkPrefix);
637
638 HRESULT RelativePathTo(
639 [in, unique] IMoniker *pmkOther,
640 [out] IMoniker **ppmkRelPath);
641
642 HRESULT GetDisplayName(
643 [in, unique] IBindCtx *pbc,
644 [in, unique] IMoniker *pmkToLeft,
645 [out] LPOLESTR *ppszDisplayName);
646
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);
653
654 HRESULT IsSystemMoniker(
655 [out] DWORD *pdwMksys);
656}
657
658[
659 object,
660 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
661 pointer_default(unique)
662]
663interface IROTData : IUnknown
664{
665 HRESULT GetComparisonData(
666 [out, size_is(cbMax)] byte *pbData,
667 [in] ULONG cbMax,
668 [out] ULONG *pcbData);
669}
670
671[
672 object,
673 uuid(00000101-0000-0000-C000-000000000046),
674 pointer_default(unique)
675]
676interface IEnumString : IUnknown
677{
678 typedef [unique] IEnumString *LPENUMSTRING;
679
680 [local]
681 HRESULT Next(
682 [in] ULONG celt,
683 [out, size_is(celt), length_is(*pceltFetched)]
684 LPOLESTR *rgelt,
685 [out] ULONG *pceltFetched);
686
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);
693
694 HRESULT Skip(
695 [in] ULONG celt);
696
697 HRESULT Reset();
698
699 HRESULT Clone(
700 [out] IEnumString **ppenum);
701}
702
703[
704 object,
705 uuid(00000140-0000-0000-C000-000000000046)
706]
707interface IClassActivator : IUnknown
708{
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);
715}
716
717/******************** Storage ********************/
718
719[
720 object,
721 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
722 pointer_default(unique)
723]
724interface ISequentialStream : IUnknown
725{
726 [local]
727 HRESULT Read(
728 [out, size_is(cb), length_is(*pcbRead)]
729 void *pv,
730 [in] ULONG cb,
731 [out] ULONG *pcbRead);
732
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);
739
740 [local]
741 HRESULT Write(
742 [in, size_is(cb)] const void *pv,
743 [in] ULONG cb,
744 [out] ULONG *pcbWritten);
745
746 [call_as(Write)]
747 HRESULT RemoteWrite(
748 [in, size_is(cb)] const byte *pv,
749 [in] ULONG cb,
750 [out] ULONG *pcbWritten);
751}
752
753[
754 object,
755 uuid(0000000c-0000-0000-C000-000000000046),
756 pointer_default(unique)
757]
758interface IStream : ISequentialStream
759{
760 typedef [unique] IStream *LPSTREAM;
761
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;
775
776 typedef enum tagSTGTY {
777 STGTY_STORAGE = 1,
778 STGTY_STREAM = 2,
779 STGTY_LOCKBYTES = 3,
780 STGTY_PROPERTY = 4
781 } STGTY;
782
783 typedef enum tagSTREAM_SEEK {
784 STREAM_SEEK_SET = 0,
785 STREAM_SEEK_CUR = 1,
786 STREAM_SEEK_END = 2
787 } STREAM_SEEK;
788
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")
795
796 typedef enum tagLOCKTYPE {
797 LOCK_WRITE = 1,
798 LOCK_EXCLUSIVE = 2,
799 LOCK_ONLYONCE = 4
800 } LOCKTYPE;
801
802 [local]
803 HRESULT Seek(
804 [in] LARGE_INTEGER dlibMove,
805 [in] DWORD dwOrigin,
806 [out] ULARGE_INTEGER *plibNewPosition);
807
808 [call_as(Seek)]
809 HRESULT RemoteSeek(
810 [in] LARGE_INTEGER dlibMove,
811 [in] DWORD dwOrigin,
812 [out] ULARGE_INTEGER *plibNewPosition);
813
814 HRESULT SetSize(
815 [in] ULARGE_INTEGER libNewSize);
816
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);
823
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);
830
831 HRESULT Commit(
832 [in] DWORD grfCommitFlags);
833
834 HRESULT Revert();
835
836 HRESULT LockRegion(
837 [in] ULARGE_INTEGER libOffset,
838 [in] ULARGE_INTEGER cb,
839 [in] DWORD dwLockType);
840
841 HRESULT UnlockRegion(
842 [in] ULARGE_INTEGER libOffset,
843 [in] ULARGE_INTEGER cb,
844 [in] DWORD dwLockType);
845
846 HRESULT Stat(
847 [out] STATSTG *pstatstg,
848 [in] DWORD grfStatFlag);
849
850 HRESULT Clone(
851 [out] IStream **ppstm);
852}
853
854[
855 object,
856 uuid(0000000d-0000-0000-C000-000000000046),
857 pointer_default(unique)
858]
859interface IEnumSTATSTG : IUnknown
860{
861 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
862
863 [local]
864 HRESULT Next(
865 [in] ULONG celt,
866 [out, size_is(celt), length_is(*pceltFetched)]
867 STATSTG *rgelt,
868 [out] ULONG *pceltFetched);
869
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);
876
877 HRESULT Skip(
878 [in] ULONG celt);
879
880 HRESULT Reset();
881
882 HRESULT Clone(
883 [out] IEnumSTATSTG **ppenum);
884}
885
886[
887 object,
888 uuid(0000000b-0000-0000-C000-000000000046),
889 pointer_default(unique)
890]
891interface IStorage : IUnknown
892{
893 typedef [unique] IStorage *LPSTORAGE;
894
895 typedef struct tagRemSNB {
896 unsigned long ulCntStr;
897 unsigned long ulCntChar;
898 [size_is(ulCntChar)] OLECHAR rgString[];
899 } RemSNB;
900
901 typedef [unique] RemSNB *wireSNB;
902 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
903
904 HRESULT CreateStream(
905 [in] LPCOLESTR pwcsName,
906 [in] DWORD grfMode,
907 [in] DWORD reserved1,
908 [in] DWORD reserved2,
909 [out] IStream **ppstm);
910
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);
918
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);
927
928 HRESULT CreateStorage(
929 [in] LPCOLESTR pwcsName,
930 [in] DWORD grfMode,
931 [in] DWORD dwStgFmt,
932 [in] DWORD reserved2,
933 [out] IStorage **ppstg);
934
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);
942
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);
948
949 HRESULT MoveElementTo(
950 [in] LPCOLESTR pwcsName,
951 [in, unique] IStorage *pstgDest,
952 [in] LPCOLESTR pwcsNewName,
953 [in] DWORD grfFlags);
954
955 HRESULT Commit(
956 [in] DWORD grfCommitFlags);
957
958 HRESULT Revert();
959
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);
966
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);
974
975 HRESULT DestroyElement(
976 [in] LPCOLESTR pwcsName);
977
978 HRESULT RenameElement(
979 [in] LPCOLESTR pwcsOldName,
980 [in] LPCOLESTR pwcsNewName);
981
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);
987
988 HRESULT SetClass(
989 [in] REFCLSID clsid);
990
991 HRESULT SetStateBits(
992 [in] DWORD grfStateBits,
993 [in] DWORD grfMask);
994
995 HRESULT Stat(
996 [out] STATSTG *pstatstg,
997 [in] DWORD grfStatFlag);
998}
999
1000[
1001 object,
1002 uuid(0000010b-0000-0000-C000-000000000046),
1003 pointer_default(unique)
1004]
1005interface IPersistFile : IPersist
1006{
1007 typedef [unique] IPersistFile *LPPERSISTFILE;
1008
1009 HRESULT IsDirty();
1010
1011 HRESULT Load(
1012 [in] LPCOLESTR pszFileName,
1013 [in] DWORD dwMode);
1014
1015 HRESULT Save(
1016 [in, unique] LPCOLESTR pszFileName,
1017 [in] BOOL fRemember);
1018
1019 HRESULT SaveCompleted(
1020 [in, unique] LPCOLESTR pszFileName);
1021
1022 HRESULT GetCurFile(
1023 [out] LPOLESTR *ppszFileName);
1024}
1025
1026[
1027 object,
1028 uuid(0000010a-0000-0000-C000-000000000046),
1029 pointer_default(unique)
1030]
1031interface IPersistStorage : IPersist
1032{
1033 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1034
1035 HRESULT IsDirty();
1036
1037 HRESULT InitNew(
1038 [in, unique] IStorage *pStg);
1039
1040 HRESULT Load(
1041 [in, unique] IStorage *pStg);
1042
1043 HRESULT Save(
1044 [in, unique] IStorage *pStgSave,
1045 [in] BOOL fSameAsLoad);
1046
1047 HRESULT SaveCompleted(
1048 [in, unique] IStorage *pStgNew);
1049
1050 HRESULT HandsOffStorage();
1051}
1052
1053[
1054 object,
1055 uuid(00000012-0000-0000-C000-000000000046),
1056 pointer_default(unique)
1057]
1058interface IRootStorage : IUnknown
1059{
1060 typedef [unique] IRootStorage *LPROOTSTORAGE;
1061
1062 HRESULT SwitchToFile(
1063 [in] LPOLESTR pszFile);
1064}
1065
1066[
1067 object,
1068 uuid(0000000a-0000-0000-C000-000000000046),
1069 pointer_default(unique)
1070]
1071interface ILockBytes : IUnknown
1072{
1073 typedef [unique] ILockBytes *LPLOCKBYTES;
1074
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);
1082
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);
1090
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);
1097
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);
1104
1105 HRESULT Flush();
1106
1107 HRESULT SetSize(
1108 [in] ULARGE_INTEGER cb);
1109
1110 HRESULT LockRegion(
1111 [in] ULARGE_INTEGER libOffset,
1112 [in] ULARGE_INTEGER cb,
1113 [in] DWORD dwLockType);
1114
1115 HRESULT UnlockRegion(
1116 [in] ULARGE_INTEGER libOffset,
1117 [in] ULARGE_INTEGER cb,
1118 [in] DWORD dwLockType);
1119
1120 HRESULT Stat(
1121 [out] STATSTG *pstatstg,
1122 [in] DWORD grfStatFlag);
1123}
1124
1125[
1126 object,
1127 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1128 pointer_default(unique)
1129]
1130interface IFillLockBytes : IUnknown
1131{
1132 [local]
1133 HRESULT FillAppend(
1134 [in, size_is(cb)] const void *pv,
1135 [in] ULONG cb,
1136 [out] ULONG *pcbWritten);
1137
1138 [call_as(FillAppend)]
1139 HRESULT RemoteFillAppend(
1140 [in, size_is(cb)] const byte *pv,
1141 [in] ULONG cb,
1142 [out] ULONG *pcbWritten);
1143
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);
1150
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);
1157
1158 HRESULT SetFillSize(
1159 [in] ULARGE_INTEGER ulSize);
1160
1161 HRESULT Terminate(
1162 [in] BOOL bCanceled);
1163}
1164
1165[
1166 object,
1167 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1168 pointer_default(unique)
1169]
1170interface IProgressNotify : IUnknown
1171{
1172 HRESULT OnProgress(
1173 [in] DWORD dwProgressCurrent,
1174 [in] DWORD dwProgressMaximum,
1175 [in] BOOL fAccurate,
1176 [in] BOOL fOwner);
1177}
1178
1179[
1180 local,
1181 object,
1182 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1183 pointer_default(unique)
1184]
1185interface ILayoutStorage : IUnknown
1186{
1187 typedef struct tagStorageLayout {
1188 DWORD LayoutType;
1189 OLECHAR *pwcsElementName;
1190 LARGE_INTEGER cOffset;
1191 LARGE_INTEGER cBytes;
1192 } StorageLayout;
1193
1194 HRESULT LayoutScript(
1195 [in] StorageLayout *pStorageLayout,
1196 [in] DWORD nEntries,
1197 [in] DWORD glfInterleavedFlag);
1198
1199 HRESULT BeginMonitor();
1200
1201 HRESULT EndMonitor();
1202
1203 HRESULT ReLayoutDocfile(
1204 [in] OLECHAR *pwcsNewDfName);
1205
1206 HRESULT ReLayoutDocfileOnILockBytes(
1207 [in] ILockBytes *pILockBytes);
1208}
1209
1210[
1211 object,
1212 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
1213]
1214interface IBlockingLock : IUnknown
1215{
1216 HRESULT Lock(
1217 [in] DWORD dwTimeout);
1218
1219 HRESULT Unlock();
1220}
1221
1222
1223[
1224 object,
1225 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
1226]
1227interface ITimeAndNoticeControl : IUnknown
1228{
1229 HRESULT SuppressChanges(
1230 [in] DWORD res1,
1231 [in] DWORD res2);
1232
1233}
1234
1235
1236
1237[
1238 object,
1239 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
1240]
1241interface IOplockStorage: IUnknown
1242{
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);
1250
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);
1258}
1259
1260/******************** Data Object ********************/
1261
1262[
1263 object,
1264 uuid(00000103-0000-0000-C000-000000000046),
1265 pointer_default(unique)
1266]
1267interface IEnumFORMATETC : IUnknown
1268{
1269 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1270
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;
1280
1281 typedef CLIPFORMAT *LPCLIPFORMAT;
1282
1283 typedef struct tagFORMATETC {
1284 CLIPFORMAT cfFormat;
1285 [unique] DVTARGETDEVICE *ptd;
1286 DWORD dwAspect;
1287 LONG lindex;
1288 DWORD tymed;
1289 } FORMATETC, *LPFORMATETC;
1290
1291 [local]
1292 HRESULT Next(
1293 [in] ULONG celt,
1294 [out, size_is(celt), length_is(*pceltFetched)]
1295 FORMATETC *rgelt,
1296 [out] ULONG *pceltFetched);
1297
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);
1304
1305 HRESULT Skip(
1306 [in] ULONG celt);
1307
1308 HRESULT Reset();
1309
1310 HRESULT Clone(
1311 [out] IEnumFORMATETC **ppenum);
1312}
1313
1314[
1315 object,
1316 uuid(00000105-0000-0000-C000-000000000046),
1317 pointer_default(unique)
1318]
1319interface IEnumSTATDATA : IUnknown
1320{
1321 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1322
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;
1332
1333 typedef struct tagSTATDATA
1334 {
1335 FORMATETC formatetc;
1336 DWORD advf;
1337 [unique] IAdviseSink *pAdvSink;
1338 DWORD dwConnection;
1339 } STATDATA, *LPSTATDATA;
1340
1341 [local]
1342 HRESULT Next(
1343 [in] ULONG celt,
1344 [out, size_is(celt), length_is(*pceltFetched)]
1345 STATDATA *rgelt,
1346 [out] ULONG *pceltFetched);
1347
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);
1354
1355 HRESULT Skip(
1356 [in] ULONG celt);
1357
1358 HRESULT Reset();
1359
1360 HRESULT Clone(
1361 [out] IEnumSTATDATA **ppenum);
1362}
1363
1364[
1365 object,
1366 uuid(0000010f-0000-0000-C000-000000000046),
1367 pointer_default(unique)
1368]
1369interface IAdviseSink : IUnknown
1370{
1371 typedef IAdviseSink *LPADVISESINK;
1372
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;
1383
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;
1392
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;
1407
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
1422
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;
1428
1429 typedef struct _userSTGMEDIUM {
1430 union switch(DWORD tymed) u {
1431 case TYMED_NULL: ;
1432 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1433 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1434 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1435 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1436 case TYMED_FILE: LPOLESTR lpszFileName;
1437 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1438 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1439 } DUMMYUNIONNAME;
1440 IUnknown *pUnkForRelease;
1441 } userSTGMEDIUM;
1442
1443 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1444 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1445
1446 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1447 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1448
1449 typedef STGMEDIUM *LPSTGMEDIUM;
1450
1451 typedef struct _userFLAG_STGMEDIUM {
1452 long ContextFlags;
1453 long fPassOwnership;
1454 userSTGMEDIUM Stgmed;
1455 } userFLAG_STGMEDIUM;
1456
1457 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1458
1459 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1460 long ContextFlags;
1461 long fPassOwnership;
1462 STGMEDIUM Stgmed;
1463 } FLAG_STGMEDIUM;
1464
1465 [local]
1466 void OnDataChange(
1467 [in, unique] FORMATETC *pFormatetc,
1468 [in, unique] STGMEDIUM *pStgmed);
1469
1470 [call_as(OnDataChange)]
1471 HRESULT RemoteOnDataChange(
1472 [in, unique] FORMATETC *pFormatetc,
1473 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1474
1475 [local]
1476 void OnViewChange(
1477 [in] DWORD dwAspect,
1478 [in] LONG lindex);
1479
1480 [call_as(OnViewChange)]
1481 HRESULT RemoteOnViewChange(
1482 [in] DWORD dwAspect,
1483 [in] LONG lindex);
1484
1485 [local]
1486 void OnRename(
1487 [in] IMoniker *pmk);
1488
1489 [call_as(OnRename)]
1490 HRESULT RemoteOnRename(
1491 [in] IMoniker *pmk);
1492
1493 [local]
1494 void OnSave();
1495
1496 [call_as(OnSave)]
1497 HRESULT RemoteOnSave();
1498
1499 [local]
1500 void OnClose();
1501
1502 [call_as(OnClose)]
1503 HRESULT RemoteOnClose();
1504}
1505
1506[
1507 object,
1508 uuid(00000125-0000-0000-C000-000000000046),
1509 pointer_default(unique)
1510]
1511interface IAdviseSink2 : IAdviseSink
1512{
1513 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1514
1515 [local]
1516 void OnLinkSrcChange(
1517 [in, unique] IMoniker *pmk);
1518
1519 [call_as(OnLinkSrcChange)]
1520 HRESULT RemoteOnLinkSrcChange(
1521 [in, unique] IMoniker *pmk);
1522}
1523
1524[
1525 object,
1526 uuid(0000010e-0000-0000-C000-000000000046),
1527 pointer_default(unique)
1528]
1529interface IDataObject : IUnknown
1530{
1531 typedef [unique] IDataObject *LPDATAOBJECT;
1532
1533 typedef enum tagDATADIR {
1534 DATADIR_GET = 1,
1535 DATADIR_SET = 2
1536 } DATADIR;
1537
1538 [local]
1539 HRESULT GetData(
1540 [in, unique] FORMATETC *pformatetcIn,
1541 [out] STGMEDIUM *pmedium);
1542
1543 [call_as(GetData)]
1544 HRESULT RemoteGetData(
1545 [in, unique] FORMATETC *pformatetcIn,
1546 [out] STGMEDIUM *pRemoteMedium);
1547
1548 [local]
1549 HRESULT GetDataHere(
1550 [in, unique] FORMATETC *pformatetc,
1551 [in, out] STGMEDIUM *pmedium);
1552
1553 [call_as(GetDataHere)]
1554 HRESULT RemoteGetDataHere(
1555 [in, unique] FORMATETC *pformatetc,
1556 [in, out] STGMEDIUM *pRemoteMedium);
1557
1558 HRESULT QueryGetData(
1559 [in, unique] FORMATETC *pformatetc);
1560
1561 HRESULT GetCanonicalFormatEtc(
1562 [in, unique] FORMATETC *pformatectIn,
1563 [out] FORMATETC *pformatetcOut);
1564
1565 [local]
1566 HRESULT SetData(
1567 [in, unique] FORMATETC *pformatetc,
1568 [in, unique] STGMEDIUM *pmedium,
1569 [in] BOOL fRelease);
1570
1571 [call_as(SetData)]
1572 HRESULT RemoteSetData(
1573 [in, unique] FORMATETC *pformatetc,
1574 [in, unique] FLAG_STGMEDIUM *pmedium,
1575 [in] BOOL fRelease);
1576
1577 HRESULT EnumFormatEtc(
1578 [in] DWORD dwDirection,
1579 [out] IEnumFORMATETC **ppenumFormatEtc);
1580
1581 HRESULT DAdvise(
1582 [in] FORMATETC *pformatetc,
1583 [in] DWORD advf,
1584 [in, unique] IAdviseSink *pAdvSink,
1585 [out] DWORD *pdwConnection);
1586
1587 HRESULT DUnadvise(
1588 [in] DWORD dwConnection);
1589
1590 HRESULT EnumDAdvise(
1591 [out] IEnumSTATDATA **ppenumAdvise);
1592}
1593
1594[
1595 local,
1596 object,
1597 uuid(00000110-0000-0000-C000-000000000046)
1598]
1599interface IDataAdviseHolder : IUnknown
1600{
1601 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1602
1603 HRESULT Advise(
1604 [in, unique] IDataObject *pDataObject,
1605 [in, unique] FORMATETC *pFetc,
1606 [in] DWORD advf,
1607 [in, unique] IAdviseSink *pAdvise,
1608 [out] DWORD *pdwConnection);
1609
1610 HRESULT Unadvise(
1611 [in] DWORD dwConnection);
1612
1613 HRESULT EnumAdvise(
1614 [out] IEnumSTATDATA **ppenumAdvise);
1615
1616 HRESULT SendOnDataChange(
1617 [in, unique] IDataObject *pDataObject,
1618 [in] DWORD dwReserved,
1619 [in] DWORD advf);
1620}
1621
1622/******************** Remoting ********************/
1623
1624[
1625 local,
1626 object,
1627 uuid(00000016-0000-0000-C000-000000000046)
1628]
1629interface IMessageFilter : IUnknown
1630{
1631 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1632
1633 typedef enum tagCALLTYPE {
1634 CALLTYPE_TOPLEVEL = 1,
1635 CALLTYPE_NESTED = 2,
1636 CALLTYPE_ASYNC = 3,
1637 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1638 CALLTYPE_ASYNC_CALLPENDING = 5
1639 } CALLTYPE;
1640
1641 typedef enum tagSERVERCALL {
1642 SERVERCALL_ISHANDLED = 0,
1643 SERVERCALL_REJECTED = 1,
1644 SERVERCALL_RETRYLATER = 2
1645 } SERVERCALL;
1646
1647 typedef enum tagPENDINGTYPE {
1648 PENDINGTYPE_TOPLEVEL = 1,
1649 PENDINGTYPE_NESTED = 2
1650 } PENDINGTYPE;
1651
1652 typedef enum tagPENDINGMSG {
1653 PENDINGMSG_CANCELCALL = 0,
1654 PENDINGMSG_WAITNOPROCESS = 1,
1655 PENDINGMSG_WAITDEFPROCESS = 2
1656 } PENDINGMSG;
1657
1658 typedef struct tagINTERFACEINFO {
1659 IUnknown *pUnk;
1660 IID iid;
1661 WORD wMethod;
1662 } INTERFACEINFO, *LPINTERFACEINFO;
1663
1664 DWORD HandleInComingCall(
1665 [in] DWORD dwCallType,
1666 [in] HTASK htaskCaller,
1667 [in] DWORD dwTickCount,
1668 [in] LPINTERFACEINFO lpInterfaceInfo);
1669
1670 DWORD RetryRejectedCall(
1671 [in] HTASK htaskCallee,
1672 [in] DWORD dwTickCount,
1673 [in] DWORD dwRejectType);
1674
1675 DWORD MessagePending(
1676 [in] HTASK htaskCallee,
1677 [in] DWORD dwTickCount,
1678 [in] DWORD dwPendingType);
1679}
1680
1681[
1682 local,
1683 object,
1684 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1685]
1686interface IRpcChannelBuffer : IUnknown
1687{
1688 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1689
1690 typedef unsigned long RPCOLEDATAREP;
1691
1692 typedef struct tagRPCOLEMESSAGE {
1693 void *reserved1;
1694 RPCOLEDATAREP dataRepresentation;
1695 void *Buffer;
1696 ULONG cbBuffer;
1697 ULONG iMethod;
1698 void *reserved2[5];
1699 ULONG rpcFlags;
1700 } RPCOLEMESSAGE;
1701
1702 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1703
1704 HRESULT GetBuffer(
1705 [in] RPCOLEMESSAGE *pMessage,
1706 [in] REFIID riid);
1707
1708 HRESULT SendReceive(
1709 [in,out] RPCOLEMESSAGE *pMessage,
1710 [out] ULONG *pStatus);
1711
1712 HRESULT FreeBuffer(
1713 [in] RPCOLEMESSAGE *pMessage);
1714
1715 HRESULT GetDestCtx(
1716 [out] DWORD *pdwDestContext,
1717 [out] void **ppvDestContext);
1718
1719 HRESULT IsConnected();
1720}
1721
1722[
1723 local,
1724 object,
1725 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1726]
1727interface IRpcChannelBuffer2 : IRpcChannelBuffer
1728{
1729 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1730
1731 HRESULT GetProtocolVersion(
1732 [in,out] DWORD *pdwVersion);
1733}
1734
1735[
1736 local,
1737 object,
1738 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1739]
1740interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1741{
1742 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1743
1744 HRESULT Send(
1745 [in,out] RPCOLEMESSAGE *pMsg,
1746 [out] ULONG *pulStatus);
1747
1748 HRESULT Receive(
1749 [in,out] RPCOLEMESSAGE *pMsg,
1750 [in] ULONG ulSize,
1751 [out] ULONG *pulStatus);
1752
1753 HRESULT Cancel(
1754 [in] RPCOLEMESSAGE *pMsg);
1755
1756 HRESULT GetCallContext(
1757 [in] RPCOLEMESSAGE *pMsg,
1758 [in] REFIID riid,
1759 [out] void **pInterface);
1760
1761 HRESULT GetDestCtxEx(
1762 [in] RPCOLEMESSAGE *pMsg,
1763 [out] DWORD *pdwDestContext,
1764 [out] void **ppvDestContext);
1765
1766 HRESULT GetState(
1767 [in] RPCOLEMESSAGE *pMsg,
1768 [out] DWORD *pState);
1769
1770 HRESULT RegisterAsync(
1771 [in] RPCOLEMESSAGE *pMsg,
1772 [in] IAsyncManager *pAsyncMgr);
1773}
1774
1775[
1776 local,
1777 object,
1778 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
1779 pointer_default(unique)
1780]
1781interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
1782{
1783 HRESULT Send(
1784 [in, out] RPCOLEMESSAGE *pMsg,
1785 [in] ISynchronize *pSync,
1786 [out] ULONG *pulStatus);
1787
1788 HRESULT Receive(
1789 [in, out] RPCOLEMESSAGE *pMsg,
1790 [out] ULONG *pulStatus);
1791
1792 HRESULT GetDestCtxEx(
1793 [in] RPCOLEMESSAGE *pMsg,
1794 [out] DWORD *pdwDestContext,
1795 [out] void **ppvDestContext);
1796}
1797
1798[
1799 local,
1800 object,
1801 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
1802]
1803interface IRpcSyntaxNegotiate : IUnknown
1804{
1805 HRESULT NegotiateSyntax(
1806 [in, out] RPCOLEMESSAGE *pMsg);
1807}
1808
1809[
1810 local,
1811 object,
1812 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1813]
1814interface IRpcProxyBuffer : IUnknown
1815{
1816 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1817
1818 HRESULT Connect(
1819 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1820
1821 void Disconnect();
1822}
1823
1824[
1825 local,
1826 object,
1827 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1828]
1829interface IRpcStubBuffer : IUnknown
1830{
1831 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1832
1833 HRESULT Connect(
1834 [in] IUnknown *pUnkServer);
1835
1836 void Disconnect();
1837
1838 HRESULT Invoke(
1839 [in] RPCOLEMESSAGE *_prpcmsg,
1840 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1841
1842 IRpcStubBuffer *IsIIDSupported(
1843 [in] REFIID riid);
1844
1845 ULONG CountRefs();
1846
1847 HRESULT DebugServerQueryInterface(
1848 void **ppv);
1849
1850 void DebugServerRelease(
1851 void *pv);
1852}
1853
1854[
1855 local,
1856 object,
1857 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1858]
1859interface IPSFactoryBuffer : IUnknown
1860{
1861 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1862
1863 HRESULT CreateProxy(
1864 [in] IUnknown *pUnkOuter,
1865 [in] REFIID riid,
1866 [out] IRpcProxyBuffer **ppProxy,
1867 [out] void **ppv);
1868
1869 HRESULT CreateStub(
1870 [in] REFIID riid,
1871 [in, unique] IUnknown *pUnkServer,
1872 [out] IRpcStubBuffer **ppStub);
1873}
1874
1875[
1876 local,
1877 object,
1878 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1879]
1880interface IChannelHook : IUnknown
1881{
1882 typedef [unique] IChannelHook *LPCHANNELHOOK;
1883
1884 typedef struct SChannelHookCallInfo {
1885 IID iid;
1886 DWORD cbSize;
1887 GUID uCausality;
1888 DWORD dwServerPid;
1889 DWORD iMethod;
1890 void *pObject;
1891 } SChannelHookCallInfo;
1892
1893 void ClientGetSize(
1894 [in] REFGUID uExtent,
1895 [in] REFIID riid,
1896 [out] ULONG *pDataSize);
1897
1898 void ClientFillBuffer(
1899 [in] REFGUID uExtent,
1900 [in] REFIID riid,
1901 [in, out] ULONG *pDataSize,
1902 [in] void *pDataBuffer);
1903
1904 void ClientNotify(
1905 [in] REFGUID uExtent,
1906 [in] REFIID riid,
1907 [in] ULONG cbDataSize,
1908 [in] void *pDataBuffer,
1909 [in] DWORD lDataRep,
1910 [in] HRESULT hrFault);
1911
1912 void ServerNotify(
1913 [in] REFGUID uExtent,
1914 [in] REFIID riid,
1915 [in] ULONG cbDataSize,
1916 [in] void *pDataBuffer,
1917 [in] DWORD lDataRep);
1918
1919 void ServerGetSize(
1920 [in] REFGUID uExtent,
1921 [in] REFIID riid,
1922 [in] HRESULT hrFault,
1923 [out] ULONG *pDataSize);
1924
1925 void ServerFillBuffer(
1926 [in] REFGUID uExtent,
1927 [in] REFIID riid,
1928 [in, out] ULONG *pDataSize,
1929 [in] void *pDataBuffer,
1930 [in] HRESULT hrFault );
1931}
1932
1933extern const FMTID FMTID_SummaryInformation;
1934extern const FMTID FMTID_DocSummaryInformation;
1935extern const FMTID FMTID_UserDefinedProperties;
1936
1937
1938/******************** Connection Points ********************/
1939/* FIXME */
1940
1941/******************** DCOM ********************/
1942
1943[
1944 local,
1945 object,
1946 uuid(0000013D-0000-0000-C000-000000000046)
1947]
1948interface IClientSecurity : IUnknown
1949{
1950 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1951 DWORD dwAuthnSvc;
1952 DWORD dwAuthzSvc;
1953 OLECHAR *pPrincipalName;
1954 HRESULT hr;
1955 } SOLE_AUTHENTICATION_SERVICE;
1956
1957 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1958
1959 typedef struct tagSOLE_AUTHENTICATION_INFO {
1960 DWORD dwAuthnSvc;
1961 DWORD dwAuthzSvc;
1962 void *pAuthInfo;
1963 } SOLE_AUTHENTICATION_INFO;
1964
1965 const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
1966 const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
1967
1968 typedef struct tagSOLE_AUTHENTICATION_LIST {
1969 DWORD cAuthInfo;
1970 SOLE_AUTHENTICATION_INFO *aAuthInfo;
1971 } SOLE_AUTHENTICATION_LIST;
1972
1973 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1974 EOAC_NONE = 0x0,
1975 EOAC_MUTUAL_AUTH = 0x1,
1976 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */
1977 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */
1978 EOAC_APPID = 0x8, /* CoInitializeSecurity only */
1979 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */
1980 EOAC_STATIC_CLOAKING = 0x20,
1981 EOAC_DYNAMIC_CLOAKING = 0x40,
1982 EOAC_ANY_AUTHORITY = 0x80,
1983 EOAC_MAKE_FULLSIC = 0x100,
1984 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */
1985 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */
1986 EOAC_DEFAULT = 0x800,
1987 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */
1988 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */
1989 } EOLE_AUTHENTICATION_CAPABILITIES;
1990
1991 HRESULT QueryBlanket(
1992 [in] IUnknown *pProxy,
1993 [out] DWORD *pAuthnSvc,
1994 [out] DWORD *pAuthzSvc,
1995 [out] OLECHAR **pServerPrincName,
1996 [out] DWORD *pAuthnLevel,
1997 [out] DWORD *pImpLevel,
1998 [out] void **pAuthInfo,
1999 [out] DWORD *pCapabilities);
2000
2001 HRESULT SetBlanket(
2002 [in] IUnknown *pProxy,
2003 [in] DWORD AuthnSvc,
2004 [in] DWORD AuthzSvc,
2005 [in] OLECHAR *pServerPrincName,
2006 [in] DWORD AuthnLevel,
2007 [in] DWORD ImpLevel,
2008 [in] void *pAuthInfo,
2009 [in] DWORD Capabilities);
2010
2011 HRESULT CopyProxy(
2012 [in] IUnknown *pProxy,
2013 [out] IUnknown **ppCopy);
2014}
2015
2016[
2017 local,
2018 object,
2019 uuid(0000013E-0000-0000-C000-000000000046)
2020]
2021interface IServerSecurity : IUnknown
2022{
2023 HRESULT QueryBlanket(
2024 [out] DWORD *pAuthnSvc,
2025 [out] DWORD *pAuthzSvc,
2026 [out] OLECHAR **pServerPrincName,
2027 [out] DWORD *pAuthnLevel,
2028 [out] DWORD *pImpLevel,
2029 [out] void **pPrivs,
2030 [out] DWORD *pCapabilities);
2031
2032 HRESULT ImpersonateClient();
2033
2034 HRESULT RevertToSelf();
2035
2036 BOOL IsImpersonating();
2037}
2038
2039[
2040 local,
2041 object,
2042 uuid(00000024-0000-0000-C000-000000000046)
2043]
2044interface IAsyncSetup : IUnknown
2045{
2046 HRESULT GetAsyncManager(
2047 [in] REFIID riid,
2048 [in] IUnknown *pOuter,
2049 [in] DWORD dwFlags,
2050 [out] IUnknown **ppInner,
2051 [out] IAsyncManager **ppAsyncMgr);
2052}
2053
2054[
2055 object,
2056 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
2057]
2058interface IDirectWriterLock : IUnknown
2059{
2060 HRESULT WaitForWriteAccess(
2061 [in] DWORD dwTimeout);
2062
2063 HRESULT ReleaseWriteAccess();
2064
2065 HRESULT HaveWriteAccess();
2066}
2067
2068[
2069 object,
2070 uuid(00000030-0000-0000-C000-000000000046)
2071]
2072
2073interface ISynchronize : IUnknown
2074{
2075 HRESULT Wait(
2076 [in] DWORD dwFlags,
2077 [in] DWORD dwMilliseconds);
2078
2079 HRESULT Signal();
2080
2081 HRESULT Reset();
2082}
2083
2084
2085[
2086 local,
2087 object,
2088 uuid(00000031-0000-0000-C000-000000000046)
2089]
2090interface ISynchronizeHandle : IUnknown
2091{
2092 HRESULT GetHandle(
2093 [out] HANDLE *ph);
2094}
2095
2096
2097[
2098 local,
2099 object,
2100 uuid(00000032-0000-0000-C000-000000000046)
2101]
2102interface ISynchronizeEvent : ISynchronizeHandle
2103{
2104 HRESULT SetEventHandle(
2105 [in] HANDLE *ph);
2106}
2107
2108
2109[
2110 local,
2111 object,
2112 uuid(00000033-0000-0000-C000-000000000046)
2113]
2114interface ISynchronizeContainer : IUnknown
2115{
2116 HRESULT AddSynchronize(
2117 [in] ISynchronize *pSync);
2118
2119 HRESULT WaitMultiple(
2120 [in] DWORD dwFlags,
2121 [in] DWORD dwTimeOut,
2122 [out] ISynchronize **ppSync);
2123}
2124
2125[
2126 local,
2127 object,
2128 uuid(00000025-0000-0000-C000-000000000046)
2129]
2130interface ISynchronizeMutex : ISynchronize
2131{
2132 HRESULT ReleaseMutex();
2133}
2134
2135[
2136 local,
2137 object,
2138 uuid(00000029-0000-0000-C000-000000000046)
2139]
2140
2141interface ICancelMethodCalls : IUnknown
2142{
2143 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2144
2145 HRESULT Cancel(
2146 [in] ULONG ulSeconds);
2147
2148 HRESULT TestCancel();
2149}
2150
2151[
2152 local,
2153 object,
2154 uuid(0000002A-0000-0000-C000-000000000046)
2155]
2156interface IAsyncManager : IUnknown
2157{
2158 typedef enum tagDCOM_CALL_STATE {
2159 DCOM_NONE = 0,
2160 DCOM_CALL_COMPLETE = 1,
2161 DCOM_CALL_CANCELED = 2
2162 } DCOM_CALL_STATE;
2163
2164 HRESULT CompleteCall(
2165 [in] HRESULT Result);
2166
2167 HRESULT GetCallContext(
2168 [in] REFIID riid,
2169 [out] void **pInterface);
2170
2171 HRESULT GetState(
2172 [out] ULONG *pulStateFlags);
2173}
2174
2175[
2176 local,
2177 object,
2178 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
2179 pointer_default(unique)
2180]
2181interface ICallFactory : IUnknown
2182{
2183 HRESULT CreateCall(
2184 [in] REFIID riid,
2185 [in] IUnknown *pCtrlUnk,
2186 [in] REFIID riid2,
2187 [out, iid_is(riid2)] IUnknown **ppv);
2188}
2189
2190[
2191 local,
2192 object,
2193 uuid(00000144-0000-0000-C000-000000000046)
2194]
2195interface IRpcOptions : IUnknown
2196{
2197 HRESULT Set(
2198 [in] IUnknown *pPrx,
2199 [in] DWORD dwProperty,
2200 [in] ULONG_PTR dwValue);
2201
2202 HRESULT Query(
2203 [in] IUnknown *pPrx,
2204 [in] DWORD dwProperty,
2205 [out] ULONG_PTR *pdwValue);
2206}
2207
2208enum {
2209 COMBND_RPCTIMEOUT = 1,
2210 COMBND_SERVER_LOCALITY = 2
2212
2213enum {
2214 SERVER_LOCALITY_PROCESS_LOCAL = 0,
2215 SERVER_LOCALITY_MACHINE_LOCAL = 1,
2216 SERVER_LOCALITY_REMOTE = 2
2218
2219[
2220 local,
2221 object,
2222 uuid(00000149-0000-0000-C000-000000000046),
2223 pointer_default(unique)
2224]
2225interface IRpcHelper : IUnknown
2226{
2227 HRESULT GetDCOMProtocolVersion(
2228 [out] DWORD *pComVersion);
2229
2230 HRESULT GetIIDFromOBJREF(
2231 [in] void *pObjRef,
2232 [out] IID **piid);
2233}
2234
2235[
2236 local,
2237 object,
2238 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
2239]
2240interface IReleaseMarshalBuffers : IUnknown
2241{
2242 HRESULT ReleaseMarshalBuffer(
2243 [in] RPCOLEMESSAGE *pMsg,
2244 [in] DWORD dwFlags,
2245 [in, unique] IUnknown *pChnl);
2246}
2247
2248[
2249 local,
2250 object,
2251 uuid(0000002B-0000-0000-C000-000000000046)
2252]
2253interface IWaitMultiple : IUnknown
2254{
2255 HRESULT WaitMultiple(
2256 [in] DWORD timeout,
2257 [out] ISynchronize **pSync);
2258 HRESULT AddSynchronize(
2259 [in] ISynchronize *pSync);
2260}
2261
2262
2263[
2264 object,
2265 uuid(00000026-0000-0000-C000-000000000046)
2266]
2267interface IUrlMon : IUnknown
2268{
2269 HRESULT AsyncGetClassBits(
2270 [in] REFCLSID rclsid,
2271 [in, unique] LPCWSTR pszTYPE,
2272 [in, unique] LPCWSTR pszExt,
2273 [in] DWORD dwFileVersionMS,
2274 [in] DWORD dwFileVersionLS,
2275 [in, unique] LPCWSTR pszCodeBase,
2276 [in] IBindCtx *pbc,
2277 [in] DWORD dwClassContext,
2278 [in] REFIID riid,
2279 [in] DWORD flags);
2280}
2281
2282[
2283 local,
2284 object,
2285 uuid(00000145-0000-0000-C000-000000000046)
2286]
2287interface IForegroundTransfer : IUnknown
2288{
2289 HRESULT AllowForegroundTransfer(
2290 [in] void *lpvReserved);
2291}
2292
2293[
2294 local,
2295 object,
2296 uuid(00000147-0000-0000-C000-000000000046)
2297]
2298interface IAddrTrackingControl : IUnknown
2299{
2300 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
2301
2302 HRESULT EnableCOMDynamicAddrTracking();
2303 HRESULT DisableCOMDynamicAddrTracking();
2304}
2305
2306[
2307 local,
2308 object,
2309 uuid(00000148-0000-0000-C000-000000000046)
2310]
2311interface IAddrExclusionControl : IUnknown
2312{
2313 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
2314
2315 HRESULT GetCurrentAddrExclusionList(
2316 [in] REFIID riid,
2317 [out, iid_is(riid)] void **ppEnumerator);
2318 HRESULT UpdateAddrExclusionList(
2319 [in] IUnknown *pEnumerator);
2320}
2321
2322typedef enum _APTTYPE {
2323 APTTYPE_CURRENT = -1,
2324 APTTYPE_STA = 0,
2325 APTTYPE_MTA = 1,
2326 APTTYPE_NA = 2,
2327 APTTYPE_MAINSTA = 3
2328} APTTYPE;
2329
2330typedef enum _APTTYPEQUALIFIER {
2331 APTTYPEQUALIFIER_NONE = 0,
2332 APTTYPEQUALIFIER_IMPLICIT_MTA = 1,
2333 APTTYPEQUALIFIER_NA_ON_MTA = 2,
2334 APTTYPEQUALIFIER_NA_ON_STA = 3,
2335 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4,
2336 APTTYPEQUALIFIER_NA_ON_MAINSTA = 5
2337} APTTYPEQUALIFIER;
2338
2339typedef enum _THDTYPE {
2340 THDTYPE_BLOCKMESSAGES = 0,
2341 THDTYPE_PROCESSMESSAGES = 1
2342} THDTYPE;
2343
2344[
2345 local,
2346 object,
2347 uuid(000001ce-0000-0000-C000-000000000046),
2348 pointer_default(unique)
2349]
2350interface IComThreadingInfo : IUnknown
2351{
2352 HRESULT GetCurrentApartmentType(
2353 [out] APTTYPE *pAptType);
2354 HRESULT GetCurrentThreadType(
2355 [out] THDTYPE *pThreadType);
2356 HRESULT GetCurrentLogicalThreadId(
2357 [out] GUID *pguidLogicalThreadId);
2358 HRESULT SetCurrentLogicalThreadId(
2359 [in] REFGUID rguid);
2360}
2361
2362
2363[
2364 object,
2365 pointer_default(unique),
2366 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
2367]
2368interface IProcessInitControl : IUnknown
2369{
2370 HRESULT ResetInitializerTimeout(
2371 [in] DWORD dwSecondsRemaining);
2372}
2373
2374[
2375 local,
2376 object,
2377 uuid(00000034-0000-0000-C000-000000000046),
2378 pointer_default(unique)
2379]
2380interface IInitializeSpy : IUnknown
2381{
2382 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
2383
2384 HRESULT PreInitialize(
2385 [in] DWORD dwCoInit,
2386 [in] DWORD dwCurThreadAptRefs);
2387
2388 HRESULT PostInitialize(
2389 [in] HRESULT hrCoInit,
2390 [in] DWORD dwCoInit,
2391 [in] DWORD dwNewThreadAptRefs);
2392
2393 HRESULT PreUninitialize(
2394 [in] DWORD dwCurThreadAptRefs);
2395
2396 HRESULT PostUninitialize(
2397 [in] DWORD dwNewThreadAptRefs);
2398}
2399
2400[
2401 object,
2402 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
2403]
2404interface IThumbnailExtractor : IUnknown
2405{
2406 HRESULT ExtractThumbnail(
2407 [in] IStorage *pStg,
2408 [in] ULONG ulLength,
2409 [in] ULONG ulHeight,
2410 [out] ULONG *pulOutputLength,
2411 [out] ULONG *pulOutputHeight,
2412 [out] HBITMAP *phOutputBitmap);
2413
2414
2415 HRESULT OnFileUpdated(
2416 [in] IStorage *pStg);
2417}
2418
2419typedef enum tagGLOBALOPT_PROPERTIES
2420{
2421 COMGLB_EXCEPTION_HANDLING = 1,
2422 COMGLB_APPID = 2,
2423 COMGLB_RPC_THREADPOOL_SETTING = 3
2424} GLOBALOPT_PROPERTIES;
2425
2426typedef enum tagGLOBALOPT_EH_VALUES
2427{
2428 COMGLB_EXCEPTION_HANDLE = 0,
2429 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
2430 COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
2431 COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
2432} GLOBALOPT_EH_VALUES;
2433
2434typedef enum tagGLOBALOPT_RPCTP_VALUES
2435{
2436 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
2437 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
2438} GLOBALOPT_RPCTP_VALUES;
2439
2440
2441[
2442 object,
2443 local,
2444 pointer_default(unique),
2445 uuid(0000015B-0000-0000-C000-000000000046)
2446]
2447interface IGlobalOptions : IUnknown
2448{
2449 HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value);
2450 HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value);
2451}
2452
2453[
2454 object,
2455 pointer_default(unique),
2456 uuid(947990de-cc28-11d2-a0f7-00805f858fb1)
2457]
2458interface IDummyHICONIncluder : IUnknown
2459{
2460 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc);
2461}
2462
2463[
2464 object,
2465 local,
2466 pointer_default(unique),
2467 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b)
2468]
2469interface IApartmentShutdown : IUnknown
2470{
2471 void OnUninitialize([in] UINT64 identifier);
2472}
2473
2474cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
2475
2476typedef DWORD CPFLAGS;
2477
2478typedef struct tagContextProperty
2479{
2480 GUID policyId;
2481 CPFLAGS flags;
2482 [unique] IUnknown *pUnk;
2483} ContextProperty;
2484
2485[
2486 local,
2487 object,
2488 uuid(000001c1-0000-0000-C000-000000000046)
2489]
2490interface IEnumContextProps : IUnknown
2491{
2492 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
2493
2494 HRESULT Next(
2495 [in] ULONG celt,
2496 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
2497 [out] ULONG *pceltFetched);
2498
2499 HRESULT Skip(
2500 [in] ULONG celt);
2501
2502 HRESULT Reset();
2503
2504 HRESULT Clone(
2505 [out] IEnumContextProps **ppEnumContextProps);
2506
2507 HRESULT Count(
2508 [out] ULONG *pcelt);
2509}
2510
2511[
2512 local,
2513 object,
2514 uuid(000001c0-0000-0000-C000-000000000046)
2515]
2516interface IContext : IUnknown
2517{
2518 HRESULT SetProperty(
2519 [in] REFGUID policyId,
2520 [in] CPFLAGS flags,
2521 [in] IUnknown *pUnk);
2522
2523 HRESULT RemoveProperty(
2524 [in] REFGUID policyId);
2525
2526 HRESULT GetProperty(
2527 [in] REFGUID guid,
2528 [out] CPFLAGS *pFlags,
2529 [out] IUnknown **ppUnk);
2530
2531 HRESULT EnumContextProps(
2532 [out] IEnumContextProps **ppEnumContextProps);
2533}
2534
2535[
2536 local,
2537 object,
2538 uuid(000001c6-0000-0000-c000-000000000046),
2539 pointer_default(unique)
2540]
2541interface IObjContext : IContext
2542{
2543 void Reserved1();
2544 void Reserved2();
2545 void Reserved3();
2546 void Reserved4();
2547 void Reserved5();
2548 void Reserved6();
2549 void Reserved7();
2550}
2551
2552cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")
CD3D10_BUFFER_DESC D3D10_BUFFER_DESC cpp_quote(" ~CD3D10_BUFFER_DESC() {}") operator const D3D10_BUFFER_DESC &() const
Definition: d3d10.idl:491
coclass PSFactoryBuffer pointer_default(unique)] interface ObjectRpcBaseTypes
Definition: dcom.idl:35
static const WCHAR version[]
Definition: asmname.c:66
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
r reserved
Definition: btrfs.c:3006
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define local
Definition: zutil.h:30
FxRequest * pRequest
GLuint in
Definition: glext.h:9616
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
enum IBindCtx::tagBIND_FLAGS BIND_FLAGS
struct IBindCtx::tagBIND_OPTS BIND_OPTS
HRESULT RegisterObjectBound([in, unique] IUnknown *punk)
struct IBindCtx::tagBIND_OPTS3 * LPBIND_OPTS3
HRESULT GetRunningObjectTable([out] IRunningObjectTable **pprot)
struct IBindCtx::tagBIND_OPTS2 BIND_OPTS2
tagBIND_FLAGS
Definition: objidl.idl:360
@ BIND_JUSTTESTEXISTENCE
Definition: objidl.idl:362
@ BIND_MAYBOTHERUSER
Definition: objidl.idl:361
HRESULT GetObjectParam([in] LPOLESTR pszKey, [out] IUnknown **ppunk)
struct IBindCtx::tagBIND_OPTS2 * LPBIND_OPTS2
struct IBindCtx::tagBIND_OPTS * LPBIND_OPTS
HRESULT RevokeObjectParam([in] LPOLESTR pszKey)
HRESULT RemoteGetBindOptions([in, out] BIND_OPTS2 *pbindopts)
HRESULT RemoteSetBindOptions([in] BIND_OPTS2 *pbindopts)
HRESULT RevokeObjectBound([in, unique] IUnknown *punk)
HRESULT SetBindOptions([in] BIND_OPTS *pbindopts)
IBindCtx * LPBC
Definition: objidl.idl:327
HRESULT RegisterObjectParam([in] LPOLESTR pszKey, [in, unique] IUnknown *punk)
HRESULT EnumObjectParam([out] IEnumString **ppenum)
struct IBindCtx::tagBIND_OPTS3 BIND_OPTS3
IBindCtx * LPBINDCTX
Definition: objidl.idl:326
HRESULT ReleaseBoundObjects()
HRESULT GetBindOptions([in, out] BIND_OPTS *pbindopts)
HRESULT Reset()
HRESULT Skip([in] ULONG celt)
HRESULT Clone([out] IEnumMoniker **ppenum)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IMoniker **rgelt, [out] ULONG *pceltFetched)
IEnumMoniker * LPENUMMONIKER
Definition: objidl.idl:414
HRESULT RemoteNext([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IMoniker **rgelt, [out] ULONG *pceltFetched)
HRESULT Skip([in] ULONG celt)
HRESULT Next([in] ULONG celt, [out] IUnknown **rgelt, [out] ULONG *pceltFetched)
HRESULT RemoteNext([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IUnknown **rgelt, [out] ULONG *pceltFetched)
HRESULT Reset()
HRESULT Clone([out] IEnumUnknown **ppenum)
IEnumUnknown * LPENUMUNKNOWN
Definition: objidl.idl:255
enum IExternalConnection::tagEXTCONN EXTCONN
DWORD AddConnection([in] DWORD extconn, [in] DWORD reserved)
IExternalConnection * LPEXTERNALCONNECTION
Definition: objidl.idl:117
DWORD ReleaseConnection([in] DWORD extconn, [in] DWORD reserved, [in] BOOL fLastReleaseCloses)
IGlobalInterfaceTable * LPGLOBALINTERFACETABLE
Definition: objidl.idl:301
HRESULT RevokeInterfaceFromGlobal([in] DWORD dwCookie)
HRESULT RegisterInterfaceInGlobal([in] IUnknown *pUnk, [in] REFIID riid, [out] DWORD *pdwCookie)
HRESULT GetInterfaceFromGlobal([in] DWORD dwCookie, [in] REFIID riid, [out, iid_is(riid)] void **ppv)
HRESULT QueryInternalInterface([in] REFIID riid, [out] void **ppv)
LPVOID PreFree([in] LPVOID pRequest, [in] BOOL fSpyed)
SIZE_T PreAlloc([in] SIZE_T cbRequest)
void PostFree([in] BOOL fSpyed)
IMallocSpy * LPMALLOCSPY
Definition: objidl.idl:189
void PostHeapMinimize()
LPVOID PreDidAlloc([in] LPVOID pRequest, [in] BOOL fSpyed)
SIZE_T PreRealloc([in] LPVOID pRequest, [in] SIZE_T cbRequest, [out] LPVOID *ppNewRequest, [in] BOOL fSpyed)
void PreHeapMinimize()
LPVOID PostAlloc([in] LPVOID pActual)
SIZE_T PostGetSize([in] SIZE_T cbActual, [in] BOOL fSpyed)
int PostDidAlloc([in] LPVOID pRequest, [in] BOOL fSpyed, [in] int fActual)
LPVOID PostRealloc([in] LPVOID pActual, [in] BOOL fSpyed)
LPVOID PreGetSize([in] LPVOID pRequest, [in] BOOL fSpyed)
SIZE_T GetSize([in] LPVOID pv)
IMalloc * LPMALLOC
Definition: objidl.idl:162
LPVOID Alloc([in] SIZE_T cb)
LPVOID Realloc([in] LPVOID pv, [in] SIZE_T cb)
void Free([in] LPVOID pv)
void HeapMinimize()
int DidAlloc(LPVOID pv)
IMarshal2 * LPMARSHAL2
Definition: objidl.idl:92
IMarshal * LPMARSHAL
Definition: objidl.idl:47
HRESULT GetMarshalSizeMax([in] REFIID riid, [in, unique] void *pv, [in] DWORD dwDestContext, [in, unique] void *pvDestContext, [in] DWORD mshlflags, [out] DWORD *pSize)
HRESULT MarshalInterface([in, unique] IStream *pStm, [in] REFIID riid, [in, unique] void *pv, [in] DWORD dwDestContext, [in, unique] void *pvDestContext, [in] DWORD mshlflags)
HRESULT ReleaseMarshalData([in, unique] IStream *pStm)
HRESULT UnmarshalInterface([in, unique] IStream *pStm, [in] REFIID riid, [out] void **ppv)
HRESULT GetUnmarshalClass([in] REFIID riid, [in, unique] void *pv, [in] DWORD dwDestContext, [in, unique] void *pvDestContext, [in] DWORD mshlflags, [out] CLSID *pCid)
HRESULT DisconnectObject([in] DWORD dwReserved)
HRESULT QueryMultipleInterfaces([in] ULONG cMQIs, [in, out] MULTI_QI *pMQIs)
struct IMultiQI::tagMULTI_QI MULTI_QI
IMultiQI * LPMULTIQI
Definition: objidl.idl:142
HRESULT Run([in] LPBINDCTX pbc)
HRESULT RemoteIsRunning()
HRESULT LockRunning([in] BOOL fLock, [in] BOOL fLastUnlockCloses)
IRunnableObject * LPRUNNABLEOBJECT
Definition: objidl.idl:445
HRESULT SetContainedObject([in] BOOL fContained)
HRESULT GetRunningClass([out] LPCLSID lpClsid)
HRESULT GetClassForHandler([in] DWORD dwDestContext, [in, unique] void *pvDestContext, [out] CLSID *pClsid)
IStdMarshalInfo * LPSTDMARSHALINFO
Definition: objidl.idl:102
HRESULT FreeSurrogate()
ISurrogate * LPSURROGATE
Definition: objidl.idl:287
HRESULT LoadDllServer([in] REFCLSID Clsid)
Definition: msctf.idl:550
#define d
Definition: ke_i.h:81
#define e
Definition: ke_i.h:82
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
static LPOLESTR
Definition: stg_prop.c:27
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
interface IBindCtx * LPBINDCTX
Definition: objfwd.h:18
struct _COSERVERINFO COSERVERINFO
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
static FILE * out
Definition: regtests2xml.c:44
DWORD LCID
Definition: nls.h:13
COSERVERINFO * pServerInfo
Definition: objidl.idl:345
COSERVERINFO * pServerInfo
Definition: objidl.idl:356
const IID * pIID
Definition: objidl.idl:145
DWORD dwReserved1
Definition: objidl.idl:32
COAUTHINFO * pAuthInfo
Definition: objidl.idl:34
DWORD dwReserved2
Definition: objidl.idl:35
LPWSTR pwszName
Definition: objidl.idl:33
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG
Definition: typedefs.h:59
WCHAR * LPWSTR
Definition: xmlstorage.h:184