Trace register contents on exception.
[wine.git] / include / objidl.idl
blob39f8c541eda1ab159a840554bc8a64f547c5a59e
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 import "unknwn.idl";
21 interface IStream;
22 interface IEnumString;
23 interface IRunningObjectTable;
24 interface IMoniker;
25 interface IAdviseSink;
26 interface IAsyncManager;
28 /* FIXME: COSERVERINFO should be moved here from wtypes.idl */
30 /******************** Fundamentals ********************/
33 local,
34 object,
35 uuid(00000003-0000-0000-C000-000000000046)
37 interface IMarshal : IUnknown
39 typedef [unique] IMarshal *LPMARSHAL;
41 HRESULT GetUnmarshalClass(
42 [in] REFIID riid,
43 [in, unique] void *pv,
44 [in] DWORD dwDestContext,
45 [in, unique] void *pvDestContext,
46 [in] DWORD mshlflags,
47 [out] CLSID *pCid);
49 HRESULT GetMarshalSizeMax(
50 [in] REFIID riid,
51 [in, unique] void *pv,
52 [in] DWORD dwDestContext,
53 [in, unique] void *pvDestContext,
54 [in] DWORD mshlflags,
55 [out] DWORD *pSize);
57 HRESULT MarshalInterface(
58 [in, unique] IStream *pStm,
59 [in] REFIID riid,
60 [in, unique] void *pv,
61 [in] DWORD dwDestContext,
62 [in, unique] void *pvDestContext,
63 [in] DWORD mshlflags);
65 HRESULT UnmarshalInterface(
66 [in, unique] IStream *pStm,
67 [in] REFIID riid,
68 [out] void **ppv);
70 HRESULT ReleaseMarshalData(
71 [in, unique] IStream *pStm);
73 HRESULT DisconnectObject(
74 [in] DWORD dwReserved);
78 local,
79 object,
80 uuid(00000018-0000-0000-C000-000000000046)
82 interface IStdMarshalInfo : IUnknown
84 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
86 HRESULT GetClassForHandler(
87 [in] DWORD dwDestContext,
88 [in, unique] void *pvDestContext,
89 [out] CLSID *pClsid);
93 local,
94 object,
95 uuid(00000019-0000-0000-C000-000000000046)
97 interface IExternalConnection : IUnknown
99 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
101 typedef enum tagEXTCONN {
102 EXTCONN_STRONG = 0x0001,
103 EXTCONN_WEAK = 0x0002,
104 EXTCONN_CALLABLE = 0x0004
105 } EXTCONN;
107 DWORD AddConnection(
108 [in] DWORD extconn,
109 [in] DWORD reserved);
111 DWORD ReleaseConnection(
112 [in] DWORD extconn,
113 [in] DWORD reserved,
114 [in] BOOL fLastReleaseCloses);
118 local,
119 object,
120 uuid(00000020-0000-0000-C000-000000000046)
122 interface IMultiQI : IUnknown
124 typedef [unique] IMultiQI *LPMULTIQI;
126 typedef struct tagMULTI_QI {
127 const IID *pIID;
128 IUnknown *pItf;
129 HRESULT hr;
130 } MULTI_QI;
132 HRESULT QueryMultipleInterfaces(
133 [in] ULONG cMQIs,
134 [in, out] MULTI_QI *pMQIs);
138 local,
139 object,
140 uuid(00000002-0000-0000-C000-000000000046)
142 interface IMalloc : IUnknown
144 typedef [unique] IMalloc *LPMALLOC;
146 LPVOID Alloc(
147 [in] ULONG cb);
149 LPVOID Realloc(
150 [in] LPVOID pv,
151 [in] ULONG cb);
153 void Free(
154 [in] LPVOID pv);
156 ULONG GetSize(
157 [in] LPVOID pv);
159 int DidAlloc(LPVOID pv);
161 void HeapMinimize();
165 local,
166 object,
167 uuid(0000001d-0000-0000-C000-000000000046)
169 interface IMallocSpy : IUnknown
171 typedef [unique] IMallocSpy *LPMALLOCSPY;
173 ULONG PreAlloc(
174 [in] ULONG cbRequest);
176 LPVOID PostAlloc(
177 [in] LPVOID pActual);
179 LPVOID PreFree(
180 [in] LPVOID pRequest,
181 [in] BOOL fSpyed);
183 void PostFree(
184 [in] BOOL fSpyed);
186 ULONG PreRealloc(
187 [in] LPVOID pRequest,
188 [in] ULONG cbRequest,
189 [out] LPVOID *ppNewRequest,
190 [in] BOOL fSpyed);
192 LPVOID PostRealloc(
193 [in] LPVOID pActual,
194 [in] BOOL fSpyed);
196 LPVOID PreGetSize(
197 [in] LPVOID pRequest,
198 [in] BOOL fSpyed);
200 ULONG PostGetSize(
201 [in] ULONG cbActual,
202 [in] BOOL fSpyed);
204 LPVOID PreDidAlloc(
205 [in] LPVOID pRequest,
206 [in] BOOL fSpyed);
208 int PostDidAlloc(
209 [in] LPVOID pRequest,
210 [in] BOOL fSpyed,
211 [in] int fActual);
213 void PreHeapMinimize();
215 void PostHeapMinimize();
219 object,
220 uuid(00000100-0000-0000-C000-000000000046),
221 pointer_default(unique)
223 interface IEnumUnknown : IUnknown
225 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
227 [local]
228 HRESULT Next(
229 [in] ULONG celt,
230 [out] IUnknown **rgelt,
231 [out] ULONG *pceltFetched);
233 [call_as(Next)]
234 HRESULT RemoteNext(
235 [in] ULONG celt,
236 [out, size_is(celt), length_is(*pceltFetched)]
237 IUnknown **rgelt,
238 [out] ULONG *pceltFetched);
240 HRESULT Skip(
241 [in] ULONG celt);
243 HRESULT Reset();
245 HRESULT Clone(
246 [out] IEnumUnknown **ppenum);
250 object,
251 uuid(00000022-0000-0000-C000-000000000046),
252 version(1.0),
253 pointer_default(unique)
255 interface ISurrogate : IUnknown
257 typedef [unique] ISurrogate *LPSURROGATE;
259 HRESULT LoadDllServer(
260 [in] REFCLSID Clsid);
261 HRESULT FreeSurrogate();
265 local,
266 object,
267 uuid(00000146-0000-0000-C000-000000000046)
269 interface IGlobalInterfaceTable : IUnknown
271 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
273 HRESULT RegisterInterfaceInGlobal(
274 [in] IUnknown *pUnk,
275 [in] REFIID riid,
276 [out] DWORD *pdwCookie);
278 HRESULT RevokeInterfaceFromGlobal(
279 [in] DWORD dwCookie);
281 HRESULT GetInterfaceFromGlobal(
282 [in] DWORD dwCookie,
283 [in] REFIID riid,
284 [out, iid_is(riid)] void **ppv);
287 /******************** Monikers ********************/
290 object,
291 uuid(0000000e-0000-0000-C000-000000000046),
292 pointer_default(unique)
294 interface IBindCtx : IUnknown
296 typedef [unique] IBindCtx *LPBINDCTX;
297 typedef [unique] IBindCtx *LPBC;
299 typedef struct tagBIND_OPTS {
300 DWORD cbStruct;
301 DWORD grfFlags;
302 DWORD grfMode;
303 DWORD dwTickCountDeadline;
304 } BIND_OPTS, *LPBIND_OPTS;
306 /* FIXME: C++ crap */
307 typedef struct tagBIND_OPTS2 {
308 DWORD cbStruct;
309 DWORD grfFlags;
310 DWORD grfMode;
311 DWORD dwTickCountDeadline;
312 DWORD dwTrackFlags;
313 DWORD dwClassContext;
314 LCID locale;
315 COSERVERINFO *pServerInfo;
316 } BIND_OPTS2, *LPBIND_OPTS2;
318 typedef enum tagBIND_FLAGS {
319 BIND_MAYBOTHERUSER = 1,
320 BIND_JUSTTESTEXISTENCE = 2
321 } BIND_FLAGS;
323 HRESULT RegisterObjectBound(
324 [in, unique] IUnknown *punk);
326 HRESULT RevokeObjectBound(
327 [in, unique] IUnknown *punk);
329 HRESULT ReleaseBoundObjects();
331 [local]
332 HRESULT SetBindOptions(
333 [in] BIND_OPTS *pbindopts);
335 [call_as(SetBindOptions)]
336 HRESULT RemoteSetBindOptions(
337 [in] BIND_OPTS2 *pbindopts);
339 [local]
340 HRESULT GetBindOptions(
341 [in, out] BIND_OPTS *pbindopts);
343 [call_as(GetBindOptions)]
344 HRESULT RemoteGetBindOptions(
345 [in, out] BIND_OPTS2 *pbindopts);
347 HRESULT GetRunningObjectTable(
348 [out] IRunningObjectTable **pprot);
350 HRESULT RegisterObjectParam(
351 [in] LPOLESTR pszKey,
352 [in, unique] IUnknown *punk);
354 HRESULT GetObjectParam(
355 [in] LPOLESTR pszKey,
356 [out] IUnknown **ppunk);
358 HRESULT EnumObjectParam(
359 [out] IEnumString **ppenum);
361 HRESULT RevokeObjectParam(
362 [in] LPOLESTR pszKey);
366 object,
367 uuid(00000102-0000-0000-C000-000000000046),
368 pointer_default(unique)
370 interface IEnumMoniker : IUnknown
372 typedef [unique] IEnumMoniker *LPENUMMONIKER;
374 [local]
375 HRESULT Next(
376 [in] ULONG celt,
377 [out, size_is(celt), length_is(*pceltFetched)]
378 IMoniker **rgelt,
379 [out] ULONG *pceltFetched);
381 [call_as(Next)]
382 HRESULT RemoteNext(
383 [in] ULONG celt,
384 [out, size_is(celt), length_is(*pceltFetched)]
385 IMoniker **rgelt,
386 [out] ULONG *pceltFetched);
388 HRESULT Skip(
389 [in] ULONG celt);
391 HRESULT Reset();
393 HRESULT Clone(
394 [out] IEnumMoniker **ppenum);
398 object,
399 uuid(00000126-0000-0000-C000-000000000046)
401 interface IRunnableObject : IUnknown
403 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
405 HRESULT GetRunningClass(
406 [out] LPCLSID lpClsid);
408 HRESULT Run(
409 [in] LPBINDCTX pbc);
411 [local]
412 BOOL IsRunning();
414 [call_as(IsRunning)]
415 HRESULT RemoteIsRunning();
417 HRESULT LockRunning(
418 [in] BOOL fLock,
419 [in] BOOL fLastUnlockCloses);
421 HRESULT SetContainedObject(
422 [in] BOOL fContained);
425 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
426 * which resolves to a compilation failure if __WINESRC__ is defined,
427 * but GetObject is used as a valid method name below, so we have
428 * to undefine it if __WINESRC__ is defined */
429 cpp_quote("#ifdef __WINESRC__")
430 cpp_quote("#undef GetObject")
431 cpp_quote("#endif")
434 object,
435 uuid(00000010-0000-0000-C000-000000000046)
437 interface IRunningObjectTable : IUnknown
439 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
441 HRESULT Register(
442 [in] DWORD grfFlags,
443 [in, unique] IUnknown *punkObject,
444 [in, unique] IMoniker *pmkObjectName,
445 [out] DWORD *pdwRegister);
447 HRESULT Revoke(
448 [in] DWORD dwRegister);
450 HRESULT IsRunning(
451 [in, unique] IMoniker *pmkObjectName);
453 HRESULT GetObject(
454 [in, unique] IMoniker *pmkObjectName,
455 [out] IUnknown **ppunkObject);
457 HRESULT NoteChangeTime(
458 [in] DWORD dwRegister,
459 [in] FILETIME *pfiletime);
461 HRESULT GetTimeOfLastChange(
462 [in, unique] IMoniker *pmkObjectName,
463 [out] FILETIME *pfiletime);
465 HRESULT EnumRunning(
466 [out] IEnumMoniker **ppenumMoniker);
470 object,
471 uuid(0000010c-0000-0000-C000-000000000046)
473 interface IPersist : IUnknown
475 typedef [unique] IPersist *LPPERSIST;
477 HRESULT GetClassID(
478 [out] CLSID *pClassID);
482 object,
483 uuid(00000109-0000-0000-C000-000000000046),
484 pointer_default(unique)
486 interface IPersistStream : IPersist
488 typedef [unique] IPersistStream *LPPERSISTSTREAM;
490 HRESULT IsDirty();
492 HRESULT Load(
493 [in, unique] IStream *pStm);
495 HRESULT Save(
496 [in, unique] IStream *pStm,
497 [in] BOOL fClearDirty);
499 HRESULT GetSizeMax(
500 [out] ULARGE_INTEGER *pcbSize);
504 object,
505 uuid(0000000f-0000-0000-C000-000000000046),
506 pointer_default(unique)
508 interface IMoniker : IPersistStream
510 typedef [unique] IMoniker *LPMONIKER;
512 typedef enum tagMKSYS {
513 MKSYS_NONE = 0,
514 MKSYS_GENERICCOMPOSITE = 1,
515 MKSYS_FILEMONIKER = 2,
516 MKSYS_ANTIMONIKER = 3,
517 MKSYS_ITEMMONIKER = 4,
518 MKSYS_POINTERMONIKER = 5,
519 MKSYS_CLASSMONIKER = 7
520 } MKSYS;
522 typedef [v1_enum] enum tagMKREDUCE {
523 MKRREDUCE_ONE = 3 << 16,
524 MKRREDUCE_TOUSER = 2 << 16,
525 MKRREDUCE_THROUGHUSER = 1 << 16,
526 MKRREDUCE_ALL = 0
527 } MKRREDUCE;
529 [local]
530 HRESULT BindToObject(
531 [in, unique] IBindCtx *pbc,
532 [in, unique] IMoniker *pmkToLeft,
533 [in] REFIID riidResult,
534 [out, iid_is(riidResult)] void **ppvResult);
536 [call_as(BindToObject)]
537 HRESULT RemoteBindToObject(
538 [in, unique] IBindCtx *pbc,
539 [in, unique] IMoniker *pmkToLeft,
540 [in] REFIID riidResult,
541 [out, iid_is(riidResult)] IUnknown **ppvResult);
543 [local]
544 HRESULT BindToStorage(
545 [in, unique] IBindCtx *pbc,
546 [in, unique] IMoniker *pmkToLeft,
547 [in] REFIID riid,
548 [out, iid_is(riid)] void **ppvObj);
550 [call_as(BindToStorage)]
551 HRESULT RemoteBindToStorage(
552 [in, unique] IBindCtx *pbc,
553 [in, unique] IMoniker *pmkToLeft,
554 [in] REFIID riid,
555 [out, iid_is(riid)] IUnknown **ppvObj);
557 HRESULT Reduce(
558 [in, unique] IBindCtx *pbc,
559 [in] DWORD dwReduceHowFar,
560 [in, out, unique] IMoniker **ppmkToLeft,
561 [out] IMoniker **ppmkReduced);
563 HRESULT ComposeWith(
564 [in, unique] IMoniker *pmkRight,
565 [in] BOOL fOnlyIfNotGeneric,
566 [out] IMoniker **ppmkComposite);
568 HRESULT Enum(
569 [in] BOOL fForward,
570 [out] IEnumMoniker **ppenumMoniker);
572 HRESULT IsEqual(
573 [in, unique] IMoniker *pmkOtherMoniker);
575 HRESULT Hash(
576 [out] DWORD *pdwHash);
578 HRESULT IsRunning(
579 [in, unique] IBindCtx *pbc,
580 [in, unique] IMoniker *pmkToLeft,
581 [in, unique] IMoniker *pmkNewlyRunning);
583 HRESULT GetTimeOfLastChange(
584 [in, unique] IBindCtx *pbc,
585 [in, unique] IMoniker *pmkToLeft,
586 [out] FILETIME *pFileTime);
588 HRESULT Inverse(
589 [out] IMoniker **ppmk);
591 HRESULT CommonPrefixWith(
592 [in, unique] IMoniker *pmkOther,
593 [out] IMoniker **ppmkPrefix);
595 HRESULT RelativePathTo(
596 [in, unique] IMoniker *pmkOther,
597 [out] IMoniker **ppmkRelPath);
599 HRESULT GetDisplayName(
600 [in, unique] IBindCtx *pbc,
601 [in, unique] IMoniker *pmkToLeft,
602 [out] LPOLESTR *ppszDisplayName);
604 HRESULT ParseDisplayName(
605 [in, unique] IBindCtx *pbc,
606 [in, unique] IMoniker *pmkToLeft,
607 [in] LPOLESTR pszDisplayName,
608 [out] ULONG *pchEaten,
609 [out] IMoniker **ppmkOut);
611 HRESULT IsSystemMoniker(
612 [out] DWORD *pdwMksys);
616 object,
617 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
618 pointer_default(unique)
620 interface IROTData : IUnknown
622 HRESULT GetComparisonData(
623 [out, size_is(cbMax)] byte *pbData,
624 [in] ULONG cbMax,
625 [out] ULONG *pcbData);
629 object,
630 uuid(00000101-0000-0000-C000-000000000046),
631 pointer_default(unique)
633 interface IEnumString : IUnknown
635 typedef [unique] IEnumString *LPENUMSTRING;
637 [local]
638 HRESULT Next(
639 [in] ULONG celt,
640 [out, size_is(celt), length_is(*pceltFetched)]
641 LPOLESTR *rgelt,
642 [out] ULONG *pceltFetched);
644 [call_as(Next)]
645 HRESULT RemoteNext(
646 [in] ULONG celt,
647 [out, size_is(celt), length_is(*pceltFetched)]
648 LPOLESTR *rgelt,
649 [out] ULONG *pceltFetched);
651 HRESULT Skip(
652 [in] ULONG celt);
654 HRESULT Reset();
656 HRESULT Clone(
657 [out] IEnumString **ppenum);
661 object,
662 uuid(00000140-0000-0000-C000-000000000046)
664 interface IClassActivator : IUnknown
666 HRESULT GetClassObject(
667 [in] REFCLSID rclsid,
668 [in] DWORD dwClassContext,
669 [in] LCID locale,
670 [in] REFIID riid,
671 [out, iid_is(riid)] void **ppv);
674 /******************** Storage ********************/
677 object,
678 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
679 pointer_default(unique)
681 interface ISequentialStream : IUnknown
683 [local]
684 HRESULT Read(
685 [out, size_is(cb), length_is(*pcbRead)]
686 void *pv,
687 [in] ULONG cb,
688 [out] ULONG *pcbRead);
690 [call_as(Read)]
691 HRESULT RemoteRead(
692 [out, size_is(cb), length_is(*pcbRead)]
693 byte *pv,
694 [in] ULONG cb,
695 [out] ULONG *pcbRead);
697 [local]
698 HRESULT Write(
699 [in, size_is(cb)] const void *pv,
700 [in] ULONG cb,
701 [out] ULONG *pcbWritten);
703 [call_as(Write)]
704 HRESULT RemoteWrite(
705 [in, size_is(cb)] const byte *pv,
706 [in] ULONG cb,
707 [out] ULONG *pcbWritten);
711 object,
712 uuid(0000000c-0000-0000-C000-000000000046),
713 pointer_default(unique)
715 interface IStream : ISequentialStream
717 typedef [unique] IStream *LPSTREAM;
719 typedef struct tagSTATSTG {
720 LPOLESTR pwcsName;
721 DWORD type;
722 ULARGE_INTEGER cbSize;
723 FILETIME mtime;
724 FILETIME ctime;
725 FILETIME atime;
726 DWORD grfMode;
727 DWORD grfLocksSupported;
728 CLSID clsid;
729 DWORD grfStateBits;
730 DWORD reserved;
731 } STATSTG;
733 typedef enum tagSTGTY {
734 STGTY_STORAGE = 1,
735 STGTY_STREAM = 2,
736 STGTY_LOCKBYTES = 3,
737 STGTY_PROPERTY = 4
738 } STGTY;
740 typedef enum tagSTREAM_SEEK {
741 STREAM_SEEK_SET = 0,
742 STREAM_SEEK_CUR = 1,
743 STREAM_SEEK_END = 2
744 } STREAM_SEEK;
746 /* these are defined in Linux's fcntl.h,
747 * undefine them to avoid conflicts */
748 cpp_quote("#undef LOCK_MAND")
749 cpp_quote("#undef LOCK_READ")
750 cpp_quote("#undef LOCK_WRITE")
751 cpp_quote("#undef LOCK_RW")
753 typedef enum tagLOCKTYPE {
754 LOCK_WRITE = 1,
755 LOCK_EXCLUSIVE = 2,
756 LOCK_ONLYONCE = 4
757 } LOCKTYPE;
759 [local]
760 HRESULT Seek(
761 [in] LARGE_INTEGER dlibMove,
762 [in] DWORD dwOrigin,
763 [out] ULARGE_INTEGER *plibNewPosition);
765 [call_as(Seek)]
766 HRESULT RemoteSeek(
767 [in] LARGE_INTEGER dlibMove,
768 [in] DWORD dwOrigin,
769 [out] ULARGE_INTEGER *plibNewPosition);
771 HRESULT SetSize(
772 [in] ULARGE_INTEGER libNewSize);
774 [local]
775 HRESULT CopyTo(
776 [in, unique] IStream *pstm,
777 [in] ULARGE_INTEGER cb,
778 [out] ULARGE_INTEGER *pcbRead,
779 [out] ULARGE_INTEGER *pcbWritten);
781 [call_as(CopyTo)]
782 HRESULT RemoteCopyTo(
783 [in, unique] IStream *pstm,
784 [in] ULARGE_INTEGER cb,
785 [out] ULARGE_INTEGER *pcbRead,
786 [out] ULARGE_INTEGER *pcbWritten);
788 HRESULT Commit(
789 [in] DWORD grfCommitFlags);
791 HRESULT Revert();
793 HRESULT LockRegion(
794 [in] ULARGE_INTEGER libOffset,
795 [in] ULARGE_INTEGER cb,
796 [in] DWORD dwLockType);
798 HRESULT UnlockRegion(
799 [in] ULARGE_INTEGER libOffset,
800 [in] ULARGE_INTEGER cb,
801 [in] DWORD dwLockType);
803 HRESULT Stat(
804 [out] STATSTG *pstatstg,
805 [in] DWORD grfStatFlag);
807 HRESULT Clone(
808 [out] IStream **ppstm);
812 object,
813 uuid(0000000d-0000-0000-C000-000000000046),
814 pointer_default(unique)
816 interface IEnumSTATSTG : IUnknown
818 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
820 [local]
821 HRESULT Next(
822 [in] ULONG celt,
823 [out, size_is(celt), length_is(*pceltFetched)]
824 STATSTG *rgelt,
825 [out] ULONG *pceltFetched);
827 [call_as(Next)]
828 HRESULT RemoteNext(
829 [in] ULONG celt,
830 [out, size_is(celt), length_is(*pceltFetched)]
831 STATSTG *rgelt,
832 [out] ULONG *pceltFetched);
834 HRESULT Skip(
835 [in] ULONG celt);
837 HRESULT Reset();
839 HRESULT Clone(
840 [out] IEnumSTATSTG **ppenum);
844 object,
845 uuid(0000000b-0000-0000-C000-000000000046),
846 pointer_default(unique)
848 interface IStorage : IUnknown
850 typedef [unique] IStorage *LPSTORAGE;
852 typedef struct tagRemSNB {
853 unsigned long ulCntStr;
854 unsigned long ulCntChar;
855 [size_is(ulCntChar)] OLECHAR rgString[];
856 } RemSNB;
858 typedef [unique] RemSNB *wireSNB;
859 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
861 HRESULT CreateStream(
862 [in] LPCOLESTR pwcsName,
863 [in] DWORD grfMode,
864 [in] DWORD reserved1,
865 [in] DWORD reserved2,
866 [out] IStream **ppstm);
868 [local]
869 HRESULT OpenStream(
870 [in] LPCOLESTR pwcsName,
871 [in, unique] void *reserved1,
872 [in] DWORD grfMode,
873 [in] DWORD reserved2,
874 [out] IStream **ppstm);
876 [call_as(OpenStream)]
877 HRESULT RemoteOpenStream(
878 [in] LPCOLESTR pwcsName,
879 [in] unsigned long cbReserved1,
880 [in, unique, size_is(cbReserved1)] byte *reserved1,
881 [in] DWORD grfMode,
882 [in] DWORD reserved2,
883 [out] IStream **ppstm);
885 HRESULT CreateStorage(
886 [in] LPCOLESTR pwcsName,
887 [in] DWORD grfMode,
888 [in] DWORD dwStgFmt,
889 [in] DWORD reserved2,
890 [out] IStorage **ppstg);
892 HRESULT OpenStorage(
893 [in, unique] LPCOLESTR pwcsName,
894 [in, unique] IStorage *pstgPriority,
895 [in] DWORD grfMode,
896 [in, unique] SNB snbExclude,
897 [in] DWORD reserved,
898 [out] IStorage **ppstg);
900 HRESULT CopyTo(
901 [in] DWORD ciidExclude,
902 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
903 [in, unique] SNB snbExclude,
904 [in, unique] IStorage *pstgDest);
906 HRESULT MoveElementTo(
907 [in] LPCOLESTR pwcsName,
908 [in, unique] IStorage *pstgDest,
909 [in] LPCOLESTR pwcsNewName,
910 [in] DWORD grfFlags);
912 HRESULT Commit(
913 [in] DWORD grfCommitFlags);
915 HRESULT Revert();
917 [local]
918 HRESULT EnumElements(
919 [in] DWORD reserved1,
920 [in, unique, size_is(1)] void *reserved2,
921 [in] DWORD reserved3,
922 [out] IEnumSTATSTG **ppenum);
924 [call_as(EnumElements)]
925 HRESULT RemoteEnumElements(
926 [in] DWORD reserved1,
927 [in] unsigned long cbReserved2,
928 [in, unique, size_is(cbReserved2)] byte *reserved2,
929 [in] DWORD reserved3,
930 [out] IEnumSTATSTG **ppenum);
932 HRESULT DestroyElement(
933 [in] LPCOLESTR pwcsName);
935 HRESULT RenameElement(
936 [in] LPCOLESTR pwcsOldName,
937 [in] LPCOLESTR pwcsNewName);
939 HRESULT SetElementTimes(
940 [in, unique] LPCOLESTR pwcsName,
941 [in, unique] const FILETIME *pctime,
942 [in, unique] const FILETIME *patime,
943 [in, unique] const FILETIME *pmtime);
945 HRESULT SetClass(
946 [in] REFCLSID clsid);
948 HRESULT SetStateBits(
949 [in] DWORD grfStateBits,
950 [in] DWORD grfMask);
952 HRESULT Stat(
953 [out] STATSTG *pstatstg,
954 [in] DWORD grfStatFlag);
958 object,
959 uuid(0000010b-0000-0000-C000-000000000046),
960 pointer_default(unique)
962 interface IPersistFile : IPersist
964 typedef [unique] IPersistFile *LPPERSISTFILE;
966 HRESULT IsDirty();
968 HRESULT Load(
969 [in] LPCOLESTR pszFileName,
970 [in] DWORD dwMode);
972 HRESULT Save(
973 [in, unique] LPCOLESTR pszFileName,
974 [in] BOOL fRemember);
976 HRESULT SaveCompleted(
977 [in, unique] LPCOLESTR pszFileName);
979 HRESULT GetCurFile(
980 [out] LPOLESTR *ppszFileName);
984 object,
985 uuid(0000010a-0000-0000-C000-000000000046),
986 pointer_default(unique)
988 interface IPersistStorage : IPersist
990 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
992 HRESULT IsDirty();
994 HRESULT InitNew(
995 [in, unique] IStorage *pStg);
997 HRESULT Load(
998 [in, unique] IStorage *pStg);
1000 HRESULT Save(
1001 [in, unique] IStorage *pStgSave,
1002 [in] BOOL fSameAsLoad);
1004 HRESULT SaveCompleted(
1005 [in, unique] IStorage *pStgNew);
1007 HRESULT HandsOffStorage();
1011 object,
1012 uuid(00000012-0000-0000-C000-000000000046),
1013 pointer_default(unique)
1015 interface IRootStorage : IUnknown
1017 typedef [unique] IRootStorage *LPROOTSTORAGE;
1019 HRESULT SwitchToFile(
1020 [in] LPOLESTR pszFile);
1024 object,
1025 uuid(0000000a-0000-0000-C000-000000000046),
1026 pointer_default(unique)
1028 interface ILockBytes : IUnknown
1030 typedef [unique] ILockBytes *LPLOCKBYTES;
1032 [local]
1033 HRESULT ReadAt(
1034 [in] ULARGE_INTEGER ulOffset,
1035 [out, size_is(cb), length_is(*pcbRead)]
1036 void *pv,
1037 [in] ULONG cb,
1038 [out] ULONG *pcbRead);
1040 [call_as(ReadAt)]
1041 HRESULT RemoteReadAt(
1042 [in] ULARGE_INTEGER ulOffset,
1043 [out, size_is(cb), length_is(*pcbRead)]
1044 byte *pv,
1045 [in] ULONG cb,
1046 [out] ULONG *pcbRead);
1048 [local]
1049 HRESULT WriteAt(
1050 [in] ULARGE_INTEGER ulOffset,
1051 [in, size_is(cb)] const void *pv,
1052 [in] ULONG cb,
1053 [out] ULONG *pcbWritten);
1055 [call_as(WriteAt)]
1056 HRESULT RemoteWriteAt(
1057 [in] ULARGE_INTEGER ulOffset,
1058 [in, size_is(cb)] const byte *pv,
1059 [in] ULONG cb,
1060 [out] ULONG *pcbWritten);
1062 HRESULT Flush();
1064 HRESULT SetSize(
1065 [in] ULARGE_INTEGER cb);
1067 HRESULT LockRegion(
1068 [in] ULARGE_INTEGER libOffset,
1069 [in] ULARGE_INTEGER cb,
1070 [in] DWORD dwLockType);
1072 HRESULT UnlockRegion(
1073 [in] ULARGE_INTEGER libOffset,
1074 [in] ULARGE_INTEGER cb,
1075 [in] DWORD dwLockType);
1077 HRESULT Stat(
1078 [out] STATSTG *pstatstg,
1079 [in] DWORD grfStatFlag);
1083 object,
1084 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1085 pointer_default(unique)
1087 interface IFillLockBytes : IUnknown
1089 [local]
1090 HRESULT FillAppend(
1091 [in, size_is(cb)] const void *pv,
1092 [in] ULONG cb,
1093 [out] ULONG *pcbWritten);
1095 [call_as(FillAppend)]
1096 HRESULT RemoteFillAppend(
1097 [in, size_is(cb)] const byte *pv,
1098 [in] ULONG cb,
1099 [out] ULONG *pcbWritten);
1101 [local]
1102 HRESULT FillAt(
1103 [in] ULARGE_INTEGER ulOffset,
1104 [in, size_is(cb)] const void *pv,
1105 [in] ULONG cb,
1106 [out] ULONG *pcbWritten);
1108 [call_as(FillAt)]
1109 HRESULT RemoteFillAt(
1110 [in] ULARGE_INTEGER ulOffset,
1111 [in, size_is(cb)] const byte *pv,
1112 [in] ULONG cb,
1113 [out] ULONG *pcbWritten);
1115 HRESULT SetFillSize(
1116 [in] ULARGE_INTEGER ulSize);
1118 HRESULT Terminate(
1119 [in] BOOL bCanceled);
1123 object,
1124 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1125 pointer_default(unique)
1127 interface IProgressNotify : IUnknown
1129 HRESULT OnProgress(
1130 [in] DWORD dwProgressCurrent,
1131 [in] DWORD dwProgressMaximum,
1132 [in] BOOL fAccurate,
1133 [in] BOOL fOwner);
1137 local,
1138 object,
1139 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1140 pointer_default(unique)
1142 interface ILayoutStorage : IUnknown
1144 typedef struct tagStorageLayout {
1145 DWORD LayoutType;
1146 OLECHAR *pwcsElementName;
1147 LARGE_INTEGER cOffset;
1148 LARGE_INTEGER cBytes;
1149 } StorageLayout;
1151 HRESULT LayoutScript(
1152 [in] StorageLayout *pStorageLayout,
1153 [in] DWORD nEntries,
1154 [in] DWORD glfInterleavedFlag);
1156 HRESULT BeginMonitor();
1158 HRESULT EndMonitor();
1160 HRESULT ReLayoutDocfile(
1161 [in] OLECHAR *pwcsNewDfName);
1163 HRESULT ReLayoutDocfileOnILockBytes(
1164 [in] ILockBytes *pILockBytes);
1167 /******************** Data Object ********************/
1170 object,
1171 uuid(00000103-0000-0000-C000-000000000046),
1172 pointer_default(unique)
1174 interface IEnumFORMATETC : IUnknown
1176 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1178 typedef struct tagDVTARGETDEVICE {
1179 DWORD tdSize;
1180 WORD tdDriverNameOffset;
1181 WORD tdDeviceNameOffset;
1182 WORD tdPortNameOffset;
1183 WORD tdExtDevmodeOffset;
1184 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1185 BYTE tdData[];
1186 } DVTARGETDEVICE;
1188 typedef CLIPFORMAT *LPCLIPFORMAT;
1190 typedef struct tagFORMATETC {
1191 CLIPFORMAT cfFormat;
1192 [unique] DVTARGETDEVICE *ptd;
1193 DWORD dwAspect;
1194 LONG lindex;
1195 DWORD tymed;
1196 } FORMATETC, *LPFORMATETC;
1198 [local]
1199 HRESULT Next(
1200 [in] ULONG celt,
1201 [out, size_is(celt), length_is(*pceltFetched)]
1202 FORMATETC *rgelt,
1203 [out] ULONG *pceltFetched);
1205 [call_as(Next)]
1206 HRESULT RemoteNext(
1207 [in] ULONG celt,
1208 [out, size_is(celt), length_is(*pceltFetched)]
1209 FORMATETC *rgelt,
1210 [out] ULONG *pceltFetched);
1212 HRESULT Skip(
1213 [in] ULONG celt);
1215 HRESULT Reset();
1217 HRESULT Clone(
1218 [out] IEnumFORMATETC **ppenum);
1222 object,
1223 uuid(00000105-0000-0000-C000-000000000046),
1224 pointer_default(unique)
1226 interface IEnumSTATDATA : IUnknown
1228 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1230 typedef enum tagADVF {
1231 ADVF_NODATA = 1,
1232 ADVF_PRIMEFIRST = 2,
1233 ADVF_ONLYONCE = 4,
1234 ADVF_DATAONSTOP = 64,
1235 ADVFCACHE_NOHANDLER = 8,
1236 ADVFCACHE_FORCEBUILTIN = 16,
1237 ADVFCACHE_ONSAVE = 32
1238 } ADVF;
1240 typedef struct tagSTATDATA
1242 FORMATETC formatetc;
1243 DWORD advf;
1244 [unique] IAdviseSink *pAdvSink;
1245 DWORD dwConnection;
1246 } STATDATA, *LPSTATDATA;
1248 [local]
1249 HRESULT Next(
1250 [in] ULONG celt,
1251 [out, size_is(celt), length_is(*pceltFetched)]
1252 STATDATA *rgelt,
1253 [out] ULONG *pceltFetched);
1255 [call_as(Next)]
1256 HRESULT RemoteNext(
1257 [in] ULONG celt,
1258 [out, size_is(celt), length_is(*pceltFetched)]
1259 STATDATA *rgelt,
1260 [out] ULONG *pceltFetched);
1262 HRESULT Skip(
1263 [in] ULONG celt);
1265 HRESULT Reset();
1267 HRESULT Clone(
1268 [out] IEnumSTATDATA **ppenum);
1272 object,
1273 uuid(0000010f-0000-0000-C000-000000000046),
1274 pointer_default(unique)
1276 interface IAdviseSink : IUnknown
1278 typedef IAdviseSink *LPADVISESINK;
1280 typedef [v1_enum] enum tagTYMED {
1281 TYMED_HGLOBAL = 1,
1282 TYMED_FILE = 2,
1283 TYMED_ISTREAM = 4,
1284 TYMED_ISTORAGE = 8,
1285 TYMED_GDI = 16,
1286 TYMED_MFPICT = 32,
1287 TYMED_ENHMF = 64,
1288 TYMED_NULL = 0
1289 } TYMED;
1291 typedef struct tagRemSTGMEDIUM {
1292 DWORD tymed;
1293 DWORD dwHandleType;
1294 unsigned long pData;
1295 unsigned long pUnkForRelease;
1296 unsigned long cbData;
1297 [size_is(cbData)] byte data[];
1298 } RemSTGMEDIUM;
1300 /* FIXME: C/C++ nameless union version */
1301 typedef struct tagSTGMEDIUM {
1302 DWORD tymed;
1303 [switch_is(tymed)] union {
1304 [case(TYMED_GDI)] HBITMAP hBitmap;
1305 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1306 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1307 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1308 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1309 [case(TYMED_ISTREAM)] IStream *pstm;
1310 [case(TYMED_ISTORAGE)] IStorage *pstg;
1311 [default] ;
1313 [unique] IUnknown *pUnkForRelease;
1314 } uSTGMEDIUM;
1316 /* copied from wingdi.h */
1317 #define OBJ_PEN 1
1318 #define OBJ_BRUSH 2
1319 #define OBJ_DC 3
1320 #define OBJ_METADC 4
1321 #define OBJ_PAL 5
1322 #define OBJ_FONT 6
1323 #define OBJ_BITMAP 7
1324 #define OBJ_REGION 8
1325 #define OBJ_METAFILE 9
1326 #define OBJ_MEMDC 10
1327 #define OBJ_EXTPEN 11
1328 #define OBJ_ENHMETADC 12
1329 #define OBJ_ENHMETAFILE 13
1331 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1332 case OBJ_BITMAP: wireHBITMAP hBitmap;
1333 case OBJ_PAL: wireHPALETTE hPalette;
1334 default: wireHGLOBAL hGeneric;
1335 } GDI_OBJECT;
1337 typedef struct _userSTGMEDIUM {
1338 union switch(DWORD tymed) u {
1339 case TYMED_NULL: ;
1340 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1341 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1342 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1343 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1344 case TYMED_FILE: LPOLESTR lpszFileName;
1345 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1346 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1348 IUnknown *pUnkForRelease;
1349 } userSTGMEDIUM;
1351 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1352 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1354 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1355 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1357 typedef STGMEDIUM *LPSTGMEDIUM;
1359 typedef struct _userFLAG_STGMEDIUM {
1360 long ContextFlags;
1361 long fPassOwnership;
1362 userSTGMEDIUM Stgmed;
1363 } userFLAG_STGMEDIUM;
1365 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1367 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1368 long ContextFlags;
1369 long fPassOwnership;
1370 STGMEDIUM Stgmed;
1371 } FLAG_STGMEDIUM;
1373 [local]
1374 void OnDataChange(
1375 [in, unique] FORMATETC *pFormatetc,
1376 [in, unique] STGMEDIUM *pStgmed);
1378 [call_as(OnDataChange), async]
1379 HRESULT RemoteOnDataChange(
1380 [in] IAsyncManager **ppIAM,
1381 [in, unique] FORMATETC *pFormatetc,
1382 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1384 [local]
1385 void OnViewChange(
1386 [in] DWORD dwAspect,
1387 [in] LONG lindex);
1389 [call_as(OnViewChange), async]
1390 HRESULT RemoteOnViewChange(
1391 [in] IAsyncManager **ppIAM,
1392 [in] DWORD dwAspect,
1393 [in] LONG lindex);
1395 [local]
1396 void OnRename(
1397 [in] IMoniker *pmk);
1399 [call_as(OnRename), async]
1400 HRESULT RemoteOnRename(
1401 [in] IAsyncManager **ppIAM,
1402 [in] IMoniker *pmk);
1404 [local]
1405 void OnSave();
1407 [call_as(OnSave), async]
1408 HRESULT RemoteOnSave(
1409 [in] IAsyncManager **ppIAM);
1411 [local]
1412 void OnClose();
1414 [call_as(OnClose)]
1415 HRESULT RemoteOnClose();
1419 object,
1420 uuid(00000125-0000-0000-C000-000000000046),
1421 pointer_default(unique)
1423 interface IAdviseSink2 : IAdviseSink
1425 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1427 [local]
1428 void OnLinkSrcChange(
1429 [in, unique] IMoniker *pmk);
1431 [call_as(OnLinkSrcChange), async]
1432 HRESULT RemoteOnLinkSrcChange(
1433 [in] IAsyncManager **ppIAM,
1434 [in, unique] IMoniker *pmk);
1438 object,
1439 uuid(0000010e-0000-0000-C000-000000000046),
1440 pointer_default(unique)
1442 interface IDataObject : IUnknown
1444 typedef [unique] IDataObject *LPDATAOBJECT;
1446 typedef enum tagDATADIR {
1447 DATADIR_GET = 1,
1448 DATADIR_SET = 2
1449 } DATADIR;
1451 [local]
1452 HRESULT GetData(
1453 [in, unique] FORMATETC *pformatetcIn,
1454 [out] STGMEDIUM *pmedium);
1456 [call_as(GetData)]
1457 HRESULT RemoteGetData(
1458 [in, unique] FORMATETC *pformatetcIn,
1459 [out] STGMEDIUM *pRemoteMedium);
1461 [local]
1462 HRESULT GetDataHere(
1463 [in, unique] FORMATETC *pformatetc,
1464 [in, out] STGMEDIUM *pmedium);
1466 [call_as(GetDataHere)]
1467 HRESULT RemoteGetDataHere(
1468 [in, unique] FORMATETC *pformatetc,
1469 [in, out] STGMEDIUM *pRemoteMedium);
1471 HRESULT QueryGetData(
1472 [in, unique] FORMATETC *pformatetc);
1474 HRESULT GetCanonicalFormatEtc(
1475 [in, unique] FORMATETC *pformatectIn,
1476 [out] FORMATETC *pformatetcOut);
1478 [local]
1479 HRESULT SetData(
1480 [in, unique] FORMATETC *pformatetc,
1481 [in, unique] STGMEDIUM *pmedium,
1482 [in] BOOL fRelease);
1484 [call_as(SetData)]
1485 HRESULT RemoteSetData(
1486 [in, unique] FORMATETC *pformatetc,
1487 [in, unique] FLAG_STGMEDIUM *pmedium,
1488 [in] BOOL fRelease);
1490 HRESULT EnumFormatEtc(
1491 [in] DWORD dwDirection,
1492 [out] IEnumFORMATETC **ppenumFormatEtc);
1494 HRESULT DAdvise(
1495 [in] FORMATETC *pformatetc,
1496 [in] DWORD advf,
1497 [in, unique] IAdviseSink *pAdvSink,
1498 [out] DWORD *pdwConnection);
1500 HRESULT DUnadvise(
1501 [in] DWORD dwConnection);
1503 HRESULT EnumDAdvise(
1504 [out] IEnumSTATDATA **ppenumAdvise);
1508 local,
1509 object,
1510 uuid(00000110-0000-0000-C000-000000000046)
1512 interface IDataAdviseHolder : IUnknown
1514 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1516 HRESULT Advise(
1517 [in, unique] IDataObject *pDataObject,
1518 [in, unique] FORMATETC *pFetc,
1519 [in] DWORD advf,
1520 [in, unique] IAdviseSink *pAdvise,
1521 [out] DWORD *pdwConnection);
1523 HRESULT Unadvise(
1524 [in] DWORD dwConnection);
1526 HRESULT EnumAdvise(
1527 [out] IEnumSTATDATA **ppenumAdvise);
1529 HRESULT SendOnDataChange(
1530 [in, unique] IDataObject *pDataObject,
1531 [in] DWORD dwReserved,
1532 [in] DWORD advf);
1535 /******************** Remoting ********************/
1538 local,
1539 object,
1540 uuid(00000016-0000-0000-C000-000000000046)
1542 interface IMessageFilter : IUnknown
1544 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1546 typedef enum tagCALLTYPE {
1547 CALLTYPE_TOPLEVEL = 1,
1548 CALLTYPE_NESTED = 2,
1549 CALLTYPE_ASYNC = 3,
1550 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1551 CALLTYPE_ASYNC_CALLPENDING = 5
1552 } CALLTYPE;
1554 typedef enum tagSERVERCALL {
1555 SERVERCALL_ISHANDLED = 0,
1556 SERVERCALL_REJECTED = 1,
1557 SERVERCALL_RETRYLATER = 2
1558 } SERVERCALL;
1560 typedef enum tagPENDINGTYPE {
1561 PENDINGTYPE_TOPLEVEL = 1,
1562 PENDINGTYPE_NESTED = 2
1563 } PENDINGTYPE;
1565 typedef enum tagPENDINGMSG {
1566 PENDINGMSG_CANCELCALL = 0,
1567 PENDINGMSG_WAITNOPROCESS = 1,
1568 PENDINGMSG_WAITDEFPROCESS = 2
1569 } PENDINGMSG;
1571 typedef struct tagINTERFACEINFO {
1572 IUnknown *pUnk;
1573 IID iid;
1574 WORD wMethod;
1575 } INTERFACEINFO, *LPINTERFACEINFO;
1577 DWORD HandleInComingCall(
1578 [in] DWORD dwCallType,
1579 [in] HTASK htaskCaller,
1580 [in] DWORD dwTickCount,
1581 [in] LPINTERFACEINFO lpInterfaceInfo);
1583 DWORD RetryRejectedCall(
1584 [in] HTASK htaskCallee,
1585 [in] DWORD dwTickCount,
1586 [in] DWORD dwRejectType);
1588 DWORD MessagePending(
1589 [in] HTASK htaskCallee,
1590 [in] DWORD dwTickCount,
1591 [in] DWORD dwPendingType);
1595 local,
1596 object,
1597 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1599 interface IRpcChannelBuffer : IUnknown
1601 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1603 typedef unsigned long RPCOLEDATAREP;
1605 typedef struct tagRPCOLEMESSAGE {
1606 void *reserved1;
1607 RPCOLEDATAREP dataRepresentation;
1608 void *Buffer;
1609 ULONG cbBuffer;
1610 ULONG iMethod;
1611 void *reserved2[5];
1612 ULONG rpcFlags;
1613 } RPCOLEMESSAGE;
1615 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1617 HRESULT GetBuffer(
1618 [in] RPCOLEMESSAGE *pMessage,
1619 [in] REFIID riid);
1621 HRESULT SendReceive(
1622 [in,out] RPCOLEMESSAGE *pMessage,
1623 [out] ULONG *pStatus);
1625 HRESULT FreeBuffer(
1626 [in] RPCOLEMESSAGE *pMessage);
1628 HRESULT GetDestCtx(
1629 [out] DWORD *pdwDestContext,
1630 [out] void **ppvDestContext);
1632 HRESULT IsConnected();
1636 local,
1637 object,
1638 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1640 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1642 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1644 HRESULT GetProtocolVersion(
1645 [in,out] DWORD *pdwVersion);
1649 local,
1650 object,
1651 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1653 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1655 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1657 HRESULT Send(
1658 [in,out] RPCOLEMESSAGE *pMsg,
1659 [out] ULONG *pulStatus);
1661 HRESULT Receive(
1662 [in,out] RPCOLEMESSAGE *pMsg,
1663 [in] ULONG ulSize,
1664 [out] ULONG *pulStatus);
1666 HRESULT Cancel(
1667 [in] RPCOLEMESSAGE *pMsg);
1669 HRESULT GetCallContext(
1670 [in] RPCOLEMESSAGE *pMsg,
1671 [in] REFIID riid,
1672 [out] void **pInterface);
1674 HRESULT GetDestCtxEx(
1675 [in] RPCOLEMESSAGE *pMsg,
1676 [out] DWORD *pdwDestContext,
1677 [out] void **ppvDestContext);
1679 HRESULT GetState(
1680 [in] RPCOLEMESSAGE *pMsg,
1681 [out] DWORD *pState);
1683 HRESULT RegisterAsync(
1684 [in] RPCOLEMESSAGE *pMsg,
1685 [in] IAsyncManager *pAsyncMgr);
1689 local,
1690 object,
1691 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1693 interface IRpcProxyBuffer : IUnknown
1695 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1697 HRESULT Connect(
1698 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1700 void Disconnect();
1704 local,
1705 object,
1706 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1708 interface IRpcStubBuffer : IUnknown
1710 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1712 HRESULT Connect(
1713 [in] IUnknown *pUnkServer);
1715 void Disconnect();
1717 HRESULT Invoke(
1718 [in] RPCOLEMESSAGE *_prpcmsg,
1719 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1721 IRpcStubBuffer *IsIIDSupported(
1722 [in] REFIID riid);
1724 ULONG CountRefs();
1726 HRESULT DebugServerQueryInterface(
1727 void **ppv);
1729 void DebugServerRelease(
1730 void *pv);
1734 local,
1735 object,
1736 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1738 interface IPSFactoryBuffer : IUnknown
1740 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1742 HRESULT CreateProxy(
1743 [in] IUnknown *pUnkOuter,
1744 [in] REFIID riid,
1745 [out] IRpcProxyBuffer **ppProxy,
1746 [out] void **ppv);
1748 HRESULT CreateStub(
1749 [in] REFIID riid,
1750 [in, unique] IUnknown *pUnkServer,
1751 [out] IRpcStubBuffer **ppStub);
1755 local,
1756 object,
1757 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1759 interface IChannelHook : IUnknown
1761 typedef [unique] IChannelHook *LPCHANNELHOOK;
1763 typedef struct SChannelHookCallInfo {
1764 IID iid;
1765 DWORD cbSize;
1766 GUID uCausality;
1767 DWORD dwServerPid;
1768 DWORD iMethod;
1769 void *pObject;
1770 } SChannelHookCallInfo;
1772 void ClientGetSize(
1773 [in] REFGUID uExtent,
1774 [in] REFIID riid,
1775 [out] ULONG *pDataSize);
1777 void ClientFillBuffer(
1778 [in] REFGUID uExtent,
1779 [in] REFIID riid,
1780 [in, out] ULONG *pDataSize,
1781 [in] void *pDataBuffer);
1783 void ClientNotify(
1784 [in] REFGUID uExtent,
1785 [in] REFIID riid,
1786 [in] ULONG cbDataSize,
1787 [in] void *pDataBuffer,
1788 [in] DWORD lDataRep,
1789 [in] HRESULT hrFault);
1791 void ServerNotify(
1792 [in] REFGUID uExtent,
1793 [in] REFIID riid,
1794 [in] ULONG cbDataSize,
1795 [in] void *pDataBuffer,
1796 [in] DWORD lDataRep);
1798 void ServerGetSize(
1799 [in] REFGUID uExtent,
1800 [in] REFIID riid,
1801 [in] HRESULT hrFault,
1802 [out] ULONG *pDataSize);
1804 void ServerFillBuffer(
1805 [in] REFGUID uExtent,
1806 [in] REFIID riid,
1807 [in, out] ULONG *pDataSize,
1808 [in] void *pDataBuffer,
1809 [in] HRESULT hrFault );
1812 /******************** Property Storage ********************/
1814 interface IEnumSTATPROPSTG;
1815 interface IEnumSTATPROPSETSTG;
1818 object,
1819 uuid(00000138-0000-0000-C000-000000000046),
1820 pointer_default(unique)
1822 interface IPropertyStorage : IUnknown
1824 typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE;
1826 extern const FMTID FMTID_SummaryInformation;
1827 extern const FMTID FMTID_DocSummaryInformation;
1828 extern const FMTID FMTID_UserDefinedProperties;
1830 const DWORD PROPSETFLAG_DEFAULT = 0;
1831 const DWORD PROPSETFLAG_NONSIMPLE = 1;
1832 const DWORD PROPSETFLAG_ANSI = 2;
1833 const DWORD PROPSETFLAG_UNBUFFERED = 4;
1835 typedef struct tagPROPVARIANT PROPVARIANT;
1837 #define TYPEDEF_CA(type, name) \
1838 typedef struct tag##name { \
1839 ULONG cElems; \
1840 [size_is(cElems)] \
1841 type *pElems; \
1842 } name
1844 TYPEDEF_CA(unsigned char, CAUB);
1845 TYPEDEF_CA(short, CAI);
1846 TYPEDEF_CA(USHORT, CAUI);
1847 TYPEDEF_CA(long, CAL);
1848 TYPEDEF_CA(ULONG, CAUL);
1849 TYPEDEF_CA(float, CAFLT);
1850 TYPEDEF_CA(double, CADBL);
1851 TYPEDEF_CA(CY, CACY);
1852 TYPEDEF_CA(DATE, CADATE);
1853 TYPEDEF_CA(BSTR, CABSTR);
1854 TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
1855 TYPEDEF_CA(VARIANT_BOOL, CABOOL);
1856 TYPEDEF_CA(SCODE, CASCODE);
1857 TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
1858 TYPEDEF_CA(LARGE_INTEGER, CAH);
1859 TYPEDEF_CA(ULARGE_INTEGER, CAUH);
1860 TYPEDEF_CA(LPSTR, CALPSTR);
1861 TYPEDEF_CA(LPWSTR, CALPWSTR);
1862 TYPEDEF_CA(FILETIME, CAFILETIME);
1863 TYPEDEF_CA(CLIPDATA, CACLIPDATA);
1864 TYPEDEF_CA(CLSID, CACLSID);
1866 struct tagPROPVARIANT {
1867 VARTYPE vt;
1868 WORD wReserved1;
1869 WORD wReserved2;
1870 WORD wReserved3;
1871 [switch_is(vt & 0x1fff)] union {
1872 [case(VT_EMPTY, VT_NULL)] ;
1873 [case(VT_I1)] char cVal;
1874 [case(VT_UI1)] UCHAR bVal;
1875 [case(VT_I2)] short iVal;
1876 [case(VT_UI2)] USHORT uiVal;
1877 [case(VT_BOOL)] VARIANT_BOOL boolVal;
1878 #if 0 /* illegal in C++ */
1879 [case(VT_ILLEGAL)] _VARIANT_BOOL bool;
1880 #endif
1881 [case(VT_I4)] long lVal;
1882 [case(VT_UI4)] ULONG ulVal;
1883 [case(VT_R4)] float fltVal;
1884 [case(VT_ERROR)] SCODE scode;
1885 [case(VT_I8)] LARGE_INTEGER hVal;
1886 [case(VT_UI8)] ULARGE_INTEGER uhVal;
1887 [case(VT_R8)] double dblVal;
1888 [case(VT_CY)] CY cyVal;
1889 [case(VT_DATE)] DATE date;
1890 [case(VT_FILETIME)] FILETIME filetime;
1891 [case(VT_CLSID)] CLSID *puuid;
1892 [case(VT_BLOB, VT_BLOB_OBJECT)] BLOB blob;
1893 [case(VT_CF)] CLIPDATA *pclipdata;
1894 [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream;
1895 [case(VT_STORAGE, VT_STORED_OBJECT)] IStorage *pStorage;
1896 [case(VT_BSTR)] BSTR bstrVal;
1897 [case(VT_BSTR_BLOB)] BSTRBLOB bstrblobVal;
1898 [case(VT_LPSTR)] LPSTR pszVal;
1899 [case(VT_LPWSTR)] LPWSTR pwszVal;
1900 [case(VT_UI1|VT_VECTOR)] CAUB caub;
1901 [case(VT_I2|VT_VECTOR)] CAI cai;
1902 [case(VT_UI2|VT_VECTOR)] CAUI caui;
1903 [case(VT_BOOL|VT_VECTOR)] CABOOL cabool;
1904 [case(VT_I4|VT_VECTOR)] CAL cal;
1905 [case(VT_UI4|VT_VECTOR)] CAUL caul;
1906 [case(VT_R4|VT_VECTOR)] CAFLT caflt;
1907 [case(VT_ERROR|VT_VECTOR)] CASCODE cascode;
1908 [case(VT_I8|VT_VECTOR)] CAH cah;
1909 [case(VT_UI8|VT_VECTOR)] CAUH cauh;
1910 [case(VT_R8|VT_VECTOR)] CADBL cadbl;
1911 [case(VT_CY|VT_VECTOR)] CACY cacy;
1912 [case(VT_DATE|VT_VECTOR)] CADATE cadate;
1913 [case(VT_FILETIME|VT_VECTOR)] CAFILETIME cafiletime;
1914 [case(VT_CLSID|VT_VECTOR)] CACLSID cauuid;
1915 [case(VT_CF|VT_VECTOR)] CACLIPDATA caclipdata;
1916 [case(VT_BSTR|VT_VECTOR)] CABSTR cabstr;
1917 [case(VT_BSTR_BLOB|VT_VECTOR)] CABSTRBLOB cabstrblob;
1918 [case(VT_LPSTR|VT_VECTOR)] CALPSTR calpstr;
1919 [case(VT_LPWSTR|VT_VECTOR)] CALPWSTR calpwstr;
1920 [case(VT_VARIANT|VT_VECTOR)] CAPROPVARIANT capropvar;
1924 typedef struct tagPROPVARIANT *LPPROPVARIANT;
1926 /* FIXME: bunches of property IDs */
1928 const ULONG PRSPEC_INVALID = 0xffffffff;
1929 const ULONG PRSPEC_LPWSTR = 0;
1930 const ULONG PRSPEC_PROPID = 1;
1932 typedef struct tagPROPSPEC {
1933 ULONG ulKind;
1934 [switch_is(ulKind)] union {
1935 [case(PRSPEC_PROPID)] PROPID propid;
1936 [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr;
1937 [default] ;
1939 } PROPSPEC;
1941 typedef struct tagSTATPROPSTG {
1942 LPOLESTR lpwstrName;
1943 PROPID propid;
1944 VARTYPE vt;
1945 } STATPROPSTG;
1947 /* FIXME: macros */
1949 typedef struct tagSTATPROPSETSTG {
1950 FMTID fmtid;
1951 CLSID clsid;
1952 DWORD grfFlags;
1953 FILETIME mtime;
1954 FILETIME ctime;
1955 FILETIME atime;
1956 DWORD dwOSVersion;
1957 } STATPROPSETSTG;
1959 HRESULT ReadMultiple(
1960 [in] ULONG cpspec,
1961 [in, size_is(cpspec)] const PROPSPEC rgpspec[],
1962 [out, size_is(cpspec)] PROPVARIANT rgpropvar[]);
1964 HRESULT WriteMultiple(
1965 [in] ULONG cpspec,
1966 [in, size_is(cpspec)] const PROPSPEC rgpspec[],
1967 [in, size_is(cpspec)] const PROPVARIANT rgpropvar[],
1968 [in] PROPID propidNameFirst);
1970 HRESULT DeleteMultiple(
1971 [in] ULONG cpspec,
1972 [in, size_is(cpspec)] const PROPSPEC rgpspec[]);
1974 HRESULT ReadPropertyNames(
1975 [in] ULONG cpropid,
1976 [in, size_is(cpropid)] const PROPID rgpropid[],
1977 [out, size_is(cpropid)] LPOLESTR rglpwstrName[]);
1979 HRESULT WritePropertyNames(
1980 [in] ULONG cpropid,
1981 [in, size_is(cpropid)] const PROPID rgpropid[],
1982 [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]);
1984 HRESULT DeletePropertyNames(
1985 [in] ULONG cpropid,
1986 [in, size_is(cpropid)] const PROPID rgpropid[]);
1988 HRESULT Commit(
1989 [in] DWORD grfCommitFlags);
1991 HRESULT Revert();
1993 HRESULT Enum(
1994 [out] IEnumSTATPROPSTG **ppenum);
1996 HRESULT SetTimes(
1997 [in] const FILETIME *pctime,
1998 [in] const FILETIME *patime,
1999 [in] const FILETIME *pmtime);
2001 HRESULT SetClass(
2002 [in] REFCLSID clsid);
2004 HRESULT Stat(
2005 [out] STATPROPSETSTG *statpsstg);
2009 object,
2010 uuid(0000013A-0000-0000-C000-000000000046),
2011 pointer_default(unique)
2013 interface IPropertySetStorage : IUnknown
2015 typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE;
2017 HRESULT Create(
2018 [in] REFFMTID rfmtid,
2019 [in, unique] const CLSID *pclsid,
2020 [in] DWORD grfFlags,
2021 [in] DWORD grfMode,
2022 [out] IPropertyStorage **ppprstg);
2024 HRESULT Open(
2025 [in] REFFMTID rfmtid,
2026 [in] DWORD grfMode,
2027 [out] IPropertyStorage **ppprstg);
2029 HRESULT Delete(
2030 [in] REFFMTID rfmtid);
2032 HRESULT Enum(
2033 [out] IEnumSTATPROPSETSTG **ppenum);
2037 object,
2038 uuid(00000139-0000-0000-C000-000000000046),
2039 pointer_default(unique)
2041 interface IEnumSTATPROPSTG : IUnknown
2043 typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
2045 [local]
2046 HRESULT Next(
2047 [in] ULONG celt,
2048 [out, size_is(celt), length_is(*pceltFetched)]
2049 STATPROPSTG *rgelt,
2050 [out] ULONG *pceltFetched);
2052 [call_as(Next)]
2053 HRESULT RemoteNext(
2054 [in] ULONG celt,
2055 [out, size_is(celt), length_is(*pceltFetched)]
2056 STATPROPSTG *rgelt,
2057 [out] ULONG *pceltFetched);
2059 HRESULT Skip(
2060 [in] ULONG celt);
2062 HRESULT Reset();
2064 HRESULT Clone(
2065 [out] IEnumSTATPROPSTG **ppenum);
2069 object,
2070 uuid(0000013B-0000-0000-C000-000000000046),
2071 pointer_default(unique)
2073 interface IEnumSTATPROPSETSTG : IUnknown
2075 typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
2077 [local]
2078 HRESULT Next(
2079 [in] ULONG celt,
2080 [out, size_is(celt), length_is(*pceltFetched)]
2081 STATPROPSETSTG *rgelt,
2082 [out] ULONG *pceltFetched);
2084 [call_as(Next)]
2085 HRESULT RemoteNext(
2086 [in] ULONG celt,
2087 [out, size_is(celt), length_is(*pceltFetched)]
2088 STATPROPSETSTG *rgelt,
2089 [out] ULONG *pceltFetched);
2091 HRESULT Skip(
2092 [in] ULONG celt);
2094 HRESULT Reset();
2096 HRESULT Clone(
2097 [out] IEnumSTATPROPSETSTG **ppenum);
2100 /******************** Connection Points ********************/
2101 /* FIXME */
2103 /******************** DCOM ********************/
2106 local,
2107 object,
2108 uuid(0000013D-0000-0000-C000-000000000046)
2110 interface IClientSecurity : IUnknown
2112 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
2113 DWORD dwAuthnSvc;
2114 DWORD dwAuthzSvc;
2115 OLECHAR *pPrincipalName;
2116 HRESULT hr;
2117 } SOLE_AUTHENTICATION_SERVICE;
2119 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
2121 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
2122 EOAC_NONE = 0x0,
2123 EOAC_MUTUAL_AUTH = 0x1,
2124 EOAC_CLOAKING = 0x10,
2125 EOAC_SECURE_REFS = 0x2,
2126 EOAC_ACCESS_CONTROL = 0x4,
2127 EOAC_APPID = 0x8
2128 } EOLE_AUTHENTICATION_CAPABILITIES;
2130 HRESULT QueryBlanket(
2131 [in] IUnknown *pProxy,
2132 [out] DWORD *pAuthnSvc,
2133 [out] DWORD *pAuthzSvc,
2134 [out] OLECHAR **pServerPrincName,
2135 [out] DWORD *pAuthnLevel,
2136 [out] DWORD *pImpLevel,
2137 [out] void **pAuthInfo,
2138 [out] DWORD *pCapabilites);
2140 HRESULT SetBlanket(
2141 [in] IUnknown *pProxy,
2142 [in] DWORD AuthnSvc,
2143 [in] DWORD AuthzSvc,
2144 [in] OLECHAR *pServerPrincName,
2145 [in] DWORD AuthnLevel,
2146 [in] DWORD ImpLevel,
2147 [in] void *pAuthInfo,
2148 [in] DWORD Capabilities);
2150 HRESULT CopyProxy(
2151 [in] IUnknown *pProxy,
2152 [out] IUnknown **ppCopy);
2156 local,
2157 object,
2158 uuid(0000013E-0000-0000-C000-000000000046)
2160 interface IServerSecurity : IUnknown
2162 HRESULT QueryBlanket(
2163 [out] DWORD *pAuthnSvc,
2164 [out] DWORD *pAuthzSvc,
2165 [out] OLECHAR **pServerPrincName,
2166 [out] DWORD *pAuthnLevel,
2167 [out] DWORD *pImpLevel,
2168 [out] void **pPrivs,
2169 [out] DWORD *pCapabilities);
2171 HRESULT ImpersonateClient();
2173 HRESULT RevertToSelf();
2175 BOOL IsImpersonating();
2179 local,
2180 object,
2181 uuid(00000024-0000-0000-C000-000000000046)
2183 interface IAsyncSetup : IUnknown
2185 HRESULT GetAsyncManager(
2186 [in] REFIID riid,
2187 [in] IUnknown *pOuter,
2188 [in] DWORD dwFlags,
2189 [out] IUnknown **ppInner,
2190 [out] IAsyncManager **ppAsyncMgr);
2194 local,
2195 object,
2196 uuid(0000002A-0000-0000-C000-000000000046)
2198 interface IAsyncManager : IUnknown
2200 typedef enum tagDCOM_CALL_STATE {
2201 DCOM_NONE = 0,
2202 DCOM_CALL_COMPLETE = 1,
2203 DCOM_CALL_CANCELED = 2
2204 } DCOM_CALL_STATE;
2206 HRESULT CompleteCall(
2207 [in] HRESULT Result);
2208 HRESULT GetCallContext(
2209 [in] REFIID riid,
2210 [out] void **pInterface);
2211 HRESULT GetState(
2212 [out] ULONG *pulStateFlags);