blob: b457b5074f4bc8840e70cd3420b5494399dc66a9 [file] [log] [blame]
Ove Kaaven9a580d92002-12-19 22:15:24 +00001/*
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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Ove Kaaven9a580d92002-12-19 22:15:24 +000017 */
18
19import "unknwn.idl";
20
21interface IStream;
Ove Kaaven9a580d92002-12-19 22:15:24 +000022interface IEnumString;
23interface IRunningObjectTable;
24interface IMoniker;
25interface IAdviseSink;
26interface IAsyncManager;
Robert Shearman35dbc142005-08-25 09:50:55 +000027interface ISynchronize;
Ove Kaaven9a580d92002-12-19 22:15:24 +000028
Robert Shearman35dbc142005-08-25 09:50:55 +000029typedef struct _COSERVERINFO {
30 DWORD dwReserved1;
31 LPWSTR pwszName;
32 COAUTHINFO *pAuthInfo;
33 DWORD dwReserved2;
34} COSERVERINFO;
Ove Kaaven9a580d92002-12-19 22:15:24 +000035
36/******************** Fundamentals ********************/
37
38[
39 local,
40 object,
41 uuid(00000003-0000-0000-C000-000000000046)
42]
43interface IMarshal : IUnknown
44{
45 typedef [unique] IMarshal *LPMARSHAL;
46
47 HRESULT GetUnmarshalClass(
48 [in] REFIID riid,
49 [in, unique] void *pv,
50 [in] DWORD dwDestContext,
51 [in, unique] void *pvDestContext,
52 [in] DWORD mshlflags,
53 [out] CLSID *pCid);
54
55 HRESULT GetMarshalSizeMax(
56 [in] REFIID riid,
57 [in, unique] void *pv,
58 [in] DWORD dwDestContext,
59 [in, unique] void *pvDestContext,
60 [in] DWORD mshlflags,
61 [out] DWORD *pSize);
62
63 HRESULT MarshalInterface(
64 [in, unique] IStream *pStm,
65 [in] REFIID riid,
66 [in, unique] void *pv,
67 [in] DWORD dwDestContext,
68 [in, unique] void *pvDestContext,
69 [in] DWORD mshlflags);
70
71 HRESULT UnmarshalInterface(
72 [in, unique] IStream *pStm,
73 [in] REFIID riid,
74 [out] void **ppv);
75
76 HRESULT ReleaseMarshalData(
77 [in, unique] IStream *pStm);
78
79 HRESULT DisconnectObject(
80 [in] DWORD dwReserved);
81}
82
83[
Robert Shearman35dbc142005-08-25 09:50:55 +000084 local,
85 object,
86 uuid(000001cf-0000-0000-C000-000000000046)
87]
88interface IMarshal2 : IMarshal
89{
90 typedef [unique] IMarshal2 *LPMARSHAL2;
91}
92
93[
Ove Kaaven9a580d92002-12-19 22:15:24 +000094 local,
95 object,
96 uuid(00000018-0000-0000-C000-000000000046)
97]
98interface IStdMarshalInfo : IUnknown
99{
100 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
101
102 HRESULT GetClassForHandler(
103 [in] DWORD dwDestContext,
104 [in, unique] void *pvDestContext,
105 [out] CLSID *pClsid);
106}
107
108[
109 local,
110 object,
111 uuid(00000019-0000-0000-C000-000000000046)
112]
113interface IExternalConnection : IUnknown
114{
115 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
116
117 typedef enum tagEXTCONN {
118 EXTCONN_STRONG = 0x0001,
119 EXTCONN_WEAK = 0x0002,
120 EXTCONN_CALLABLE = 0x0004
121 } EXTCONN;
122
123 DWORD AddConnection(
124 [in] DWORD extconn,
125 [in] DWORD reserved);
126
127 DWORD ReleaseConnection(
128 [in] DWORD extconn,
129 [in] DWORD reserved,
130 [in] BOOL fLastReleaseCloses);
131}
132
133[
134 local,
135 object,
136 uuid(00000020-0000-0000-C000-000000000046)
137]
138interface IMultiQI : IUnknown
139{
140 typedef [unique] IMultiQI *LPMULTIQI;
141
142 typedef struct tagMULTI_QI {
143 const IID *pIID;
144 IUnknown *pItf;
145 HRESULT hr;
146 } MULTI_QI;
147
148 HRESULT QueryMultipleInterfaces(
149 [in] ULONG cMQIs,
150 [in, out] MULTI_QI *pMQIs);
151}
152
153[
154 local,
155 object,
156 uuid(00000002-0000-0000-C000-000000000046)
157]
158interface IMalloc : IUnknown
159{
160 typedef [unique] IMalloc *LPMALLOC;
161
162 LPVOID Alloc(
163 [in] ULONG cb);
164
165 LPVOID Realloc(
166 [in] LPVOID pv,
167 [in] ULONG cb);
168
169 void Free(
170 [in] LPVOID pv);
171
172 ULONG GetSize(
173 [in] LPVOID pv);
174
175 int DidAlloc(LPVOID pv);
176
177 void HeapMinimize();
178}
179
180[
181 local,
182 object,
183 uuid(0000001d-0000-0000-C000-000000000046)
184]
185interface IMallocSpy : IUnknown
186{
187 typedef [unique] IMallocSpy *LPMALLOCSPY;
188
189 ULONG PreAlloc(
190 [in] ULONG cbRequest);
191
192 LPVOID PostAlloc(
193 [in] LPVOID pActual);
194
195 LPVOID PreFree(
196 [in] LPVOID pRequest,
197 [in] BOOL fSpyed);
198
199 void PostFree(
200 [in] BOOL fSpyed);
201
202 ULONG PreRealloc(
203 [in] LPVOID pRequest,
204 [in] ULONG cbRequest,
205 [out] LPVOID *ppNewRequest,
206 [in] BOOL fSpyed);
207
208 LPVOID PostRealloc(
209 [in] LPVOID pActual,
210 [in] BOOL fSpyed);
211
212 LPVOID PreGetSize(
213 [in] LPVOID pRequest,
214 [in] BOOL fSpyed);
215
216 ULONG PostGetSize(
217 [in] ULONG cbActual,
218 [in] BOOL fSpyed);
219
220 LPVOID PreDidAlloc(
221 [in] LPVOID pRequest,
222 [in] BOOL fSpyed);
223
224 int PostDidAlloc(
225 [in] LPVOID pRequest,
226 [in] BOOL fSpyed,
227 [in] int fActual);
228
229 void PreHeapMinimize();
230
231 void PostHeapMinimize();
232}
233
234[
Robert Shearman2a4b6fd2005-01-03 14:23:33 +0000235 local,
236 object,
237 uuid(00000021-0000-0000-C000-000000000046)
238]
239interface IInternalUnknown : IUnknown
240{
241 HRESULT QueryInternalInterface(
242 [in] REFIID riid,
243 [out] void **ppv);
244}
245
246[
Ove Kaaven9a580d92002-12-19 22:15:24 +0000247 object,
248 uuid(00000100-0000-0000-C000-000000000046),
249 pointer_default(unique)
250]
251interface IEnumUnknown : IUnknown
252{
253 typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
254
255 [local]
256 HRESULT Next(
257 [in] ULONG celt,
258 [out] IUnknown **rgelt,
259 [out] ULONG *pceltFetched);
260
261 [call_as(Next)]
262 HRESULT RemoteNext(
263 [in] ULONG celt,
264 [out, size_is(celt), length_is(*pceltFetched)]
265 IUnknown **rgelt,
266 [out] ULONG *pceltFetched);
267
268 HRESULT Skip(
269 [in] ULONG celt);
270
271 HRESULT Reset();
272
273 HRESULT Clone(
274 [out] IEnumUnknown **ppenum);
275}
276
277[
278 object,
279 uuid(00000022-0000-0000-C000-000000000046),
280 version(1.0),
281 pointer_default(unique)
282]
283interface ISurrogate : IUnknown
284{
285 typedef [unique] ISurrogate *LPSURROGATE;
286
287 HRESULT LoadDllServer(
288 [in] REFCLSID Clsid);
289 HRESULT FreeSurrogate();
290}
291
292[
293 local,
294 object,
295 uuid(00000146-0000-0000-C000-000000000046)
296]
297interface IGlobalInterfaceTable : IUnknown
298{
299 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
300
301 HRESULT RegisterInterfaceInGlobal(
302 [in] IUnknown *pUnk,
303 [in] REFIID riid,
304 [out] DWORD *pdwCookie);
305
306 HRESULT RevokeInterfaceFromGlobal(
307 [in] DWORD dwCookie);
308
309 HRESULT GetInterfaceFromGlobal(
310 [in] DWORD dwCookie,
311 [in] REFIID riid,
312 [out, iid_is(riid)] void **ppv);
313}
314
315/******************** Monikers ********************/
316
317[
318 object,
319 uuid(0000000e-0000-0000-C000-000000000046),
320 pointer_default(unique)
321]
322interface IBindCtx : IUnknown
323{
324 typedef [unique] IBindCtx *LPBINDCTX;
325 typedef [unique] IBindCtx *LPBC;
326
327 typedef struct tagBIND_OPTS {
328 DWORD cbStruct;
329 DWORD grfFlags;
330 DWORD grfMode;
331 DWORD dwTickCountDeadline;
332 } BIND_OPTS, *LPBIND_OPTS;
333
334 /* FIXME: C++ crap */
335 typedef struct tagBIND_OPTS2 {
336 DWORD cbStruct;
337 DWORD grfFlags;
338 DWORD grfMode;
339 DWORD dwTickCountDeadline;
340 DWORD dwTrackFlags;
341 DWORD dwClassContext;
342 LCID locale;
343 COSERVERINFO *pServerInfo;
344 } BIND_OPTS2, *LPBIND_OPTS2;
345
346 typedef enum tagBIND_FLAGS {
347 BIND_MAYBOTHERUSER = 1,
348 BIND_JUSTTESTEXISTENCE = 2
349 } BIND_FLAGS;
350
351 HRESULT RegisterObjectBound(
352 [in, unique] IUnknown *punk);
353
354 HRESULT RevokeObjectBound(
355 [in, unique] IUnknown *punk);
356
357 HRESULT ReleaseBoundObjects();
358
359 [local]
360 HRESULT SetBindOptions(
361 [in] BIND_OPTS *pbindopts);
362
363 [call_as(SetBindOptions)]
364 HRESULT RemoteSetBindOptions(
365 [in] BIND_OPTS2 *pbindopts);
366
367 [local]
368 HRESULT GetBindOptions(
369 [in, out] BIND_OPTS *pbindopts);
370
371 [call_as(GetBindOptions)]
372 HRESULT RemoteGetBindOptions(
373 [in, out] BIND_OPTS2 *pbindopts);
374
375 HRESULT GetRunningObjectTable(
376 [out] IRunningObjectTable **pprot);
377
378 HRESULT RegisterObjectParam(
379 [in] LPOLESTR pszKey,
380 [in, unique] IUnknown *punk);
381
382 HRESULT GetObjectParam(
383 [in] LPOLESTR pszKey,
384 [out] IUnknown **ppunk);
385
386 HRESULT EnumObjectParam(
387 [out] IEnumString **ppenum);
388
389 HRESULT RevokeObjectParam(
390 [in] LPOLESTR pszKey);
391}
392
393[
394 object,
395 uuid(00000102-0000-0000-C000-000000000046),
396 pointer_default(unique)
397]
398interface IEnumMoniker : IUnknown
399{
400 typedef [unique] IEnumMoniker *LPENUMMONIKER;
401
402 [local]
403 HRESULT Next(
404 [in] ULONG celt,
405 [out, size_is(celt), length_is(*pceltFetched)]
406 IMoniker **rgelt,
407 [out] ULONG *pceltFetched);
408
409 [call_as(Next)]
410 HRESULT RemoteNext(
411 [in] ULONG celt,
412 [out, size_is(celt), length_is(*pceltFetched)]
413 IMoniker **rgelt,
414 [out] ULONG *pceltFetched);
415
416 HRESULT Skip(
417 [in] ULONG celt);
418
419 HRESULT Reset();
420
421 HRESULT Clone(
422 [out] IEnumMoniker **ppenum);
423}
424
425[
426 object,
427 uuid(00000126-0000-0000-C000-000000000046)
428]
429interface IRunnableObject : IUnknown
430{
431 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
432
433 HRESULT GetRunningClass(
434 [out] LPCLSID lpClsid);
435
436 HRESULT Run(
437 [in] LPBINDCTX pbc);
438
439 [local]
440 BOOL IsRunning();
441
442 [call_as(IsRunning)]
443 HRESULT RemoteIsRunning();
444
445 HRESULT LockRunning(
446 [in] BOOL fLock,
447 [in] BOOL fLastUnlockCloses);
448
449 HRESULT SetContainedObject(
450 [in] BOOL fContained);
451}
452
453/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
Alexandre Julliardd59ba4c2005-08-15 20:53:40 +0000454 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
Ove Kaaven9a580d92002-12-19 22:15:24 +0000455 * but GetObject is used as a valid method name below, so we have
Alexandre Julliardd59ba4c2005-08-15 20:53:40 +0000456 * to undefine it in that case */
457cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
Ove Kaaven9a580d92002-12-19 22:15:24 +0000458cpp_quote("#undef GetObject")
459cpp_quote("#endif")
460
461[
462 object,
463 uuid(00000010-0000-0000-C000-000000000046)
464]
465interface IRunningObjectTable : IUnknown
466{
467 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
468
469 HRESULT Register(
470 [in] DWORD grfFlags,
471 [in, unique] IUnknown *punkObject,
472 [in, unique] IMoniker *pmkObjectName,
473 [out] DWORD *pdwRegister);
474
475 HRESULT Revoke(
476 [in] DWORD dwRegister);
477
478 HRESULT IsRunning(
479 [in, unique] IMoniker *pmkObjectName);
480
481 HRESULT GetObject(
482 [in, unique] IMoniker *pmkObjectName,
483 [out] IUnknown **ppunkObject);
484
485 HRESULT NoteChangeTime(
486 [in] DWORD dwRegister,
487 [in] FILETIME *pfiletime);
488
489 HRESULT GetTimeOfLastChange(
490 [in, unique] IMoniker *pmkObjectName,
491 [out] FILETIME *pfiletime);
492
493 HRESULT EnumRunning(
494 [out] IEnumMoniker **ppenumMoniker);
495}
496
497[
498 object,
499 uuid(0000010c-0000-0000-C000-000000000046)
500]
501interface IPersist : IUnknown
502{
503 typedef [unique] IPersist *LPPERSIST;
504
505 HRESULT GetClassID(
506 [out] CLSID *pClassID);
507}
508
509[
510 object,
511 uuid(00000109-0000-0000-C000-000000000046),
512 pointer_default(unique)
513]
514interface IPersistStream : IPersist
515{
516 typedef [unique] IPersistStream *LPPERSISTSTREAM;
517
518 HRESULT IsDirty();
519
520 HRESULT Load(
521 [in, unique] IStream *pStm);
522
523 HRESULT Save(
524 [in, unique] IStream *pStm,
525 [in] BOOL fClearDirty);
526
527 HRESULT GetSizeMax(
528 [out] ULARGE_INTEGER *pcbSize);
529}
530
531[
532 object,
533 uuid(0000000f-0000-0000-C000-000000000046),
534 pointer_default(unique)
535]
536interface IMoniker : IPersistStream
537{
538 typedef [unique] IMoniker *LPMONIKER;
539
540 typedef enum tagMKSYS {
541 MKSYS_NONE = 0,
542 MKSYS_GENERICCOMPOSITE = 1,
543 MKSYS_FILEMONIKER = 2,
544 MKSYS_ANTIMONIKER = 3,
545 MKSYS_ITEMMONIKER = 4,
546 MKSYS_POINTERMONIKER = 5,
Kevin Koltzaubf6df052004-03-01 23:12:47 +0000547 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
Ove Kaaven9a580d92002-12-19 22:15:24 +0000548 MKSYS_CLASSMONIKER = 7
549 } MKSYS;
550
551 typedef [v1_enum] enum tagMKREDUCE {
552 MKRREDUCE_ONE = 3 << 16,
553 MKRREDUCE_TOUSER = 2 << 16,
554 MKRREDUCE_THROUGHUSER = 1 << 16,
555 MKRREDUCE_ALL = 0
556 } MKRREDUCE;
557
558 [local]
559 HRESULT BindToObject(
560 [in, unique] IBindCtx *pbc,
561 [in, unique] IMoniker *pmkToLeft,
562 [in] REFIID riidResult,
563 [out, iid_is(riidResult)] void **ppvResult);
564
565 [call_as(BindToObject)]
566 HRESULT RemoteBindToObject(
567 [in, unique] IBindCtx *pbc,
568 [in, unique] IMoniker *pmkToLeft,
569 [in] REFIID riidResult,
570 [out, iid_is(riidResult)] IUnknown **ppvResult);
571
572 [local]
573 HRESULT BindToStorage(
574 [in, unique] IBindCtx *pbc,
575 [in, unique] IMoniker *pmkToLeft,
576 [in] REFIID riid,
577 [out, iid_is(riid)] void **ppvObj);
578
579 [call_as(BindToStorage)]
580 HRESULT RemoteBindToStorage(
581 [in, unique] IBindCtx *pbc,
582 [in, unique] IMoniker *pmkToLeft,
583 [in] REFIID riid,
584 [out, iid_is(riid)] IUnknown **ppvObj);
585
586 HRESULT Reduce(
587 [in, unique] IBindCtx *pbc,
588 [in] DWORD dwReduceHowFar,
589 [in, out, unique] IMoniker **ppmkToLeft,
590 [out] IMoniker **ppmkReduced);
591
592 HRESULT ComposeWith(
593 [in, unique] IMoniker *pmkRight,
594 [in] BOOL fOnlyIfNotGeneric,
595 [out] IMoniker **ppmkComposite);
596
597 HRESULT Enum(
598 [in] BOOL fForward,
599 [out] IEnumMoniker **ppenumMoniker);
600
601 HRESULT IsEqual(
602 [in, unique] IMoniker *pmkOtherMoniker);
603
604 HRESULT Hash(
605 [out] DWORD *pdwHash);
606
607 HRESULT IsRunning(
608 [in, unique] IBindCtx *pbc,
609 [in, unique] IMoniker *pmkToLeft,
610 [in, unique] IMoniker *pmkNewlyRunning);
611
612 HRESULT GetTimeOfLastChange(
613 [in, unique] IBindCtx *pbc,
614 [in, unique] IMoniker *pmkToLeft,
615 [out] FILETIME *pFileTime);
616
617 HRESULT Inverse(
618 [out] IMoniker **ppmk);
619
620 HRESULT CommonPrefixWith(
621 [in, unique] IMoniker *pmkOther,
622 [out] IMoniker **ppmkPrefix);
623
624 HRESULT RelativePathTo(
625 [in, unique] IMoniker *pmkOther,
626 [out] IMoniker **ppmkRelPath);
627
628 HRESULT GetDisplayName(
629 [in, unique] IBindCtx *pbc,
630 [in, unique] IMoniker *pmkToLeft,
631 [out] LPOLESTR *ppszDisplayName);
632
633 HRESULT ParseDisplayName(
634 [in, unique] IBindCtx *pbc,
635 [in, unique] IMoniker *pmkToLeft,
636 [in] LPOLESTR pszDisplayName,
637 [out] ULONG *pchEaten,
638 [out] IMoniker **ppmkOut);
639
640 HRESULT IsSystemMoniker(
641 [out] DWORD *pdwMksys);
642}
643
644[
645 object,
646 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
647 pointer_default(unique)
648]
649interface IROTData : IUnknown
650{
651 HRESULT GetComparisonData(
652 [out, size_is(cbMax)] byte *pbData,
653 [in] ULONG cbMax,
654 [out] ULONG *pcbData);
655}
656
657[
658 object,
659 uuid(00000101-0000-0000-C000-000000000046),
660 pointer_default(unique)
661]
662interface IEnumString : IUnknown
663{
664 typedef [unique] IEnumString *LPENUMSTRING;
665
666 [local]
667 HRESULT Next(
668 [in] ULONG celt,
669 [out, size_is(celt), length_is(*pceltFetched)]
670 LPOLESTR *rgelt,
671 [out] ULONG *pceltFetched);
672
673 [call_as(Next)]
674 HRESULT RemoteNext(
675 [in] ULONG celt,
676 [out, size_is(celt), length_is(*pceltFetched)]
677 LPOLESTR *rgelt,
678 [out] ULONG *pceltFetched);
679
680 HRESULT Skip(
681 [in] ULONG celt);
682
683 HRESULT Reset();
684
685 HRESULT Clone(
686 [out] IEnumString **ppenum);
687}
688
689[
690 object,
691 uuid(00000140-0000-0000-C000-000000000046)
692]
693interface IClassActivator : IUnknown
694{
695 HRESULT GetClassObject(
696 [in] REFCLSID rclsid,
697 [in] DWORD dwClassContext,
698 [in] LCID locale,
699 [in] REFIID riid,
700 [out, iid_is(riid)] void **ppv);
701}
702
703/******************** Storage ********************/
704
705[
706 object,
707 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
708 pointer_default(unique)
709]
710interface ISequentialStream : IUnknown
711{
712 [local]
713 HRESULT Read(
714 [out, size_is(cb), length_is(*pcbRead)]
715 void *pv,
716 [in] ULONG cb,
717 [out] ULONG *pcbRead);
718
719 [call_as(Read)]
720 HRESULT RemoteRead(
721 [out, size_is(cb), length_is(*pcbRead)]
722 byte *pv,
723 [in] ULONG cb,
724 [out] ULONG *pcbRead);
725
726 [local]
727 HRESULT Write(
728 [in, size_is(cb)] const void *pv,
729 [in] ULONG cb,
730 [out] ULONG *pcbWritten);
731
732 [call_as(Write)]
733 HRESULT RemoteWrite(
734 [in, size_is(cb)] const byte *pv,
735 [in] ULONG cb,
736 [out] ULONG *pcbWritten);
737}
738
739[
740 object,
741 uuid(0000000c-0000-0000-C000-000000000046),
742 pointer_default(unique)
743]
744interface IStream : ISequentialStream
745{
746 typedef [unique] IStream *LPSTREAM;
747
748 typedef struct tagSTATSTG {
749 LPOLESTR pwcsName;
750 DWORD type;
751 ULARGE_INTEGER cbSize;
752 FILETIME mtime;
753 FILETIME ctime;
754 FILETIME atime;
755 DWORD grfMode;
756 DWORD grfLocksSupported;
757 CLSID clsid;
758 DWORD grfStateBits;
759 DWORD reserved;
760 } STATSTG;
761
762 typedef enum tagSTGTY {
763 STGTY_STORAGE = 1,
764 STGTY_STREAM = 2,
765 STGTY_LOCKBYTES = 3,
766 STGTY_PROPERTY = 4
767 } STGTY;
768
769 typedef enum tagSTREAM_SEEK {
770 STREAM_SEEK_SET = 0,
771 STREAM_SEEK_CUR = 1,
772 STREAM_SEEK_END = 2
773 } STREAM_SEEK;
774
775 /* these are defined in Linux's fcntl.h,
776 * undefine them to avoid conflicts */
777 cpp_quote("#undef LOCK_MAND")
778 cpp_quote("#undef LOCK_READ")
779 cpp_quote("#undef LOCK_WRITE")
780 cpp_quote("#undef LOCK_RW")
781
782 typedef enum tagLOCKTYPE {
783 LOCK_WRITE = 1,
784 LOCK_EXCLUSIVE = 2,
785 LOCK_ONLYONCE = 4
786 } LOCKTYPE;
787
788 [local]
789 HRESULT Seek(
790 [in] LARGE_INTEGER dlibMove,
791 [in] DWORD dwOrigin,
792 [out] ULARGE_INTEGER *plibNewPosition);
793
794 [call_as(Seek)]
795 HRESULT RemoteSeek(
796 [in] LARGE_INTEGER dlibMove,
797 [in] DWORD dwOrigin,
798 [out] ULARGE_INTEGER *plibNewPosition);
799
800 HRESULT SetSize(
801 [in] ULARGE_INTEGER libNewSize);
802
803 [local]
804 HRESULT CopyTo(
805 [in, unique] IStream *pstm,
806 [in] ULARGE_INTEGER cb,
807 [out] ULARGE_INTEGER *pcbRead,
808 [out] ULARGE_INTEGER *pcbWritten);
809
810 [call_as(CopyTo)]
811 HRESULT RemoteCopyTo(
812 [in, unique] IStream *pstm,
813 [in] ULARGE_INTEGER cb,
814 [out] ULARGE_INTEGER *pcbRead,
815 [out] ULARGE_INTEGER *pcbWritten);
816
817 HRESULT Commit(
818 [in] DWORD grfCommitFlags);
819
820 HRESULT Revert();
821
822 HRESULT LockRegion(
823 [in] ULARGE_INTEGER libOffset,
824 [in] ULARGE_INTEGER cb,
825 [in] DWORD dwLockType);
826
827 HRESULT UnlockRegion(
828 [in] ULARGE_INTEGER libOffset,
829 [in] ULARGE_INTEGER cb,
830 [in] DWORD dwLockType);
831
832 HRESULT Stat(
833 [out] STATSTG *pstatstg,
834 [in] DWORD grfStatFlag);
835
836 HRESULT Clone(
837 [out] IStream **ppstm);
838}
839
840[
841 object,
Ove Kaaven9a580d92002-12-19 22:15:24 +0000842 uuid(0000000d-0000-0000-C000-000000000046),
843 pointer_default(unique)
844]
845interface IEnumSTATSTG : IUnknown
846{
847 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
848
849 [local]
850 HRESULT Next(
851 [in] ULONG celt,
852 [out, size_is(celt), length_is(*pceltFetched)]
853 STATSTG *rgelt,
854 [out] ULONG *pceltFetched);
855
856 [call_as(Next)]
857 HRESULT RemoteNext(
858 [in] ULONG celt,
859 [out, size_is(celt), length_is(*pceltFetched)]
860 STATSTG *rgelt,
861 [out] ULONG *pceltFetched);
862
863 HRESULT Skip(
864 [in] ULONG celt);
865
866 HRESULT Reset();
867
868 HRESULT Clone(
869 [out] IEnumSTATSTG **ppenum);
870}
871
872[
873 object,
874 uuid(0000000b-0000-0000-C000-000000000046),
875 pointer_default(unique)
876]
877interface IStorage : IUnknown
878{
879 typedef [unique] IStorage *LPSTORAGE;
880
881 typedef struct tagRemSNB {
882 unsigned long ulCntStr;
883 unsigned long ulCntChar;
884 [size_is(ulCntChar)] OLECHAR rgString[];
885 } RemSNB;
886
887 typedef [unique] RemSNB *wireSNB;
888 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
889
890 HRESULT CreateStream(
891 [in] LPCOLESTR pwcsName,
892 [in] DWORD grfMode,
893 [in] DWORD reserved1,
894 [in] DWORD reserved2,
895 [out] IStream **ppstm);
896
897 [local]
898 HRESULT OpenStream(
899 [in] LPCOLESTR pwcsName,
900 [in, unique] void *reserved1,
901 [in] DWORD grfMode,
902 [in] DWORD reserved2,
903 [out] IStream **ppstm);
904
905 [call_as(OpenStream)]
906 HRESULT RemoteOpenStream(
907 [in] LPCOLESTR pwcsName,
908 [in] unsigned long cbReserved1,
909 [in, unique, size_is(cbReserved1)] byte *reserved1,
910 [in] DWORD grfMode,
911 [in] DWORD reserved2,
912 [out] IStream **ppstm);
913
914 HRESULT CreateStorage(
915 [in] LPCOLESTR pwcsName,
916 [in] DWORD grfMode,
917 [in] DWORD dwStgFmt,
918 [in] DWORD reserved2,
919 [out] IStorage **ppstg);
920
921 HRESULT OpenStorage(
922 [in, unique] LPCOLESTR pwcsName,
923 [in, unique] IStorage *pstgPriority,
924 [in] DWORD grfMode,
925 [in, unique] SNB snbExclude,
926 [in] DWORD reserved,
927 [out] IStorage **ppstg);
928
929 HRESULT CopyTo(
930 [in] DWORD ciidExclude,
931 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
932 [in, unique] SNB snbExclude,
933 [in, unique] IStorage *pstgDest);
934
935 HRESULT MoveElementTo(
936 [in] LPCOLESTR pwcsName,
937 [in, unique] IStorage *pstgDest,
938 [in] LPCOLESTR pwcsNewName,
939 [in] DWORD grfFlags);
940
941 HRESULT Commit(
942 [in] DWORD grfCommitFlags);
943
944 HRESULT Revert();
945
946 [local]
947 HRESULT EnumElements(
948 [in] DWORD reserved1,
949 [in, unique, size_is(1)] void *reserved2,
950 [in] DWORD reserved3,
951 [out] IEnumSTATSTG **ppenum);
952
953 [call_as(EnumElements)]
954 HRESULT RemoteEnumElements(
955 [in] DWORD reserved1,
956 [in] unsigned long cbReserved2,
957 [in, unique, size_is(cbReserved2)] byte *reserved2,
958 [in] DWORD reserved3,
959 [out] IEnumSTATSTG **ppenum);
960
961 HRESULT DestroyElement(
962 [in] LPCOLESTR pwcsName);
963
964 HRESULT RenameElement(
965 [in] LPCOLESTR pwcsOldName,
966 [in] LPCOLESTR pwcsNewName);
967
968 HRESULT SetElementTimes(
969 [in, unique] LPCOLESTR pwcsName,
970 [in, unique] const FILETIME *pctime,
971 [in, unique] const FILETIME *patime,
972 [in, unique] const FILETIME *pmtime);
973
974 HRESULT SetClass(
975 [in] REFCLSID clsid);
976
977 HRESULT SetStateBits(
978 [in] DWORD grfStateBits,
979 [in] DWORD grfMask);
980
981 HRESULT Stat(
982 [out] STATSTG *pstatstg,
983 [in] DWORD grfStatFlag);
984}
985
986[
987 object,
Ove Kaaven9a580d92002-12-19 22:15:24 +0000988 uuid(0000010b-0000-0000-C000-000000000046),
989 pointer_default(unique)
990]
991interface IPersistFile : IPersist
992{
993 typedef [unique] IPersistFile *LPPERSISTFILE;
994
995 HRESULT IsDirty();
996
997 HRESULT Load(
998 [in] LPCOLESTR pszFileName,
999 [in] DWORD dwMode);
1000
1001 HRESULT Save(
1002 [in, unique] LPCOLESTR pszFileName,
1003 [in] BOOL fRemember);
1004
1005 HRESULT SaveCompleted(
1006 [in, unique] LPCOLESTR pszFileName);
1007
1008 HRESULT GetCurFile(
1009 [out] LPOLESTR *ppszFileName);
1010}
1011
1012[
1013 object,
1014 uuid(0000010a-0000-0000-C000-000000000046),
1015 pointer_default(unique)
1016]
1017interface IPersistStorage : IPersist
1018{
1019 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
1020
1021 HRESULT IsDirty();
1022
1023 HRESULT InitNew(
1024 [in, unique] IStorage *pStg);
1025
1026 HRESULT Load(
1027 [in, unique] IStorage *pStg);
1028
1029 HRESULT Save(
1030 [in, unique] IStorage *pStgSave,
1031 [in] BOOL fSameAsLoad);
1032
1033 HRESULT SaveCompleted(
1034 [in, unique] IStorage *pStgNew);
1035
1036 HRESULT HandsOffStorage();
1037}
1038
1039[
1040 object,
1041 uuid(00000012-0000-0000-C000-000000000046),
1042 pointer_default(unique)
1043]
1044interface IRootStorage : IUnknown
1045{
1046 typedef [unique] IRootStorage *LPROOTSTORAGE;
1047
1048 HRESULT SwitchToFile(
1049 [in] LPOLESTR pszFile);
1050}
1051
1052[
1053 object,
1054 uuid(0000000a-0000-0000-C000-000000000046),
1055 pointer_default(unique)
1056]
1057interface ILockBytes : IUnknown
1058{
1059 typedef [unique] ILockBytes *LPLOCKBYTES;
1060
1061 [local]
1062 HRESULT ReadAt(
1063 [in] ULARGE_INTEGER ulOffset,
1064 [out, size_is(cb), length_is(*pcbRead)]
1065 void *pv,
1066 [in] ULONG cb,
1067 [out] ULONG *pcbRead);
1068
1069 [call_as(ReadAt)]
1070 HRESULT RemoteReadAt(
1071 [in] ULARGE_INTEGER ulOffset,
1072 [out, size_is(cb), length_is(*pcbRead)]
1073 byte *pv,
1074 [in] ULONG cb,
1075 [out] ULONG *pcbRead);
1076
1077 [local]
1078 HRESULT WriteAt(
1079 [in] ULARGE_INTEGER ulOffset,
1080 [in, size_is(cb)] const void *pv,
1081 [in] ULONG cb,
1082 [out] ULONG *pcbWritten);
1083
1084 [call_as(WriteAt)]
1085 HRESULT RemoteWriteAt(
1086 [in] ULARGE_INTEGER ulOffset,
1087 [in, size_is(cb)] const byte *pv,
1088 [in] ULONG cb,
1089 [out] ULONG *pcbWritten);
1090
1091 HRESULT Flush();
1092
1093 HRESULT SetSize(
1094 [in] ULARGE_INTEGER cb);
1095
1096 HRESULT LockRegion(
1097 [in] ULARGE_INTEGER libOffset,
1098 [in] ULARGE_INTEGER cb,
1099 [in] DWORD dwLockType);
1100
1101 HRESULT UnlockRegion(
1102 [in] ULARGE_INTEGER libOffset,
1103 [in] ULARGE_INTEGER cb,
1104 [in] DWORD dwLockType);
1105
1106 HRESULT Stat(
1107 [out] STATSTG *pstatstg,
1108 [in] DWORD grfStatFlag);
1109}
1110
1111[
1112 object,
1113 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1114 pointer_default(unique)
1115]
1116interface IFillLockBytes : IUnknown
1117{
1118 [local]
1119 HRESULT FillAppend(
1120 [in, size_is(cb)] const void *pv,
1121 [in] ULONG cb,
1122 [out] ULONG *pcbWritten);
1123
1124 [call_as(FillAppend)]
1125 HRESULT RemoteFillAppend(
1126 [in, size_is(cb)] const byte *pv,
1127 [in] ULONG cb,
1128 [out] ULONG *pcbWritten);
1129
1130 [local]
1131 HRESULT FillAt(
1132 [in] ULARGE_INTEGER ulOffset,
1133 [in, size_is(cb)] const void *pv,
1134 [in] ULONG cb,
1135 [out] ULONG *pcbWritten);
1136
1137 [call_as(FillAt)]
1138 HRESULT RemoteFillAt(
1139 [in] ULARGE_INTEGER ulOffset,
1140 [in, size_is(cb)] const byte *pv,
1141 [in] ULONG cb,
1142 [out] ULONG *pcbWritten);
1143
1144 HRESULT SetFillSize(
1145 [in] ULARGE_INTEGER ulSize);
1146
1147 HRESULT Terminate(
1148 [in] BOOL bCanceled);
1149}
1150
1151[
1152 object,
1153 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
1154 pointer_default(unique)
1155]
1156interface IProgressNotify : IUnknown
1157{
1158 HRESULT OnProgress(
1159 [in] DWORD dwProgressCurrent,
1160 [in] DWORD dwProgressMaximum,
1161 [in] BOOL fAccurate,
1162 [in] BOOL fOwner);
1163}
1164
1165[
1166 local,
1167 object,
1168 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
1169 pointer_default(unique)
1170]
1171interface ILayoutStorage : IUnknown
1172{
1173 typedef struct tagStorageLayout {
1174 DWORD LayoutType;
1175 OLECHAR *pwcsElementName;
1176 LARGE_INTEGER cOffset;
1177 LARGE_INTEGER cBytes;
1178 } StorageLayout;
1179
1180 HRESULT LayoutScript(
1181 [in] StorageLayout *pStorageLayout,
1182 [in] DWORD nEntries,
1183 [in] DWORD glfInterleavedFlag);
1184
1185 HRESULT BeginMonitor();
1186
1187 HRESULT EndMonitor();
1188
1189 HRESULT ReLayoutDocfile(
1190 [in] OLECHAR *pwcsNewDfName);
1191
1192 HRESULT ReLayoutDocfileOnILockBytes(
1193 [in] ILockBytes *pILockBytes);
1194}
1195
Robert Shearman35dbc142005-08-25 09:50:55 +00001196[
1197 object,
1198 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
1199]
1200interface IBlockingLock : IUnknown
1201{
1202 HRESULT Lock(
1203 [in] DWORD dwTimeout);
1204
1205 HRESULT Unlock();
1206}
1207
1208
1209[
1210 object,
1211 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
1212]
1213interface ITimeAndNoticeControl : IUnknown
1214{
1215 HRESULT SuppressChanges(
1216 [in] DWORD res1,
1217 [in] DWORD res2);
1218
1219}
1220
1221
1222
1223[
1224 object,
1225 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
1226]
1227interface IOplockStorage: IUnknown
1228{
1229 HRESULT CreateStorageEx(
1230 [in] LPCWSTR pwcsName,
1231 [in] DWORD grfMode,
1232 [in] DWORD stgfmt,
1233 [in] DWORD grfAttrs,
1234 [in] REFIID riid,
1235 [out, iid_is(riid)] void **ppstgOpen);
1236
1237 HRESULT OpenStorageEx(
1238 [in] LPCWSTR pwcsName,
1239 [in] DWORD grfMode,
1240 [in] DWORD stgfmt,
1241 [in] DWORD grfAttrs,
1242 [in] REFIID riid,
1243 [out, iid_is(riid)] void **ppstgOpen);
1244}
1245
Ove Kaaven9a580d92002-12-19 22:15:24 +00001246/******************** Data Object ********************/
1247
1248[
1249 object,
1250 uuid(00000103-0000-0000-C000-000000000046),
1251 pointer_default(unique)
1252]
1253interface IEnumFORMATETC : IUnknown
1254{
1255 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
1256
1257 typedef struct tagDVTARGETDEVICE {
1258 DWORD tdSize;
1259 WORD tdDriverNameOffset;
1260 WORD tdDeviceNameOffset;
1261 WORD tdPortNameOffset;
1262 WORD tdExtDevmodeOffset;
1263 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
1264 BYTE tdData[];
1265 } DVTARGETDEVICE;
1266
1267 typedef CLIPFORMAT *LPCLIPFORMAT;
1268
1269 typedef struct tagFORMATETC {
1270 CLIPFORMAT cfFormat;
1271 [unique] DVTARGETDEVICE *ptd;
1272 DWORD dwAspect;
1273 LONG lindex;
1274 DWORD tymed;
1275 } FORMATETC, *LPFORMATETC;
1276
1277 [local]
1278 HRESULT Next(
1279 [in] ULONG celt,
1280 [out, size_is(celt), length_is(*pceltFetched)]
1281 FORMATETC *rgelt,
1282 [out] ULONG *pceltFetched);
1283
1284 [call_as(Next)]
1285 HRESULT RemoteNext(
1286 [in] ULONG celt,
1287 [out, size_is(celt), length_is(*pceltFetched)]
1288 FORMATETC *rgelt,
1289 [out] ULONG *pceltFetched);
1290
1291 HRESULT Skip(
1292 [in] ULONG celt);
1293
1294 HRESULT Reset();
1295
1296 HRESULT Clone(
1297 [out] IEnumFORMATETC **ppenum);
1298}
1299
1300[
1301 object,
1302 uuid(00000105-0000-0000-C000-000000000046),
1303 pointer_default(unique)
1304]
1305interface IEnumSTATDATA : IUnknown
1306{
1307 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
1308
1309 typedef enum tagADVF {
1310 ADVF_NODATA = 1,
1311 ADVF_PRIMEFIRST = 2,
1312 ADVF_ONLYONCE = 4,
1313 ADVF_DATAONSTOP = 64,
1314 ADVFCACHE_NOHANDLER = 8,
1315 ADVFCACHE_FORCEBUILTIN = 16,
1316 ADVFCACHE_ONSAVE = 32
1317 } ADVF;
1318
1319 typedef struct tagSTATDATA
1320 {
1321 FORMATETC formatetc;
1322 DWORD advf;
1323 [unique] IAdviseSink *pAdvSink;
1324 DWORD dwConnection;
1325 } STATDATA, *LPSTATDATA;
1326
1327 [local]
1328 HRESULT Next(
1329 [in] ULONG celt,
1330 [out, size_is(celt), length_is(*pceltFetched)]
1331 STATDATA *rgelt,
1332 [out] ULONG *pceltFetched);
1333
1334 [call_as(Next)]
1335 HRESULT RemoteNext(
1336 [in] ULONG celt,
1337 [out, size_is(celt), length_is(*pceltFetched)]
1338 STATDATA *rgelt,
1339 [out] ULONG *pceltFetched);
1340
1341 HRESULT Skip(
1342 [in] ULONG celt);
1343
1344 HRESULT Reset();
1345
1346 HRESULT Clone(
1347 [out] IEnumSTATDATA **ppenum);
1348}
1349
1350[
1351 object,
1352 uuid(0000010f-0000-0000-C000-000000000046),
1353 pointer_default(unique)
1354]
1355interface IAdviseSink : IUnknown
1356{
1357 typedef IAdviseSink *LPADVISESINK;
1358
1359 typedef [v1_enum] enum tagTYMED {
1360 TYMED_HGLOBAL = 1,
1361 TYMED_FILE = 2,
1362 TYMED_ISTREAM = 4,
1363 TYMED_ISTORAGE = 8,
1364 TYMED_GDI = 16,
1365 TYMED_MFPICT = 32,
1366 TYMED_ENHMF = 64,
1367 TYMED_NULL = 0
1368 } TYMED;
1369
1370 typedef struct tagRemSTGMEDIUM {
1371 DWORD tymed;
1372 DWORD dwHandleType;
1373 unsigned long pData;
1374 unsigned long pUnkForRelease;
1375 unsigned long cbData;
1376 [size_is(cbData)] byte data[];
1377 } RemSTGMEDIUM;
1378
1379 /* FIXME: C/C++ nameless union version */
1380 typedef struct tagSTGMEDIUM {
1381 DWORD tymed;
1382 [switch_is(tymed)] union {
1383 [case(TYMED_GDI)] HBITMAP hBitmap;
1384 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1385 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1386 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1387 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1388 [case(TYMED_ISTREAM)] IStream *pstm;
1389 [case(TYMED_ISTORAGE)] IStorage *pstg;
1390 [default] ;
1391 };
1392 [unique] IUnknown *pUnkForRelease;
1393 } uSTGMEDIUM;
1394
1395/* copied from wingdi.h */
1396#define OBJ_PEN 1
1397#define OBJ_BRUSH 2
1398#define OBJ_DC 3
1399#define OBJ_METADC 4
1400#define OBJ_PAL 5
1401#define OBJ_FONT 6
1402#define OBJ_BITMAP 7
1403#define OBJ_REGION 8
1404#define OBJ_METAFILE 9
1405#define OBJ_MEMDC 10
1406#define OBJ_EXTPEN 11
1407#define OBJ_ENHMETADC 12
1408#define OBJ_ENHMETAFILE 13
1409
1410 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1411 case OBJ_BITMAP: wireHBITMAP hBitmap;
1412 case OBJ_PAL: wireHPALETTE hPalette;
1413 default: wireHGLOBAL hGeneric;
1414 } GDI_OBJECT;
1415
1416 typedef struct _userSTGMEDIUM {
Alexandre Julliard17c69c62003-07-11 03:52:58 +00001417 union switch(DWORD tymed) u {
Ove Kaaven9a580d92002-12-19 22:15:24 +00001418 case TYMED_NULL: ;
1419 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1420 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1421 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1422 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1423 case TYMED_FILE: LPOLESTR lpszFileName;
1424 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1425 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1426 };
1427 IUnknown *pUnkForRelease;
1428 } userSTGMEDIUM;
1429
1430 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1431 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1432
1433 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1434 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1435
1436 typedef STGMEDIUM *LPSTGMEDIUM;
1437
1438 typedef struct _userFLAG_STGMEDIUM {
1439 long ContextFlags;
1440 long fPassOwnership;
1441 userSTGMEDIUM Stgmed;
1442 } userFLAG_STGMEDIUM;
1443
1444 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1445
1446 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1447 long ContextFlags;
1448 long fPassOwnership;
1449 STGMEDIUM Stgmed;
1450 } FLAG_STGMEDIUM;
1451
1452 [local]
1453 void OnDataChange(
1454 [in, unique] FORMATETC *pFormatetc,
1455 [in, unique] STGMEDIUM *pStgmed);
1456
Robert Shearmana5cb9c52005-11-29 10:43:52 +01001457 [call_as(OnDataChange)]
Ove Kaaven9a580d92002-12-19 22:15:24 +00001458 HRESULT RemoteOnDataChange(
Ove Kaaven9a580d92002-12-19 22:15:24 +00001459 [in, unique] FORMATETC *pFormatetc,
1460 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1461
1462 [local]
1463 void OnViewChange(
1464 [in] DWORD dwAspect,
1465 [in] LONG lindex);
1466
Robert Shearmana5cb9c52005-11-29 10:43:52 +01001467 [call_as(OnViewChange)]
Ove Kaaven9a580d92002-12-19 22:15:24 +00001468 HRESULT RemoteOnViewChange(
Ove Kaaven9a580d92002-12-19 22:15:24 +00001469 [in] DWORD dwAspect,
1470 [in] LONG lindex);
1471
1472 [local]
1473 void OnRename(
1474 [in] IMoniker *pmk);
1475
Robert Shearmana5cb9c52005-11-29 10:43:52 +01001476 [call_as(OnRename)]
Ove Kaaven9a580d92002-12-19 22:15:24 +00001477 HRESULT RemoteOnRename(
Ove Kaaven9a580d92002-12-19 22:15:24 +00001478 [in] IMoniker *pmk);
1479
1480 [local]
1481 void OnSave();
1482
Robert Shearmana5cb9c52005-11-29 10:43:52 +01001483 [call_as(OnSave)]
1484 HRESULT RemoteOnSave();
Ove Kaaven9a580d92002-12-19 22:15:24 +00001485
1486 [local]
1487 void OnClose();
1488
1489 [call_as(OnClose)]
1490 HRESULT RemoteOnClose();
1491}
1492
1493[
1494 object,
1495 uuid(00000125-0000-0000-C000-000000000046),
1496 pointer_default(unique)
1497]
1498interface IAdviseSink2 : IAdviseSink
1499{
1500 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1501
1502 [local]
1503 void OnLinkSrcChange(
1504 [in, unique] IMoniker *pmk);
1505
Robert Shearmana5cb9c52005-11-29 10:43:52 +01001506 [call_as(OnLinkSrcChange)]
Ove Kaaven9a580d92002-12-19 22:15:24 +00001507 HRESULT RemoteOnLinkSrcChange(
Ove Kaaven9a580d92002-12-19 22:15:24 +00001508 [in, unique] IMoniker *pmk);
1509}
1510
1511[
1512 object,
1513 uuid(0000010e-0000-0000-C000-000000000046),
1514 pointer_default(unique)
1515]
1516interface IDataObject : IUnknown
1517{
1518 typedef [unique] IDataObject *LPDATAOBJECT;
1519
1520 typedef enum tagDATADIR {
1521 DATADIR_GET = 1,
1522 DATADIR_SET = 2
1523 } DATADIR;
1524
1525 [local]
1526 HRESULT GetData(
1527 [in, unique] FORMATETC *pformatetcIn,
1528 [out] STGMEDIUM *pmedium);
1529
1530 [call_as(GetData)]
1531 HRESULT RemoteGetData(
1532 [in, unique] FORMATETC *pformatetcIn,
1533 [out] STGMEDIUM *pRemoteMedium);
1534
1535 [local]
1536 HRESULT GetDataHere(
1537 [in, unique] FORMATETC *pformatetc,
1538 [in, out] STGMEDIUM *pmedium);
1539
1540 [call_as(GetDataHere)]
1541 HRESULT RemoteGetDataHere(
1542 [in, unique] FORMATETC *pformatetc,
1543 [in, out] STGMEDIUM *pRemoteMedium);
1544
1545 HRESULT QueryGetData(
1546 [in, unique] FORMATETC *pformatetc);
1547
1548 HRESULT GetCanonicalFormatEtc(
1549 [in, unique] FORMATETC *pformatectIn,
1550 [out] FORMATETC *pformatetcOut);
1551
1552 [local]
1553 HRESULT SetData(
1554 [in, unique] FORMATETC *pformatetc,
1555 [in, unique] STGMEDIUM *pmedium,
1556 [in] BOOL fRelease);
1557
1558 [call_as(SetData)]
1559 HRESULT RemoteSetData(
1560 [in, unique] FORMATETC *pformatetc,
1561 [in, unique] FLAG_STGMEDIUM *pmedium,
1562 [in] BOOL fRelease);
1563
1564 HRESULT EnumFormatEtc(
1565 [in] DWORD dwDirection,
1566 [out] IEnumFORMATETC **ppenumFormatEtc);
1567
1568 HRESULT DAdvise(
1569 [in] FORMATETC *pformatetc,
1570 [in] DWORD advf,
1571 [in, unique] IAdviseSink *pAdvSink,
1572 [out] DWORD *pdwConnection);
1573
1574 HRESULT DUnadvise(
1575 [in] DWORD dwConnection);
1576
1577 HRESULT EnumDAdvise(
1578 [out] IEnumSTATDATA **ppenumAdvise);
1579}
1580
1581[
1582 local,
1583 object,
1584 uuid(00000110-0000-0000-C000-000000000046)
1585]
1586interface IDataAdviseHolder : IUnknown
1587{
1588 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1589
1590 HRESULT Advise(
1591 [in, unique] IDataObject *pDataObject,
1592 [in, unique] FORMATETC *pFetc,
1593 [in] DWORD advf,
1594 [in, unique] IAdviseSink *pAdvise,
1595 [out] DWORD *pdwConnection);
1596
1597 HRESULT Unadvise(
1598 [in] DWORD dwConnection);
1599
1600 HRESULT EnumAdvise(
1601 [out] IEnumSTATDATA **ppenumAdvise);
1602
1603 HRESULT SendOnDataChange(
1604 [in, unique] IDataObject *pDataObject,
1605 [in] DWORD dwReserved,
1606 [in] DWORD advf);
1607}
1608
1609/******************** Remoting ********************/
1610
1611[
1612 local,
1613 object,
1614 uuid(00000016-0000-0000-C000-000000000046)
1615]
1616interface IMessageFilter : IUnknown
1617{
1618 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1619
1620 typedef enum tagCALLTYPE {
1621 CALLTYPE_TOPLEVEL = 1,
1622 CALLTYPE_NESTED = 2,
1623 CALLTYPE_ASYNC = 3,
1624 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1625 CALLTYPE_ASYNC_CALLPENDING = 5
1626 } CALLTYPE;
1627
1628 typedef enum tagSERVERCALL {
1629 SERVERCALL_ISHANDLED = 0,
1630 SERVERCALL_REJECTED = 1,
1631 SERVERCALL_RETRYLATER = 2
1632 } SERVERCALL;
1633
1634 typedef enum tagPENDINGTYPE {
1635 PENDINGTYPE_TOPLEVEL = 1,
1636 PENDINGTYPE_NESTED = 2
1637 } PENDINGTYPE;
1638
1639 typedef enum tagPENDINGMSG {
1640 PENDINGMSG_CANCELCALL = 0,
1641 PENDINGMSG_WAITNOPROCESS = 1,
1642 PENDINGMSG_WAITDEFPROCESS = 2
1643 } PENDINGMSG;
1644
1645 typedef struct tagINTERFACEINFO {
1646 IUnknown *pUnk;
1647 IID iid;
1648 WORD wMethod;
1649 } INTERFACEINFO, *LPINTERFACEINFO;
1650
Serge S. Spiridonoffe3c8afe2004-12-17 18:55:02 +00001651 DWORD HandleInComingCall(
Ove Kaaven9a580d92002-12-19 22:15:24 +00001652 [in] DWORD dwCallType,
1653 [in] HTASK htaskCaller,
1654 [in] DWORD dwTickCount,
1655 [in] LPINTERFACEINFO lpInterfaceInfo);
1656
1657 DWORD RetryRejectedCall(
1658 [in] HTASK htaskCallee,
1659 [in] DWORD dwTickCount,
1660 [in] DWORD dwRejectType);
1661
1662 DWORD MessagePending(
1663 [in] HTASK htaskCallee,
1664 [in] DWORD dwTickCount,
1665 [in] DWORD dwPendingType);
1666}
1667
1668[
1669 local,
1670 object,
1671 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
1672]
1673interface IRpcChannelBuffer : IUnknown
1674{
1675 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
1676
1677 typedef unsigned long RPCOLEDATAREP;
1678
1679 typedef struct tagRPCOLEMESSAGE {
1680 void *reserved1;
1681 RPCOLEDATAREP dataRepresentation;
1682 void *Buffer;
1683 ULONG cbBuffer;
1684 ULONG iMethod;
1685 void *reserved2[5];
1686 ULONG rpcFlags;
1687 } RPCOLEMESSAGE;
1688
1689 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
1690
1691 HRESULT GetBuffer(
1692 [in] RPCOLEMESSAGE *pMessage,
1693 [in] REFIID riid);
1694
1695 HRESULT SendReceive(
1696 [in,out] RPCOLEMESSAGE *pMessage,
1697 [out] ULONG *pStatus);
1698
1699 HRESULT FreeBuffer(
1700 [in] RPCOLEMESSAGE *pMessage);
1701
1702 HRESULT GetDestCtx(
1703 [out] DWORD *pdwDestContext,
1704 [out] void **ppvDestContext);
1705
1706 HRESULT IsConnected();
1707}
1708
1709[
1710 local,
1711 object,
1712 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
1713]
1714interface IRpcChannelBuffer2 : IRpcChannelBuffer
1715{
1716 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
1717
1718 HRESULT GetProtocolVersion(
1719 [in,out] DWORD *pdwVersion);
1720}
1721
1722[
1723 local,
1724 object,
1725 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
1726]
1727interface IRpcChannelBuffer3 : IRpcChannelBuffer2
1728{
1729 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
1730
1731 HRESULT Send(
1732 [in,out] RPCOLEMESSAGE *pMsg,
1733 [out] ULONG *pulStatus);
1734
1735 HRESULT Receive(
1736 [in,out] RPCOLEMESSAGE *pMsg,
1737 [in] ULONG ulSize,
1738 [out] ULONG *pulStatus);
1739
1740 HRESULT Cancel(
1741 [in] RPCOLEMESSAGE *pMsg);
1742
1743 HRESULT GetCallContext(
1744 [in] RPCOLEMESSAGE *pMsg,
1745 [in] REFIID riid,
1746 [out] void **pInterface);
1747
1748 HRESULT GetDestCtxEx(
1749 [in] RPCOLEMESSAGE *pMsg,
1750 [out] DWORD *pdwDestContext,
1751 [out] void **ppvDestContext);
1752
1753 HRESULT GetState(
1754 [in] RPCOLEMESSAGE *pMsg,
1755 [out] DWORD *pState);
1756
1757 HRESULT RegisterAsync(
1758 [in] RPCOLEMESSAGE *pMsg,
1759 [in] IAsyncManager *pAsyncMgr);
1760}
1761
1762[
Robert Shearman35dbc142005-08-25 09:50:55 +00001763 local,
1764 object,
1765 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
1766 pointer_default(unique)
1767]
1768interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
1769{
1770 HRESULT Send(
1771 [in, out] RPCOLEMESSAGE *pMsg,
1772 [in] ISynchronize *pSync,
1773 [out] ULONG *pulStatus);
1774
1775 HRESULT Receive(
1776 [in, out] RPCOLEMESSAGE *pMsg,
1777 [out] ULONG *pulStatus);
1778
1779 HRESULT GetDestCtxEx(
1780 [in] RPCOLEMESSAGE *pMsg,
1781 [out] DWORD *pdwDestContext,
1782 [out] void **ppvDestContext);
1783};
1784
1785[
1786 local,
1787 object,
1788 uuid(58a08519-24c8-4935-b482-3fd823333a4f)
1789]
1790interface IRpcSyntaxNegotiate : IUnknown
1791{
1792 HRESULT NegotiateSyntax(
1793 [in, out] RPCOLEMESSAGE *pMsg);
1794}
1795
1796[
Ove Kaaven9a580d92002-12-19 22:15:24 +00001797 local,
1798 object,
1799 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
1800]
1801interface IRpcProxyBuffer : IUnknown
1802{
1803 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
1804
1805 HRESULT Connect(
1806 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
1807
1808 void Disconnect();
1809}
1810
1811[
1812 local,
1813 object,
1814 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
1815]
1816interface IRpcStubBuffer : IUnknown
1817{
1818 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
1819
1820 HRESULT Connect(
1821 [in] IUnknown *pUnkServer);
1822
1823 void Disconnect();
1824
1825 HRESULT Invoke(
1826 [in] RPCOLEMESSAGE *_prpcmsg,
1827 [in] IRpcChannelBuffer *_pRpcChannelBuffer);
1828
1829 IRpcStubBuffer *IsIIDSupported(
1830 [in] REFIID riid);
1831
1832 ULONG CountRefs();
1833
1834 HRESULT DebugServerQueryInterface(
1835 void **ppv);
1836
1837 void DebugServerRelease(
1838 void *pv);
1839}
1840
1841[
1842 local,
1843 object,
1844 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1845]
1846interface IPSFactoryBuffer : IUnknown
1847{
1848 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
1849
1850 HRESULT CreateProxy(
1851 [in] IUnknown *pUnkOuter,
1852 [in] REFIID riid,
1853 [out] IRpcProxyBuffer **ppProxy,
1854 [out] void **ppv);
1855
1856 HRESULT CreateStub(
1857 [in] REFIID riid,
1858 [in, unique] IUnknown *pUnkServer,
1859 [out] IRpcStubBuffer **ppStub);
1860}
1861
1862[
1863 local,
1864 object,
1865 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1866]
1867interface IChannelHook : IUnknown
1868{
1869 typedef [unique] IChannelHook *LPCHANNELHOOK;
1870
1871 typedef struct SChannelHookCallInfo {
1872 IID iid;
1873 DWORD cbSize;
1874 GUID uCausality;
1875 DWORD dwServerPid;
1876 DWORD iMethod;
1877 void *pObject;
1878 } SChannelHookCallInfo;
1879
1880 void ClientGetSize(
1881 [in] REFGUID uExtent,
1882 [in] REFIID riid,
1883 [out] ULONG *pDataSize);
1884
1885 void ClientFillBuffer(
1886 [in] REFGUID uExtent,
1887 [in] REFIID riid,
1888 [in, out] ULONG *pDataSize,
1889 [in] void *pDataBuffer);
1890
1891 void ClientNotify(
1892 [in] REFGUID uExtent,
1893 [in] REFIID riid,
1894 [in] ULONG cbDataSize,
1895 [in] void *pDataBuffer,
1896 [in] DWORD lDataRep,
1897 [in] HRESULT hrFault);
1898
1899 void ServerNotify(
1900 [in] REFGUID uExtent,
1901 [in] REFIID riid,
1902 [in] ULONG cbDataSize,
1903 [in] void *pDataBuffer,
1904 [in] DWORD lDataRep);
1905
1906 void ServerGetSize(
1907 [in] REFGUID uExtent,
1908 [in] REFIID riid,
1909 [in] HRESULT hrFault,
1910 [out] ULONG *pDataSize);
1911
1912 void ServerFillBuffer(
1913 [in] REFGUID uExtent,
1914 [in] REFIID riid,
1915 [in, out] ULONG *pDataSize,
1916 [in] void *pDataBuffer,
1917 [in] HRESULT hrFault );
1918}
1919
Francois Gouget83755cc2004-09-09 19:23:19 +00001920extern const FMTID FMTID_SummaryInformation;
1921extern const FMTID FMTID_DocSummaryInformation;
1922extern const FMTID FMTID_UserDefinedProperties;
Ove Kaaven9a580d92002-12-19 22:15:24 +00001923
Ove Kaaven9a580d92002-12-19 22:15:24 +00001924
1925/******************** Connection Points ********************/
1926/* FIXME */
1927
1928/******************** DCOM ********************/
1929
1930[
1931 local,
1932 object,
1933 uuid(0000013D-0000-0000-C000-000000000046)
1934]
1935interface IClientSecurity : IUnknown
1936{
1937 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
1938 DWORD dwAuthnSvc;
1939 DWORD dwAuthzSvc;
1940 OLECHAR *pPrincipalName;
1941 HRESULT hr;
1942 } SOLE_AUTHENTICATION_SERVICE;
1943
1944 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1945
1946 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
1947 EOAC_NONE = 0x0,
1948 EOAC_MUTUAL_AUTH = 0x1,
1949 EOAC_CLOAKING = 0x10,
1950 EOAC_SECURE_REFS = 0x2,
1951 EOAC_ACCESS_CONTROL = 0x4,
1952 EOAC_APPID = 0x8
1953 } EOLE_AUTHENTICATION_CAPABILITIES;
1954
1955 HRESULT QueryBlanket(
1956 [in] IUnknown *pProxy,
1957 [out] DWORD *pAuthnSvc,
1958 [out] DWORD *pAuthzSvc,
1959 [out] OLECHAR **pServerPrincName,
1960 [out] DWORD *pAuthnLevel,
1961 [out] DWORD *pImpLevel,
1962 [out] void **pAuthInfo,
1963 [out] DWORD *pCapabilites);
1964
1965 HRESULT SetBlanket(
1966 [in] IUnknown *pProxy,
1967 [in] DWORD AuthnSvc,
1968 [in] DWORD AuthzSvc,
1969 [in] OLECHAR *pServerPrincName,
1970 [in] DWORD AuthnLevel,
1971 [in] DWORD ImpLevel,
1972 [in] void *pAuthInfo,
1973 [in] DWORD Capabilities);
1974
1975 HRESULT CopyProxy(
1976 [in] IUnknown *pProxy,
1977 [out] IUnknown **ppCopy);
1978}
1979
1980[
1981 local,
1982 object,
1983 uuid(0000013E-0000-0000-C000-000000000046)
1984]
1985interface IServerSecurity : IUnknown
1986{
1987 HRESULT QueryBlanket(
1988 [out] DWORD *pAuthnSvc,
1989 [out] DWORD *pAuthzSvc,
1990 [out] OLECHAR **pServerPrincName,
1991 [out] DWORD *pAuthnLevel,
1992 [out] DWORD *pImpLevel,
1993 [out] void **pPrivs,
1994 [out] DWORD *pCapabilities);
1995
1996 HRESULT ImpersonateClient();
1997
1998 HRESULT RevertToSelf();
1999
2000 BOOL IsImpersonating();
2001}
2002
2003[
2004 local,
2005 object,
2006 uuid(00000024-0000-0000-C000-000000000046)
2007]
2008interface IAsyncSetup : IUnknown
2009{
2010 HRESULT GetAsyncManager(
2011 [in] REFIID riid,
2012 [in] IUnknown *pOuter,
2013 [in] DWORD dwFlags,
2014 [out] IUnknown **ppInner,
2015 [out] IAsyncManager **ppAsyncMgr);
2016}
2017
2018[
Robert Shearman35dbc142005-08-25 09:50:55 +00002019 object,
2020 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
2021]
2022interface IDirectWriterLock : IUnknown
2023{
2024 HRESULT WaitForWriteAccess(
2025 [in] DWORD dwTimeout);
2026
2027 HRESULT ReleaseWriteAccess();
2028
2029 HRESULT HaveWriteAccess();
2030}
2031
2032[
2033 object,
2034 uuid(00000030-0000-0000-C000-000000000046)
2035]
2036
2037interface ISynchronize : IUnknown
2038{
2039 HRESULT Wait(
2040 [in] DWORD dwFlags,
2041 [in] DWORD dwMilliseconds);
2042
2043 HRESULT Signal();
2044
2045 HRESULT Reset();
2046}
2047
2048
2049[
2050 local,
2051 object,
2052 uuid(00000031-0000-0000-C000-000000000046)
2053]
2054interface ISynchronizeHandle : IUnknown
2055{
2056 HRESULT GetHandle(
2057 [out] HANDLE *ph);
2058}
2059
2060
2061[
2062 local,
2063 object,
2064 uuid(00000032-0000-0000-C000-000000000046)
2065]
2066interface ISynchronizeEvent : ISynchronizeHandle
2067{
2068 HRESULT SetEventHandle(
2069 [in] HANDLE *ph);
2070}
2071
2072
2073[
2074 local,
2075 object,
2076 uuid(00000033-0000-0000-C000-000000000046)
2077]
2078interface ISynchronizeContainer : IUnknown
2079{
2080 HRESULT AddSynchronize(
2081 [in] ISynchronize *pSync);
2082
2083 HRESULT WaitMultiple(
2084 [in] DWORD dwFlags,
2085 [in] DWORD dwTimeOut,
2086 [out] ISynchronize **ppSync);
2087}
2088
2089[
2090 local,
2091 object,
2092 uuid(00000025-0000-0000-C000-000000000046)
2093]
2094interface ISynchronizeMutex : ISynchronize
2095{
2096 HRESULT ReleaseMutex();
2097}
2098
2099[
2100 local,
2101 object,
2102 uuid(00000029-0000-0000-C000-000000000046)
2103]
2104
2105interface ICancelMethodCalls : IUnknown
2106{
2107 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2108
2109 HRESULT Cancel(
2110 [in] ULONG ulSeconds);
2111
2112 HRESULT TestCancel();
2113}
2114
2115[
Ove Kaaven9a580d92002-12-19 22:15:24 +00002116 local,
2117 object,
2118 uuid(0000002A-0000-0000-C000-000000000046)
2119]
2120interface IAsyncManager : IUnknown
2121{
2122 typedef enum tagDCOM_CALL_STATE {
2123 DCOM_NONE = 0,
2124 DCOM_CALL_COMPLETE = 1,
2125 DCOM_CALL_CANCELED = 2
2126 } DCOM_CALL_STATE;
2127
2128 HRESULT CompleteCall(
2129 [in] HRESULT Result);
Robert Shearman35dbc142005-08-25 09:50:55 +00002130
Ove Kaaven9a580d92002-12-19 22:15:24 +00002131 HRESULT GetCallContext(
2132 [in] REFIID riid,
2133 [out] void **pInterface);
Robert Shearman35dbc142005-08-25 09:50:55 +00002134
Ove Kaaven9a580d92002-12-19 22:15:24 +00002135 HRESULT GetState(
2136 [out] ULONG *pulStateFlags);
2137}
Robert Shearman35dbc142005-08-25 09:50:55 +00002138
2139[
2140 local,
2141 object,
2142 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
2143 pointer_default(unique)
2144]
2145interface ICallFactory : IUnknown
2146{
2147 HRESULT CreateCall(
2148 [in] REFIID riid,
2149 [in] IUnknown *pCtrlUnk,
2150 [in] REFIID riid2,
2151 [out, iid_is(riid2)] IUnknown **ppv);
2152}
2153
2154[
2155 local,
2156 object,
2157 uuid(00000144-0000-0000-C000-000000000046)
2158]
2159interface IRpcOptions : IUnknown
2160{
2161 HRESULT Set(
2162 [in] IUnknown *pPrx,
2163 [in] DWORD dwProperty,
2164 [in] ULONG_PTR dwValue);
2165
2166 HRESULT Query(
2167 [in] IUnknown *pPrx,
2168 [in] DWORD dwProperty,
2169 [out] ULONG_PTR *pdwValue);
2170}
2171
2172enum {
2173 COMBND_RPCTIMEOUT = 1,
2174 COMBND_SERVER_LOCALITY = 2
2175};
2176
2177enum {
2178 SERVER_LOCALITY_PROCESS_LOCAL = 0,
2179 SERVER_LOCALITY_MACHINE_LOCAL = 1,
2180 SERVER_LOCALITY_REMOTE = 2
2181};
2182
2183[
2184 local,
2185 object,
2186 uuid(00000149-0000-0000-C000-000000000046),
2187 pointer_default(unique)
2188]
2189interface IRpcHelper : IUnknown
2190{
2191 HRESULT GetDCOMProtocolVersion(
2192 [out] DWORD *pComVersion);
2193
2194 HRESULT GetIIDFromOBJREF(
2195 [in] void *pObjRef,
2196 [out] IID **piid);
2197}
2198
2199[
2200 local,
2201 object,
2202 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
2203]
2204interface IReleaseMarshalBuffers : IUnknown
2205{
2206 HRESULT ReleaseMarshalBuffer(
2207 [in] RPCOLEMESSAGE *pMsg,
2208 [in] DWORD dwFlags,
2209 [in, unique] IUnknown *pChnl);
2210}
2211
2212[
2213 local,
2214 object,
2215 uuid(0000002B-0000-0000-C000-000000000046)
2216]
2217interface IWaitMultiple : IUnknown
2218{
2219 HRESULT WaitMultiple(
2220 [in] DWORD timeout,
2221 [out] ISynchronize **pSync);
2222 HRESULT AddSynchronize(
2223 [in] ISynchronize *pSync);
2224}
2225
2226
2227[
2228 object,
2229 uuid(00000026-0000-0000-C000-000000000046)
2230]
2231interface IUrlMon : IUnknown
2232{
2233 HRESULT AsyncGetClassBits(
2234 [in] REFCLSID rclsid,
2235 [in, unique] LPCWSTR pszTYPE,
2236 [in, unique] LPCWSTR pszExt,
2237 [in] DWORD dwFileVersionMS,
2238 [in] DWORD dwFileVersionLS,
2239 [in, unique] LPCWSTR pszCodeBase,
2240 [in] IBindCtx *pbc,
2241 [in] DWORD dwClassContext,
2242 [in] REFIID riid,
2243 [in] DWORD flags);
2244}
2245
2246[
2247 local,
2248 object,
2249 uuid(00000145-0000-0000-C000-000000000046)
2250]
2251interface IForegroundTransfer : IUnknown
2252{
2253 HRESULT AllowForegroundTransfer(
2254 [in] void *lpvReserved);
2255}
2256
2257[
2258 local,
2259 object,
2260 uuid(00000147-0000-0000-C000-000000000046)
2261]
2262interface IAddrTrackingControl : IUnknown
2263{
2264 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
2265
2266 HRESULT EnableCOMDynamicAddrTracking();
2267 HRESULT DisableCOMDynamicAddrTracking();
2268};
2269
2270[
2271 local,
2272 object,
2273 uuid(00000148-0000-0000-C000-000000000046)
2274]
2275interface IAddrExclusionControl : IUnknown
2276{
2277 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
2278
2279 HRESULT GetCurrentAddrExclusionList(
2280 [in] REFIID riid,
2281 [out, iid_is(riid)] void **ppEnumerator);
2282 HRESULT UpdateAddrExclusionList(
2283 [in] IUnknown *pEnumerator);
2284};
2285
2286typedef enum _APTTYPE {
2287 APTTYPE_CURRENT = -1,
2288 APTTYPE_STA = 0,
2289 APTTYPE_MTA = 1,
2290 APTTYPE_NA = 2,
2291 APTTYPE_MAINSTA = 3
2292} APTTYPE;
2293
2294typedef enum _THDTYPE {
2295 THDTYPE_BLOCKMESSAGES = 0,
2296 THDTYPE_PROCESSMESSAGES = 1
2297} THDTYPE;
2298
2299[
2300 local,
2301 object,
2302 uuid(000001ce-0000-0000-C000-000000000046),
2303 pointer_default(unique)
2304]
2305interface IComThreadingInfo : IUnknown
2306{
2307 HRESULT GetCurrentApartmentType(
2308 [out] APTTYPE *pAptType);
2309 HRESULT GetCurrentThreadType(
2310 [out] THDTYPE *pThreadType);
2311 HRESULT GetCurrentLogicalThreadId(
2312 [out] GUID *pguidLogicalThreadId);
2313 HRESULT SetCurrentLogicalThreadId(
2314 [in] REFGUID rguid);
2315};
2316
2317
2318[
2319 object,
2320 pointer_default(unique),
2321 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
2322]
2323interface IProcessInitControl : IUnknown
2324{
2325 HRESULT ResetInitializerTimeout(
2326 [in] DWORD dwSecondsRemaining);
2327};
2328
2329[
2330 local,
2331 object,
2332 uuid(00000034-0000-0000-C000-000000000046),
2333 pointer_default(unique)
2334]
2335interface IInitializeSpy : IUnknown
2336{
2337 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
2338
2339 HRESULT PreInitialize(
2340 [in] DWORD dwCoInit,
2341 [in] DWORD dwCurThreadAptRefs);
2342
2343 HRESULT PostInitialize(
2344 [in] HRESULT hrCoInit,
2345 [in] DWORD dwCoInit,
2346 [in] DWORD dwNewThreadAptRefs);
2347
2348 HRESULT PreUninitialize(
2349 [in] DWORD dwCurThreadAptRefs);
2350
2351 HRESULT PostUninitialize(
2352 [in] DWORD dwNewThreadAptRefs);
2353};
2354
2355[
2356 object,
2357 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
2358]
2359interface IThumbnailExtractor : IUnknown
2360{
2361 HRESULT ExtractThumbnail(
2362 [in] IStorage *pStg,
2363 [in] ULONG ulLength,
2364 [in] ULONG ulHeight,
2365 [out] ULONG *pulOutputLength,
2366 [out] ULONG *pulOutputHeight,
2367 [out] HBITMAP *phOutputBitmap);
2368
2369
2370 HRESULT OnFileUpdated(
2371 [in] IStorage *pStg);
2372}