Avoid some non-standard str functions.
[wine.git] / include / objidl.idl
blob02de2ef12ef0f8c6be841190f3c41bdb58780fc5
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 local,
220 object,
221 uuid(00000021-0000-0000-C000-000000000046)
223 interface IInternalUnknown : IUnknown
225 HRESULT QueryInternalInterface(
226 [in] REFIID riid,
227 [out] void **ppv);
231 object,
232 uuid(00000100-0000-0000-C000-000000000046),
233 pointer_default(unique)
235 interface IEnumUnknown : IUnknown
237 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
239 [local]
240 HRESULT Next(
241 [in] ULONG celt,
242 [out] IUnknown **rgelt,
243 [out] ULONG *pceltFetched);
245 [call_as(Next)]
246 HRESULT RemoteNext(
247 [in] ULONG celt,
248 [out, size_is(celt), length_is(*pceltFetched)]
249 IUnknown **rgelt,
250 [out] ULONG *pceltFetched);
252 HRESULT Skip(
253 [in] ULONG celt);
255 HRESULT Reset();
257 HRESULT Clone(
258 [out] IEnumUnknown **ppenum);
262 object,
263 uuid(00000022-0000-0000-C000-000000000046),
264 version(1.0),
265 pointer_default(unique)
267 interface ISurrogate : IUnknown
269 typedef [unique] ISurrogate *LPSURROGATE;
271 HRESULT LoadDllServer(
272 [in] REFCLSID Clsid);
273 HRESULT FreeSurrogate();
277 local,
278 object,
279 uuid(00000146-0000-0000-C000-000000000046)
281 interface IGlobalInterfaceTable : IUnknown
283 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
285 HRESULT RegisterInterfaceInGlobal(
286 [in] IUnknown *pUnk,
287 [in] REFIID riid,
288 [out] DWORD *pdwCookie);
290 HRESULT RevokeInterfaceFromGlobal(
291 [in] DWORD dwCookie);
293 HRESULT GetInterfaceFromGlobal(
294 [in] DWORD dwCookie,
295 [in] REFIID riid,
296 [out, iid_is(riid)] void **ppv);
299 /******************** Monikers ********************/
302 object,
303 uuid(0000000e-0000-0000-C000-000000000046),
304 pointer_default(unique)
306 interface IBindCtx : IUnknown
308 typedef [unique] IBindCtx *LPBINDCTX;
309 typedef [unique] IBindCtx *LPBC;
311 typedef struct tagBIND_OPTS {
312 DWORD cbStruct;
313 DWORD grfFlags;
314 DWORD grfMode;
315 DWORD dwTickCountDeadline;
316 } BIND_OPTS, *LPBIND_OPTS;
318 /* FIXME: C++ crap */
319 typedef struct tagBIND_OPTS2 {
320 DWORD cbStruct;
321 DWORD grfFlags;
322 DWORD grfMode;
323 DWORD dwTickCountDeadline;
324 DWORD dwTrackFlags;
325 DWORD dwClassContext;
326 LCID locale;
327 COSERVERINFO *pServerInfo;
328 } BIND_OPTS2, *LPBIND_OPTS2;
330 typedef enum tagBIND_FLAGS {
331 BIND_MAYBOTHERUSER = 1,
332 BIND_JUSTTESTEXISTENCE = 2
333 } BIND_FLAGS;
335 HRESULT RegisterObjectBound(
336 [in, unique] IUnknown *punk);
338 HRESULT RevokeObjectBound(
339 [in, unique] IUnknown *punk);
341 HRESULT ReleaseBoundObjects();
343 [local]
344 HRESULT SetBindOptions(
345 [in] BIND_OPTS *pbindopts);
347 [call_as(SetBindOptions)]
348 HRESULT RemoteSetBindOptions(
349 [in] BIND_OPTS2 *pbindopts);
351 [local]
352 HRESULT GetBindOptions(
353 [in, out] BIND_OPTS *pbindopts);
355 [call_as(GetBindOptions)]
356 HRESULT RemoteGetBindOptions(
357 [in, out] BIND_OPTS2 *pbindopts);
359 HRESULT GetRunningObjectTable(
360 [out] IRunningObjectTable **pprot);
362 HRESULT RegisterObjectParam(
363 [in] LPOLESTR pszKey,
364 [in, unique] IUnknown *punk);
366 HRESULT GetObjectParam(
367 [in] LPOLESTR pszKey,
368 [out] IUnknown **ppunk);
370 HRESULT EnumObjectParam(
371 [out] IEnumString **ppenum);
373 HRESULT RevokeObjectParam(
374 [in] LPOLESTR pszKey);
378 object,
379 uuid(00000102-0000-0000-C000-000000000046),
380 pointer_default(unique)
382 interface IEnumMoniker : IUnknown
384 typedef [unique] IEnumMoniker *LPENUMMONIKER;
386 [local]
387 HRESULT Next(
388 [in] ULONG celt,
389 [out, size_is(celt), length_is(*pceltFetched)]
390 IMoniker **rgelt,
391 [out] ULONG *pceltFetched);
393 [call_as(Next)]
394 HRESULT RemoteNext(
395 [in] ULONG celt,
396 [out, size_is(celt), length_is(*pceltFetched)]
397 IMoniker **rgelt,
398 [out] ULONG *pceltFetched);
400 HRESULT Skip(
401 [in] ULONG celt);
403 HRESULT Reset();
405 HRESULT Clone(
406 [out] IEnumMoniker **ppenum);
410 object,
411 uuid(00000126-0000-0000-C000-000000000046)
413 interface IRunnableObject : IUnknown
415 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
417 HRESULT GetRunningClass(
418 [out] LPCLSID lpClsid);
420 HRESULT Run(
421 [in] LPBINDCTX pbc);
423 [local]
424 BOOL IsRunning();
426 [call_as(IsRunning)]
427 HRESULT RemoteIsRunning();
429 HRESULT LockRunning(
430 [in] BOOL fLock,
431 [in] BOOL fLastUnlockCloses);
433 HRESULT SetContainedObject(
434 [in] BOOL fContained);
437 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
438 * which resolves to a compilation failure if __WINESRC__ is defined,
439 * but GetObject is used as a valid method name below, so we have
440 * to undefine it if __WINESRC__ is defined */
441 cpp_quote("#ifdef __WINESRC__")
442 cpp_quote("#undef GetObject")
443 cpp_quote("#endif")
446 object,
447 uuid(00000010-0000-0000-C000-000000000046)
449 interface IRunningObjectTable : IUnknown
451 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
453 HRESULT Register(
454 [in] DWORD grfFlags,
455 [in, unique] IUnknown *punkObject,
456 [in, unique] IMoniker *pmkObjectName,
457 [out] DWORD *pdwRegister);
459 HRESULT Revoke(
460 [in] DWORD dwRegister);
462 HRESULT IsRunning(
463 [in, unique] IMoniker *pmkObjectName);
465 HRESULT GetObject(
466 [in, unique] IMoniker *pmkObjectName,
467 [out] IUnknown **ppunkObject);
469 HRESULT NoteChangeTime(
470 [in] DWORD dwRegister,
471 [in] FILETIME *pfiletime);
473 HRESULT GetTimeOfLastChange(
474 [in, unique] IMoniker *pmkObjectName,
475 [out] FILETIME *pfiletime);
477 HRESULT EnumRunning(
478 [out] IEnumMoniker **ppenumMoniker);
482 object,
483 uuid(0000010c-0000-0000-C000-000000000046)
485 interface IPersist : IUnknown
487 typedef [unique] IPersist *LPPERSIST;
489 HRESULT GetClassID(
490 [out] CLSID *pClassID);
494 object,
495 uuid(00000109-0000-0000-C000-000000000046),
496 pointer_default(unique)
498 interface IPersistStream : IPersist
500 typedef [unique] IPersistStream *LPPERSISTSTREAM;
502 HRESULT IsDirty();
504 HRESULT Load(
505 [in, unique] IStream *pStm);
507 HRESULT Save(
508 [in, unique] IStream *pStm,
509 [in] BOOL fClearDirty);
511 HRESULT GetSizeMax(
512 [out] ULARGE_INTEGER *pcbSize);
516 object,
517 uuid(0000000f-0000-0000-C000-000000000046),
518 pointer_default(unique)
520 interface IMoniker : IPersistStream
522 typedef [unique] IMoniker *LPMONIKER;
524 typedef enum tagMKSYS {
525 MKSYS_NONE = 0,
526 MKSYS_GENERICCOMPOSITE = 1,
527 MKSYS_FILEMONIKER = 2,
528 MKSYS_ANTIMONIKER = 3,
529 MKSYS_ITEMMONIKER = 4,
530 MKSYS_POINTERMONIKER = 5,
531 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
532 MKSYS_CLASSMONIKER = 7
533 } MKSYS;
535 typedef [v1_enum] enum tagMKREDUCE {
536 MKRREDUCE_ONE = 3 << 16,
537 MKRREDUCE_TOUSER = 2 << 16,
538 MKRREDUCE_THROUGHUSER = 1 << 16,
539 MKRREDUCE_ALL = 0
540 } MKRREDUCE;
542 [local]
543 HRESULT BindToObject(
544 [in, unique] IBindCtx *pbc,
545 [in, unique] IMoniker *pmkToLeft,
546 [in] REFIID riidResult,
547 [out, iid_is(riidResult)] void **ppvResult);
549 [call_as(BindToObject)]
550 HRESULT RemoteBindToObject(
551 [in, unique] IBindCtx *pbc,
552 [in, unique] IMoniker *pmkToLeft,
553 [in] REFIID riidResult,
554 [out, iid_is(riidResult)] IUnknown **ppvResult);
556 [local]
557 HRESULT BindToStorage(
558 [in, unique] IBindCtx *pbc,
559 [in, unique] IMoniker *pmkToLeft,
560 [in] REFIID riid,
561 [out, iid_is(riid)] void **ppvObj);
563 [call_as(BindToStorage)]
564 HRESULT RemoteBindToStorage(
565 [in, unique] IBindCtx *pbc,
566 [in, unique] IMoniker *pmkToLeft,
567 [in] REFIID riid,
568 [out, iid_is(riid)] IUnknown **ppvObj);
570 HRESULT Reduce(
571 [in, unique] IBindCtx *pbc,
572 [in] DWORD dwReduceHowFar,
573 [in, out, unique] IMoniker **ppmkToLeft,
574 [out] IMoniker **ppmkReduced);
576 HRESULT ComposeWith(
577 [in, unique] IMoniker *pmkRight,
578 [in] BOOL fOnlyIfNotGeneric,
579 [out] IMoniker **ppmkComposite);
581 HRESULT Enum(
582 [in] BOOL fForward,
583 [out] IEnumMoniker **ppenumMoniker);
585 HRESULT IsEqual(
586 [in, unique] IMoniker *pmkOtherMoniker);
588 HRESULT Hash(
589 [out] DWORD *pdwHash);
591 HRESULT IsRunning(
592 [in, unique] IBindCtx *pbc,
593 [in, unique] IMoniker *pmkToLeft,
594 [in, unique] IMoniker *pmkNewlyRunning);
596 HRESULT GetTimeOfLastChange(
597 [in, unique] IBindCtx *pbc,
598 [in, unique] IMoniker *pmkToLeft,
599 [out] FILETIME *pFileTime);
601 HRESULT Inverse(
602 [out] IMoniker **ppmk);
604 HRESULT CommonPrefixWith(
605 [in, unique] IMoniker *pmkOther,
606 [out] IMoniker **ppmkPrefix);
608 HRESULT RelativePathTo(
609 [in, unique] IMoniker *pmkOther,
610 [out] IMoniker **ppmkRelPath);
612 HRESULT GetDisplayName(
613 [in, unique] IBindCtx *pbc,
614 [in, unique] IMoniker *pmkToLeft,
615 [out] LPOLESTR *ppszDisplayName);
617 HRESULT ParseDisplayName(
618 [in, unique] IBindCtx *pbc,
619 [in, unique] IMoniker *pmkToLeft,
620 [in] LPOLESTR pszDisplayName,
621 [out] ULONG *pchEaten,
622 [out] IMoniker **ppmkOut);
624 HRESULT IsSystemMoniker(
625 [out] DWORD *pdwMksys);
629 object,
630 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
631 pointer_default(unique)
633 interface IROTData : IUnknown
635 HRESULT GetComparisonData(
636 [out, size_is(cbMax)] byte *pbData,
637 [in] ULONG cbMax,
638 [out] ULONG *pcbData);
642 object,
643 uuid(00000101-0000-0000-C000-000000000046),
644 pointer_default(unique)
646 interface IEnumString : IUnknown
648 typedef [unique] IEnumString *LPENUMSTRING;
650 [local]
651 HRESULT Next(
652 [in] ULONG celt,
653 [out, size_is(celt), length_is(*pceltFetched)]
654 LPOLESTR *rgelt,
655 [out] ULONG *pceltFetched);
657 [call_as(Next)]
658 HRESULT RemoteNext(
659 [in] ULONG celt,
660 [out, size_is(celt), length_is(*pceltFetched)]
661 LPOLESTR *rgelt,
662 [out] ULONG *pceltFetched);
664 HRESULT Skip(
665 [in] ULONG celt);
667 HRESULT Reset();
669 HRESULT Clone(
670 [out] IEnumString **ppenum);
674 object,
675 uuid(00000140-0000-0000-C000-000000000046)
677 interface IClassActivator : IUnknown
679 HRESULT GetClassObject(
680 [in] REFCLSID rclsid,
681 [in] DWORD dwClassContext,
682 [in] LCID locale,
683 [in] REFIID riid,
684 [out, iid_is(riid)] void **ppv);
687 /******************** Storage ********************/
690 object,
691 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
692 pointer_default(unique)
694 interface ISequentialStream : IUnknown
696 [local]
697 HRESULT Read(
698 [out, size_is(cb), length_is(*pcbRead)]
699 void *pv,
700 [in] ULONG cb,
701 [out] ULONG *pcbRead);
703 [call_as(Read)]
704 HRESULT RemoteRead(
705 [out, size_is(cb), length_is(*pcbRead)]
706 byte *pv,
707 [in] ULONG cb,
708 [out] ULONG *pcbRead);
710 [local]
711 HRESULT Write(
712 [in, size_is(cb)] const void *pv,
713 [in] ULONG cb,
714 [out] ULONG *pcbWritten);
716 [call_as(Write)]
717 HRESULT RemoteWrite(
718 [in, size_is(cb)] const byte *pv,
719 [in] ULONG cb,
720 [out] ULONG *pcbWritten);
724 object,
725 uuid(0000000c-0000-0000-C000-000000000046),
726 pointer_default(unique)
728 interface IStream : ISequentialStream
730 typedef [unique] IStream *LPSTREAM;
732 typedef struct tagSTATSTG {
733 LPOLESTR pwcsName;
734 DWORD type;
735 ULARGE_INTEGER cbSize;
736 FILETIME mtime;
737 FILETIME ctime;
738 FILETIME atime;
739 DWORD grfMode;
740 DWORD grfLocksSupported;
741 CLSID clsid;
742 DWORD grfStateBits;
743 DWORD reserved;
744 } STATSTG;
746 typedef enum tagSTGTY {
747 STGTY_STORAGE = 1,
748 STGTY_STREAM = 2,
749 STGTY_LOCKBYTES = 3,
750 STGTY_PROPERTY = 4
751 } STGTY;
753 typedef enum tagSTREAM_SEEK {
754 STREAM_SEEK_SET = 0,
755 STREAM_SEEK_CUR = 1,
756 STREAM_SEEK_END = 2
757 } STREAM_SEEK;
759 /* these are defined in Linux's fcntl.h,
760 * undefine them to avoid conflicts */
761 cpp_quote("#undef LOCK_MAND")
762 cpp_quote("#undef LOCK_READ")
763 cpp_quote("#undef LOCK_WRITE")
764 cpp_quote("#undef LOCK_RW")
766 typedef enum tagLOCKTYPE {
767 LOCK_WRITE = 1,
768 LOCK_EXCLUSIVE = 2,
769 LOCK_ONLYONCE = 4
770 } LOCKTYPE;
772 [local]
773 HRESULT Seek(
774 [in] LARGE_INTEGER dlibMove,
775 [in] DWORD dwOrigin,
776 [out] ULARGE_INTEGER *plibNewPosition);
778 [call_as(Seek)]
779 HRESULT RemoteSeek(
780 [in] LARGE_INTEGER dlibMove,
781 [in] DWORD dwOrigin,
782 [out] ULARGE_INTEGER *plibNewPosition);
784 HRESULT SetSize(
785 [in] ULARGE_INTEGER libNewSize);
787 [local]
788 HRESULT CopyTo(
789 [in, unique] IStream *pstm,
790 [in] ULARGE_INTEGER cb,
791 [out] ULARGE_INTEGER *pcbRead,
792 [out] ULARGE_INTEGER *pcbWritten);
794 [call_as(CopyTo)]
795 HRESULT RemoteCopyTo(
796 [in, unique] IStream *pstm,
797 [in] ULARGE_INTEGER cb,
798 [out] ULARGE_INTEGER *pcbRead,
799 [out] ULARGE_INTEGER *pcbWritten);
801 HRESULT Commit(
802 [in] DWORD grfCommitFlags);
804 HRESULT Revert();
806 HRESULT LockRegion(
807 [in] ULARGE_INTEGER libOffset,
808 [in] ULARGE_INTEGER cb,
809 [in] DWORD dwLockType);
811 HRESULT UnlockRegion(
812 [in] ULARGE_INTEGER libOffset,
813 [in] ULARGE_INTEGER cb,
814 [in] DWORD dwLockType);
816 HRESULT Stat(
817 [out] STATSTG *pstatstg,
818 [in] DWORD grfStatFlag);
820 HRESULT Clone(
821 [out] IStream **ppstm);
825 object,
826 uuid(0000000d-0000-0000-C000-000000000046),
827 pointer_default(unique)
829 interface IEnumSTATSTG : IUnknown
831 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
833 [local]
834 HRESULT Next(
835 [in] ULONG celt,
836 [out, size_is(celt), length_is(*pceltFetched)]
837 STATSTG *rgelt,
838 [out] ULONG *pceltFetched);
840 [call_as(Next)]
841 HRESULT RemoteNext(
842 [in] ULONG celt,
843 [out, size_is(celt), length_is(*pceltFetched)]
844 STATSTG *rgelt,
845 [out] ULONG *pceltFetched);
847 HRESULT Skip(
848 [in] ULONG celt);
850 HRESULT Reset();
852 HRESULT Clone(
853 [out] IEnumSTATSTG **ppenum);
857 object,
858 uuid(0000000b-0000-0000-C000-000000000046),
859 pointer_default(unique)
861 interface IStorage : IUnknown
863 typedef [unique] IStorage *LPSTORAGE;
865 typedef struct tagRemSNB {
866 unsigned long ulCntStr;
867 unsigned long ulCntChar;
868 [size_is(ulCntChar)] OLECHAR rgString[];
869 } RemSNB;
871 typedef [unique] RemSNB *wireSNB;
872 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
874 HRESULT CreateStream(
875 [in] LPCOLESTR pwcsName,
876 [in] DWORD grfMode,
877 [in] DWORD reserved1,
878 [in] DWORD reserved2,
879 [out] IStream **ppstm);
881 [local]
882 HRESULT OpenStream(
883 [in] LPCOLESTR pwcsName,
884 [in, unique] void *reserved1,
885 [in] DWORD grfMode,
886 [in] DWORD reserved2,
887 [out] IStream **ppstm);
889 [call_as(OpenStream)]
890 HRESULT RemoteOpenStream(
891 [in] LPCOLESTR pwcsName,
892 [in] unsigned long cbReserved1,
893 [in, unique, size_is(cbReserved1)] byte *reserved1,
894 [in] DWORD grfMode,
895 [in] DWORD reserved2,
896 [out] IStream **ppstm);
898 HRESULT CreateStorage(
899 [in] LPCOLESTR pwcsName,
900 [in] DWORD grfMode,
901 [in] DWORD dwStgFmt,
902 [in] DWORD reserved2,
903 [out] IStorage **ppstg);
905 HRESULT OpenStorage(
906 [in, unique] LPCOLESTR pwcsName,
907 [in, unique] IStorage *pstgPriority,
908 [in] DWORD grfMode,
909 [in, unique] SNB snbExclude,
910 [in] DWORD reserved,
911 [out] IStorage **ppstg);
913 HRESULT CopyTo(
914 [in] DWORD ciidExclude,
915 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
916 [in, unique] SNB snbExclude,
917 [in, unique] IStorage *pstgDest);
919 HRESULT MoveElementTo(
920 [in] LPCOLESTR pwcsName,
921 [in, unique] IStorage *pstgDest,
922 [in] LPCOLESTR pwcsNewName,
923 [in] DWORD grfFlags);
925 HRESULT Commit(
926 [in] DWORD grfCommitFlags);
928 HRESULT Revert();
930 [local]
931 HRESULT EnumElements(
932 [in] DWORD reserved1,
933 [in, unique, size_is(1)] void *reserved2,
934 [in] DWORD reserved3,
935 [out] IEnumSTATSTG **ppenum);
937 [call_as(EnumElements)]
938 HRESULT RemoteEnumElements(
939 [in] DWORD reserved1,
940 [in] unsigned long cbReserved2,
941 [in, unique, size_is(cbReserved2)] byte *reserved2,
942 [in] DWORD reserved3,
943 [out] IEnumSTATSTG **ppenum);
945 HRESULT DestroyElement(
946 [in] LPCOLESTR pwcsName);
948 HRESULT RenameElement(
949 [in] LPCOLESTR pwcsOldName,
950 [in] LPCOLESTR pwcsNewName);
952 HRESULT SetElementTimes(
953 [in, unique] LPCOLESTR pwcsName,
954 [in, unique] const FILETIME *pctime,
955 [in, unique] const FILETIME *patime,
956 [in, unique] const FILETIME *pmtime);
958 HRESULT SetClass(
959 [in] REFCLSID clsid);
961 HRESULT SetStateBits(
962 [in] DWORD grfStateBits,
963 [in] DWORD grfMask);
965 HRESULT Stat(
966 [out] STATSTG *pstatstg,
967 [in] DWORD grfStatFlag);
971 object,
972 uuid(0000010b-0000-0000-C000-000000000046),
973 pointer_default(unique)
975 interface IPersistFile : IPersist
977 typedef [unique] IPersistFile *LPPERSISTFILE;
979 HRESULT IsDirty();
981 HRESULT Load(
982 [in] LPCOLESTR pszFileName,
983 [in] DWORD dwMode);
985 HRESULT Save(
986 [in, unique] LPCOLESTR pszFileName,
987 [in] BOOL fRemember);
989 HRESULT SaveCompleted(
990 [in, unique] LPCOLESTR pszFileName);
992 HRESULT GetCurFile(
993 [out] LPOLESTR *ppszFileName);
997 object,
998 uuid(0000010a-0000-0000-C000-000000000046),
999 pointer_default(unique)
1001 interface IPersistStorage : IPersist
1003 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1005 HRESULT IsDirty();
1007 HRESULT InitNew(
1008 [in, unique] IStorage *pStg);
1010 HRESULT Load(
1011 [in, unique] IStorage *pStg);
1013 HRESULT Save(
1014 [in, unique] IStorage *pStgSave,
1015 [in] BOOL fSameAsLoad);
1017 HRESULT SaveCompleted(
1018 [in, unique] IStorage *pStgNew);
1020 HRESULT HandsOffStorage();
1024 object,
1025 uuid(00000012-0000-0000-C000-000000000046),
1026 pointer_default(unique)
1028 interface IRootStorage : IUnknown
1030 typedef [unique] IRootStorage *LPROOTSTORAGE;
1032 HRESULT SwitchToFile(
1033 [in] LPOLESTR pszFile);
1037 object,
1038 uuid(0000000a-0000-0000-C000-000000000046),
1039 pointer_default(unique)
1041 interface ILockBytes : IUnknown
1043 typedef [unique] ILockBytes *LPLOCKBYTES;
1045 [local]
1046 HRESULT ReadAt(
1047 [in] ULARGE_INTEGER ulOffset,
1048 [out, size_is(cb), length_is(*pcbRead)]
1049 void *pv,
1050 [in] ULONG cb,
1051 [out] ULONG *pcbRead);
1053 [call_as(ReadAt)]
1054 HRESULT RemoteReadAt(
1055 [in] ULARGE_INTEGER ulOffset,
1056 [out, size_is(cb), length_is(*pcbRead)]
1057 byte *pv,
1058 [in] ULONG cb,
1059 [out] ULONG *pcbRead);
1061 [local]
1062 HRESULT WriteAt(
1063 [in] ULARGE_INTEGER ulOffset,
1064 [in, size_is(cb)] const void *pv,
1065 [in] ULONG cb,
1066 [out] ULONG *pcbWritten);
1068 [call_as(WriteAt)]
1069 HRESULT RemoteWriteAt(
1070 [in] ULARGE_INTEGER ulOffset,
1071 [in, size_is(cb)] const byte *pv,
1072 [in] ULONG cb,
1073 [out] ULONG *pcbWritten);
1075 HRESULT Flush();
1077 HRESULT SetSize(
1078 [in] ULARGE_INTEGER cb);
1080 HRESULT LockRegion(
1081 [in] ULARGE_INTEGER libOffset,
1082 [in] ULARGE_INTEGER cb,
1083 [in] DWORD dwLockType);
1085 HRESULT UnlockRegion(
1086 [in] ULARGE_INTEGER libOffset,
1087 [in] ULARGE_INTEGER cb,
1088 [in] DWORD dwLockType);
1090 HRESULT Stat(
1091 [out] STATSTG *pstatstg,
1092 [in] DWORD grfStatFlag);
1096 object,
1097 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1098 pointer_default(unique)
1100 interface IFillLockBytes : IUnknown
1102 [local]
1103 HRESULT FillAppend(
1104 [in, size_is(cb)] const void *pv,
1105 [in] ULONG cb,
1106 [out] ULONG *pcbWritten);
1108 [call_as(FillAppend)]
1109 HRESULT RemoteFillAppend(
1110 [in, size_is(cb)] const byte *pv,
1111 [in] ULONG cb,
1112 [out] ULONG *pcbWritten);
1114 [local]
1115 HRESULT FillAt(
1116 [in] ULARGE_INTEGER ulOffset,
1117 [in, size_is(cb)] const void *pv,
1118 [in] ULONG cb,
1119 [out] ULONG *pcbWritten);
1121 [call_as(FillAt)]
1122 HRESULT RemoteFillAt(
1123 [in] ULARGE_INTEGER ulOffset,
1124 [in, size_is(cb)] const byte *pv,
1125 [in] ULONG cb,
1126 [out] ULONG *pcbWritten);
1128 HRESULT SetFillSize(
1129 [in] ULARGE_INTEGER ulSize);
1131 HRESULT Terminate(
1132 [in] BOOL bCanceled);
1136 object,
1137 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1138 pointer_default(unique)
1140 interface IProgressNotify : IUnknown
1142 HRESULT OnProgress(
1143 [in] DWORD dwProgressCurrent,
1144 [in] DWORD dwProgressMaximum,
1145 [in] BOOL fAccurate,
1146 [in] BOOL fOwner);
1150 local,
1151 object,
1152 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1153 pointer_default(unique)
1155 interface ILayoutStorage : IUnknown
1157 typedef struct tagStorageLayout {
1158 DWORD LayoutType;
1159 OLECHAR *pwcsElementName;
1160 LARGE_INTEGER cOffset;
1161 LARGE_INTEGER cBytes;
1162 } StorageLayout;
1164 HRESULT LayoutScript(
1165 [in] StorageLayout *pStorageLayout,
1166 [in] DWORD nEntries,
1167 [in] DWORD glfInterleavedFlag);
1169 HRESULT BeginMonitor();
1171 HRESULT EndMonitor();
1173 HRESULT ReLayoutDocfile(
1174 [in] OLECHAR *pwcsNewDfName);
1176 HRESULT ReLayoutDocfileOnILockBytes(
1177 [in] ILockBytes *pILockBytes);
1180 /******************** Data Object ********************/
1183 object,
1184 uuid(00000103-0000-0000-C000-000000000046),
1185 pointer_default(unique)
1187 interface IEnumFORMATETC : IUnknown
1189 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1191 typedef struct tagDVTARGETDEVICE {
1192 DWORD tdSize;
1193 WORD tdDriverNameOffset;
1194 WORD tdDeviceNameOffset;
1195 WORD tdPortNameOffset;
1196 WORD tdExtDevmodeOffset;
1197 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1198 BYTE tdData[];
1199 } DVTARGETDEVICE;
1201 typedef CLIPFORMAT *LPCLIPFORMAT;
1203 typedef struct tagFORMATETC {
1204 CLIPFORMAT cfFormat;
1205 [unique] DVTARGETDEVICE *ptd;
1206 DWORD dwAspect;
1207 LONG lindex;
1208 DWORD tymed;
1209 } FORMATETC, *LPFORMATETC;
1211 [local]
1212 HRESULT Next(
1213 [in] ULONG celt,
1214 [out, size_is(celt), length_is(*pceltFetched)]
1215 FORMATETC *rgelt,
1216 [out] ULONG *pceltFetched);
1218 [call_as(Next)]
1219 HRESULT RemoteNext(
1220 [in] ULONG celt,
1221 [out, size_is(celt), length_is(*pceltFetched)]
1222 FORMATETC *rgelt,
1223 [out] ULONG *pceltFetched);
1225 HRESULT Skip(
1226 [in] ULONG celt);
1228 HRESULT Reset();
1230 HRESULT Clone(
1231 [out] IEnumFORMATETC **ppenum);
1235 object,
1236 uuid(00000105-0000-0000-C000-000000000046),
1237 pointer_default(unique)
1239 interface IEnumSTATDATA : IUnknown
1241 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1243 typedef enum tagADVF {
1244 ADVF_NODATA = 1,
1245 ADVF_PRIMEFIRST = 2,
1246 ADVF_ONLYONCE = 4,
1247 ADVF_DATAONSTOP = 64,
1248 ADVFCACHE_NOHANDLER = 8,
1249 ADVFCACHE_FORCEBUILTIN = 16,
1250 ADVFCACHE_ONSAVE = 32
1251 } ADVF;
1253 typedef struct tagSTATDATA
1255 FORMATETC formatetc;
1256 DWORD advf;
1257 [unique] IAdviseSink *pAdvSink;
1258 DWORD dwConnection;
1259 } STATDATA, *LPSTATDATA;
1261 [local]
1262 HRESULT Next(
1263 [in] ULONG celt,
1264 [out, size_is(celt), length_is(*pceltFetched)]
1265 STATDATA *rgelt,
1266 [out] ULONG *pceltFetched);
1268 [call_as(Next)]
1269 HRESULT RemoteNext(
1270 [in] ULONG celt,
1271 [out, size_is(celt), length_is(*pceltFetched)]
1272 STATDATA *rgelt,
1273 [out] ULONG *pceltFetched);
1275 HRESULT Skip(
1276 [in] ULONG celt);
1278 HRESULT Reset();
1280 HRESULT Clone(
1281 [out] IEnumSTATDATA **ppenum);
1285 object,
1286 uuid(0000010f-0000-0000-C000-000000000046),
1287 pointer_default(unique)
1289 interface IAdviseSink : IUnknown
1291 typedef IAdviseSink *LPADVISESINK;
1293 typedef [v1_enum] enum tagTYMED {
1294 TYMED_HGLOBAL = 1,
1295 TYMED_FILE = 2,
1296 TYMED_ISTREAM = 4,
1297 TYMED_ISTORAGE = 8,
1298 TYMED_GDI = 16,
1299 TYMED_MFPICT = 32,
1300 TYMED_ENHMF = 64,
1301 TYMED_NULL = 0
1302 } TYMED;
1304 typedef struct tagRemSTGMEDIUM {
1305 DWORD tymed;
1306 DWORD dwHandleType;
1307 unsigned long pData;
1308 unsigned long pUnkForRelease;
1309 unsigned long cbData;
1310 [size_is(cbData)] byte data[];
1311 } RemSTGMEDIUM;
1313 /* FIXME: C/C++ nameless union version */
1314 typedef struct tagSTGMEDIUM {
1315 DWORD tymed;
1316 [switch_is(tymed)] union {
1317 [case(TYMED_GDI)] HBITMAP hBitmap;
1318 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1319 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1320 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1321 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1322 [case(TYMED_ISTREAM)] IStream *pstm;
1323 [case(TYMED_ISTORAGE)] IStorage *pstg;
1324 [default] ;
1326 [unique] IUnknown *pUnkForRelease;
1327 } uSTGMEDIUM;
1329 /* copied from wingdi.h */
1330 #define OBJ_PEN 1
1331 #define OBJ_BRUSH 2
1332 #define OBJ_DC 3
1333 #define OBJ_METADC 4
1334 #define OBJ_PAL 5
1335 #define OBJ_FONT 6
1336 #define OBJ_BITMAP 7
1337 #define OBJ_REGION 8
1338 #define OBJ_METAFILE 9
1339 #define OBJ_MEMDC 10
1340 #define OBJ_EXTPEN 11
1341 #define OBJ_ENHMETADC 12
1342 #define OBJ_ENHMETAFILE 13
1344 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1345 case OBJ_BITMAP: wireHBITMAP hBitmap;
1346 case OBJ_PAL: wireHPALETTE hPalette;
1347 default: wireHGLOBAL hGeneric;
1348 } GDI_OBJECT;
1350 typedef struct _userSTGMEDIUM {
1351 union switch(DWORD tymed) u {
1352 case TYMED_NULL: ;
1353 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1354 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1355 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1356 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1357 case TYMED_FILE: LPOLESTR lpszFileName;
1358 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1359 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1361 IUnknown *pUnkForRelease;
1362 } userSTGMEDIUM;
1364 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1365 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1367 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1368 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1370 typedef STGMEDIUM *LPSTGMEDIUM;
1372 typedef struct _userFLAG_STGMEDIUM {
1373 long ContextFlags;
1374 long fPassOwnership;
1375 userSTGMEDIUM Stgmed;
1376 } userFLAG_STGMEDIUM;
1378 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1380 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1381 long ContextFlags;
1382 long fPassOwnership;
1383 STGMEDIUM Stgmed;
1384 } FLAG_STGMEDIUM;
1386 [local]
1387 void OnDataChange(
1388 [in, unique] FORMATETC *pFormatetc,
1389 [in, unique] STGMEDIUM *pStgmed);
1391 [call_as(OnDataChange), async]
1392 HRESULT RemoteOnDataChange(
1393 [in] IAsyncManager **ppIAM,
1394 [in, unique] FORMATETC *pFormatetc,
1395 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1397 [local]
1398 void OnViewChange(
1399 [in] DWORD dwAspect,
1400 [in] LONG lindex);
1402 [call_as(OnViewChange), async]
1403 HRESULT RemoteOnViewChange(
1404 [in] IAsyncManager **ppIAM,
1405 [in] DWORD dwAspect,
1406 [in] LONG lindex);
1408 [local]
1409 void OnRename(
1410 [in] IMoniker *pmk);
1412 [call_as(OnRename), async]
1413 HRESULT RemoteOnRename(
1414 [in] IAsyncManager **ppIAM,
1415 [in] IMoniker *pmk);
1417 [local]
1418 void OnSave();
1420 [call_as(OnSave), async]
1421 HRESULT RemoteOnSave(
1422 [in] IAsyncManager **ppIAM);
1424 [local]
1425 void OnClose();
1427 [call_as(OnClose)]
1428 HRESULT RemoteOnClose();
1432 object,
1433 uuid(00000125-0000-0000-C000-000000000046),
1434 pointer_default(unique)
1436 interface IAdviseSink2 : IAdviseSink
1438 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1440 [local]
1441 void OnLinkSrcChange(
1442 [in, unique] IMoniker *pmk);
1444 [call_as(OnLinkSrcChange), async]
1445 HRESULT RemoteOnLinkSrcChange(
1446 [in] IAsyncManager **ppIAM,
1447 [in, unique] IMoniker *pmk);
1451 object,
1452 uuid(0000010e-0000-0000-C000-000000000046),
1453 pointer_default(unique)
1455 interface IDataObject : IUnknown
1457 typedef [unique] IDataObject *LPDATAOBJECT;
1459 typedef enum tagDATADIR {
1460 DATADIR_GET = 1,
1461 DATADIR_SET = 2
1462 } DATADIR;
1464 [local]
1465 HRESULT GetData(
1466 [in, unique] FORMATETC *pformatetcIn,
1467 [out] STGMEDIUM *pmedium);
1469 [call_as(GetData)]
1470 HRESULT RemoteGetData(
1471 [in, unique] FORMATETC *pformatetcIn,
1472 [out] STGMEDIUM *pRemoteMedium);
1474 [local]
1475 HRESULT GetDataHere(
1476 [in, unique] FORMATETC *pformatetc,
1477 [in, out] STGMEDIUM *pmedium);
1479 [call_as(GetDataHere)]
1480 HRESULT RemoteGetDataHere(
1481 [in, unique] FORMATETC *pformatetc,
1482 [in, out] STGMEDIUM *pRemoteMedium);
1484 HRESULT QueryGetData(
1485 [in, unique] FORMATETC *pformatetc);
1487 HRESULT GetCanonicalFormatEtc(
1488 [in, unique] FORMATETC *pformatectIn,
1489 [out] FORMATETC *pformatetcOut);
1491 [local]
1492 HRESULT SetData(
1493 [in, unique] FORMATETC *pformatetc,
1494 [in, unique] STGMEDIUM *pmedium,
1495 [in] BOOL fRelease);
1497 [call_as(SetData)]
1498 HRESULT RemoteSetData(
1499 [in, unique] FORMATETC *pformatetc,
1500 [in, unique] FLAG_STGMEDIUM *pmedium,
1501 [in] BOOL fRelease);
1503 HRESULT EnumFormatEtc(
1504 [in] DWORD dwDirection,
1505 [out] IEnumFORMATETC **ppenumFormatEtc);
1507 HRESULT DAdvise(
1508 [in] FORMATETC *pformatetc,
1509 [in] DWORD advf,
1510 [in, unique] IAdviseSink *pAdvSink,
1511 [out] DWORD *pdwConnection);
1513 HRESULT DUnadvise(
1514 [in] DWORD dwConnection);
1516 HRESULT EnumDAdvise(
1517 [out] IEnumSTATDATA **ppenumAdvise);
1521 local,
1522 object,
1523 uuid(00000110-0000-0000-C000-000000000046)
1525 interface IDataAdviseHolder : IUnknown
1527 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1529 HRESULT Advise(
1530 [in, unique] IDataObject *pDataObject,
1531 [in, unique] FORMATETC *pFetc,
1532 [in] DWORD advf,
1533 [in, unique] IAdviseSink *pAdvise,
1534 [out] DWORD *pdwConnection);
1536 HRESULT Unadvise(
1537 [in] DWORD dwConnection);
1539 HRESULT EnumAdvise(
1540 [out] IEnumSTATDATA **ppenumAdvise);
1542 HRESULT SendOnDataChange(
1543 [in, unique] IDataObject *pDataObject,
1544 [in] DWORD dwReserved,
1545 [in] DWORD advf);
1548 /******************** Remoting ********************/
1551 local,
1552 object,
1553 uuid(00000016-0000-0000-C000-000000000046)
1555 interface IMessageFilter : IUnknown
1557 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1559 typedef enum tagCALLTYPE {
1560 CALLTYPE_TOPLEVEL = 1,
1561 CALLTYPE_NESTED = 2,
1562 CALLTYPE_ASYNC = 3,
1563 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1564 CALLTYPE_ASYNC_CALLPENDING = 5
1565 } CALLTYPE;
1567 typedef enum tagSERVERCALL {
1568 SERVERCALL_ISHANDLED = 0,
1569 SERVERCALL_REJECTED = 1,
1570 SERVERCALL_RETRYLATER = 2
1571 } SERVERCALL;
1573 typedef enum tagPENDINGTYPE {
1574 PENDINGTYPE_TOPLEVEL = 1,
1575 PENDINGTYPE_NESTED = 2
1576 } PENDINGTYPE;
1578 typedef enum tagPENDINGMSG {
1579 PENDINGMSG_CANCELCALL = 0,
1580 PENDINGMSG_WAITNOPROCESS = 1,
1581 PENDINGMSG_WAITDEFPROCESS = 2
1582 } PENDINGMSG;
1584 typedef struct tagINTERFACEINFO {
1585 IUnknown *pUnk;
1586 IID iid;
1587 WORD wMethod;
1588 } INTERFACEINFO, *LPINTERFACEINFO;
1590 DWORD HandleInComingCall(
1591 [in] DWORD dwCallType,
1592 [in] HTASK htaskCaller,
1593 [in] DWORD dwTickCount,
1594 [in] LPINTERFACEINFO lpInterfaceInfo);
1596 DWORD RetryRejectedCall(
1597 [in] HTASK htaskCallee,
1598 [in] DWORD dwTickCount,
1599 [in] DWORD dwRejectType);
1601 DWORD MessagePending(
1602 [in] HTASK htaskCallee,
1603 [in] DWORD dwTickCount,
1604 [in] DWORD dwPendingType);
1608 local,
1609 object,
1610 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1612 interface IRpcChannelBuffer : IUnknown
1614 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1616 typedef unsigned long RPCOLEDATAREP;
1618 typedef struct tagRPCOLEMESSAGE {
1619 void *reserved1;
1620 RPCOLEDATAREP dataRepresentation;
1621 void *Buffer;
1622 ULONG cbBuffer;
1623 ULONG iMethod;
1624 void *reserved2[5];
1625 ULONG rpcFlags;
1626 } RPCOLEMESSAGE;
1628 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1630 HRESULT GetBuffer(
1631 [in] RPCOLEMESSAGE *pMessage,
1632 [in] REFIID riid);
1634 HRESULT SendReceive(
1635 [in,out] RPCOLEMESSAGE *pMessage,
1636 [out] ULONG *pStatus);
1638 HRESULT FreeBuffer(
1639 [in] RPCOLEMESSAGE *pMessage);
1641 HRESULT GetDestCtx(
1642 [out] DWORD *pdwDestContext,
1643 [out] void **ppvDestContext);
1645 HRESULT IsConnected();
1649 local,
1650 object,
1651 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1653 interface IRpcChannelBuffer2 : IRpcChannelBuffer
1655 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1657 HRESULT GetProtocolVersion(
1658 [in,out] DWORD *pdwVersion);
1662 local,
1663 object,
1664 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1666 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1668 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1670 HRESULT Send(
1671 [in,out] RPCOLEMESSAGE *pMsg,
1672 [out] ULONG *pulStatus);
1674 HRESULT Receive(
1675 [in,out] RPCOLEMESSAGE *pMsg,
1676 [in] ULONG ulSize,
1677 [out] ULONG *pulStatus);
1679 HRESULT Cancel(
1680 [in] RPCOLEMESSAGE *pMsg);
1682 HRESULT GetCallContext(
1683 [in] RPCOLEMESSAGE *pMsg,
1684 [in] REFIID riid,
1685 [out] void **pInterface);
1687 HRESULT GetDestCtxEx(
1688 [in] RPCOLEMESSAGE *pMsg,
1689 [out] DWORD *pdwDestContext,
1690 [out] void **ppvDestContext);
1692 HRESULT GetState(
1693 [in] RPCOLEMESSAGE *pMsg,
1694 [out] DWORD *pState);
1696 HRESULT RegisterAsync(
1697 [in] RPCOLEMESSAGE *pMsg,
1698 [in] IAsyncManager *pAsyncMgr);
1702 local,
1703 object,
1704 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1706 interface IRpcProxyBuffer : IUnknown
1708 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1710 HRESULT Connect(
1711 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1713 void Disconnect();
1717 local,
1718 object,
1719 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1721 interface IRpcStubBuffer : IUnknown
1723 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1725 HRESULT Connect(
1726 [in] IUnknown *pUnkServer);
1728 void Disconnect();
1730 HRESULT Invoke(
1731 [in] RPCOLEMESSAGE *_prpcmsg,
1732 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1734 IRpcStubBuffer *IsIIDSupported(
1735 [in] REFIID riid);
1737 ULONG CountRefs();
1739 HRESULT DebugServerQueryInterface(
1740 void **ppv);
1742 void DebugServerRelease(
1743 void *pv);
1747 local,
1748 object,
1749 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1751 interface IPSFactoryBuffer : IUnknown
1753 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1755 HRESULT CreateProxy(
1756 [in] IUnknown *pUnkOuter,
1757 [in] REFIID riid,
1758 [out] IRpcProxyBuffer **ppProxy,
1759 [out] void **ppv);
1761 HRESULT CreateStub(
1762 [in] REFIID riid,
1763 [in, unique] IUnknown *pUnkServer,
1764 [out] IRpcStubBuffer **ppStub);
1768 local,
1769 object,
1770 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1772 interface IChannelHook : IUnknown
1774 typedef [unique] IChannelHook *LPCHANNELHOOK;
1776 typedef struct SChannelHookCallInfo {
1777 IID iid;
1778 DWORD cbSize;
1779 GUID uCausality;
1780 DWORD dwServerPid;
1781 DWORD iMethod;
1782 void *pObject;
1783 } SChannelHookCallInfo;
1785 void ClientGetSize(
1786 [in] REFGUID uExtent,
1787 [in] REFIID riid,
1788 [out] ULONG *pDataSize);
1790 void ClientFillBuffer(
1791 [in] REFGUID uExtent,
1792 [in] REFIID riid,
1793 [in, out] ULONG *pDataSize,
1794 [in] void *pDataBuffer);
1796 void ClientNotify(
1797 [in] REFGUID uExtent,
1798 [in] REFIID riid,
1799 [in] ULONG cbDataSize,
1800 [in] void *pDataBuffer,
1801 [in] DWORD lDataRep,
1802 [in] HRESULT hrFault);
1804 void ServerNotify(
1805 [in] REFGUID uExtent,
1806 [in] REFIID riid,
1807 [in] ULONG cbDataSize,
1808 [in] void *pDataBuffer,
1809 [in] DWORD lDataRep);
1811 void ServerGetSize(
1812 [in] REFGUID uExtent,
1813 [in] REFIID riid,
1814 [in] HRESULT hrFault,
1815 [out] ULONG *pDataSize);
1817 void ServerFillBuffer(
1818 [in] REFGUID uExtent,
1819 [in] REFIID riid,
1820 [in, out] ULONG *pDataSize,
1821 [in] void *pDataBuffer,
1822 [in] HRESULT hrFault );
1825 extern const FMTID FMTID_SummaryInformation;
1826 extern const FMTID FMTID_DocSummaryInformation;
1827 extern const FMTID FMTID_UserDefinedProperties;
1830 /******************** Connection Points ********************/
1831 /* FIXME */
1833 /******************** DCOM ********************/
1836 local,
1837 object,
1838 uuid(0000013D-0000-0000-C000-000000000046)
1840 interface IClientSecurity : IUnknown
1842 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1843 DWORD dwAuthnSvc;
1844 DWORD dwAuthzSvc;
1845 OLECHAR *pPrincipalName;
1846 HRESULT hr;
1847 } SOLE_AUTHENTICATION_SERVICE;
1849 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1851 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1852 EOAC_NONE = 0x0,
1853 EOAC_MUTUAL_AUTH = 0x1,
1854 EOAC_CLOAKING = 0x10,
1855 EOAC_SECURE_REFS = 0x2,
1856 EOAC_ACCESS_CONTROL = 0x4,
1857 EOAC_APPID = 0x8
1858 } EOLE_AUTHENTICATION_CAPABILITIES;
1860 HRESULT QueryBlanket(
1861 [in] IUnknown *pProxy,
1862 [out] DWORD *pAuthnSvc,
1863 [out] DWORD *pAuthzSvc,
1864 [out] OLECHAR **pServerPrincName,
1865 [out] DWORD *pAuthnLevel,
1866 [out] DWORD *pImpLevel,
1867 [out] void **pAuthInfo,
1868 [out] DWORD *pCapabilites);
1870 HRESULT SetBlanket(
1871 [in] IUnknown *pProxy,
1872 [in] DWORD AuthnSvc,
1873 [in] DWORD AuthzSvc,
1874 [in] OLECHAR *pServerPrincName,
1875 [in] DWORD AuthnLevel,
1876 [in] DWORD ImpLevel,
1877 [in] void *pAuthInfo,
1878 [in] DWORD Capabilities);
1880 HRESULT CopyProxy(
1881 [in] IUnknown *pProxy,
1882 [out] IUnknown **ppCopy);
1886 local,
1887 object,
1888 uuid(0000013E-0000-0000-C000-000000000046)
1890 interface IServerSecurity : IUnknown
1892 HRESULT QueryBlanket(
1893 [out] DWORD *pAuthnSvc,
1894 [out] DWORD *pAuthzSvc,
1895 [out] OLECHAR **pServerPrincName,
1896 [out] DWORD *pAuthnLevel,
1897 [out] DWORD *pImpLevel,
1898 [out] void **pPrivs,
1899 [out] DWORD *pCapabilities);
1901 HRESULT ImpersonateClient();
1903 HRESULT RevertToSelf();
1905 BOOL IsImpersonating();
1909 local,
1910 object,
1911 uuid(00000024-0000-0000-C000-000000000046)
1913 interface IAsyncSetup : IUnknown
1915 HRESULT GetAsyncManager(
1916 [in] REFIID riid,
1917 [in] IUnknown *pOuter,
1918 [in] DWORD dwFlags,
1919 [out] IUnknown **ppInner,
1920 [out] IAsyncManager **ppAsyncMgr);
1924 local,
1925 object,
1926 uuid(0000002A-0000-0000-C000-000000000046)
1928 interface IAsyncManager : IUnknown
1930 typedef enum tagDCOM_CALL_STATE {
1931 DCOM_NONE = 0,
1932 DCOM_CALL_COMPLETE = 1,
1933 DCOM_CALL_CANCELED = 2
1934 } DCOM_CALL_STATE;
1936 HRESULT CompleteCall(
1937 [in] HRESULT Result);
1938 HRESULT GetCallContext(
1939 [in] REFIID riid,
1940 [out] void **pInterface);
1941 HRESULT GetState(
1942 [out] ULONG *pulStateFlags);