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