dplayx: Map global memory anywhere if the standard address is unavailable.
[wine.git] / include / objidl.idl
blob7576a686aeb901c886318705a8d9543435a8b5e8
1 /*
2 * Copyright 2002 Ove Kaaven
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef DO_NO_IMPORTS
20 import "unknwn.idl";
21 #define DO_NO_IMPORTS
22 #define OBJIDL_UNDEF_DO_NO_IMPORTS
23 #endif
25 #include "objidlbase.idl"
26 #ifdef OBJIDL_UNDEF_DO_NO_IMPORTS
27 #undef DO_NO_IMPORTS
28 #endif
30 interface IRunningObjectTable;
31 interface IMoniker;
32 interface IAdviseSink;
35 local,
36 object,
37 uuid(0000001d-0000-0000-C000-000000000046)
39 interface IMallocSpy : IUnknown
41 typedef [unique] IMallocSpy *LPMALLOCSPY;
43 SIZE_T PreAlloc(
44 [in] SIZE_T cbRequest);
46 LPVOID PostAlloc(
47 [in] LPVOID pActual);
49 LPVOID PreFree(
50 [in] LPVOID pRequest,
51 [in] BOOL fSpyed);
53 void PostFree(
54 [in] BOOL fSpyed);
56 SIZE_T PreRealloc(
57 [in] LPVOID pRequest,
58 [in] SIZE_T cbRequest,
59 [out] LPVOID *ppNewRequest,
60 [in] BOOL fSpyed);
62 LPVOID PostRealloc(
63 [in] LPVOID pActual,
64 [in] BOOL fSpyed);
66 LPVOID PreGetSize(
67 [in] LPVOID pRequest,
68 [in] BOOL fSpyed);
70 SIZE_T PostGetSize(
71 [in] SIZE_T cbActual,
72 [in] BOOL fSpyed);
74 LPVOID PreDidAlloc(
75 [in] LPVOID pRequest,
76 [in] BOOL fSpyed);
78 int PostDidAlloc(
79 [in] LPVOID pRequest,
80 [in] BOOL fSpyed,
81 [in] int fActual);
83 void PreHeapMinimize();
85 void PostHeapMinimize();
88 /******************** Monikers ********************/
91 object,
92 uuid(0000000e-0000-0000-C000-000000000046),
93 pointer_default(unique)
95 interface IBindCtx : IUnknown
97 typedef [unique] IBindCtx *LPBINDCTX;
98 typedef [unique] IBindCtx *LPBC;
100 typedef struct tagBIND_OPTS {
101 DWORD cbStruct;
102 DWORD grfFlags;
103 DWORD grfMode;
104 DWORD dwTickCountDeadline;
105 } BIND_OPTS, *LPBIND_OPTS;
107 /* FIXME: C++ crap */
108 typedef struct tagBIND_OPTS2 {
109 DWORD cbStruct;
110 DWORD grfFlags;
111 DWORD grfMode;
112 DWORD dwTickCountDeadline;
113 DWORD dwTrackFlags;
114 DWORD dwClassContext;
115 LCID locale;
116 COSERVERINFO *pServerInfo;
117 } BIND_OPTS2, *LPBIND_OPTS2;
119 typedef struct tagBIND_OPTS3 {
120 DWORD cbStruct;
121 DWORD grfFlags;
122 DWORD grfMode;
123 DWORD dwTickCountDeadline;
124 DWORD dwTrackFlags;
125 DWORD dwClassContext;
126 LCID locale;
127 COSERVERINFO *pServerInfo;
128 HWND hwnd;
129 } BIND_OPTS3, *LPBIND_OPTS3;
131 typedef enum tagBIND_FLAGS {
132 BIND_MAYBOTHERUSER = 1,
133 BIND_JUSTTESTEXISTENCE = 2
134 } BIND_FLAGS;
136 HRESULT RegisterObjectBound(
137 [in, unique] IUnknown *punk);
139 HRESULT RevokeObjectBound(
140 [in, unique] IUnknown *punk);
142 HRESULT ReleaseBoundObjects();
144 [local]
145 HRESULT SetBindOptions(
146 [in] BIND_OPTS *pbindopts);
148 [call_as(SetBindOptions)]
149 HRESULT RemoteSetBindOptions(
150 [in] BIND_OPTS2 *pbindopts);
152 [local]
153 HRESULT GetBindOptions(
154 [in, out] BIND_OPTS *pbindopts);
156 [call_as(GetBindOptions)]
157 HRESULT RemoteGetBindOptions(
158 [in, out] BIND_OPTS2 *pbindopts);
160 HRESULT GetRunningObjectTable(
161 [out] IRunningObjectTable **pprot);
163 HRESULT RegisterObjectParam(
164 [in] LPOLESTR pszKey,
165 [in, unique] IUnknown *punk);
167 HRESULT GetObjectParam(
168 [in] LPOLESTR pszKey,
169 [out] IUnknown **ppunk);
171 HRESULT EnumObjectParam(
172 [out] IEnumString **ppenum);
174 HRESULT RevokeObjectParam(
175 [in] LPOLESTR pszKey);
179 object,
180 uuid(00000102-0000-0000-C000-000000000046),
181 pointer_default(unique)
183 interface IEnumMoniker : IUnknown
185 typedef [unique] IEnumMoniker *LPENUMMONIKER;
187 [local]
188 HRESULT Next(
189 [in] ULONG celt,
190 [out, size_is(celt), length_is(*pceltFetched)]
191 IMoniker **rgelt,
192 [out] ULONG *pceltFetched);
194 [call_as(Next)]
195 HRESULT RemoteNext(
196 [in] ULONG celt,
197 [out, size_is(celt), length_is(*pceltFetched)]
198 IMoniker **rgelt,
199 [out] ULONG *pceltFetched);
201 HRESULT Skip(
202 [in] ULONG celt);
204 HRESULT Reset();
206 HRESULT Clone(
207 [out] IEnumMoniker **ppenum);
211 object,
212 uuid(00000126-0000-0000-C000-000000000046)
214 interface IRunnableObject : IUnknown
216 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
218 HRESULT GetRunningClass(
219 [out] LPCLSID lpClsid);
221 HRESULT Run(
222 [in] LPBINDCTX pbc);
224 [local]
225 BOOL IsRunning();
227 [call_as(IsRunning)]
228 HRESULT RemoteIsRunning();
230 HRESULT LockRunning(
231 [in] BOOL fLock,
232 [in] BOOL fLastUnlockCloses);
234 HRESULT SetContainedObject(
235 [in] BOOL fContained);
238 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
239 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
240 * but GetObject is used as a valid method name below, so we have
241 * to undefine it in that case */
242 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
243 cpp_quote("#undef GetObject")
244 cpp_quote("#endif")
247 object,
248 uuid(00000010-0000-0000-C000-000000000046)
250 interface IRunningObjectTable : IUnknown
252 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
254 HRESULT Register(
255 [in] DWORD grfFlags,
256 [in, unique] IUnknown *punkObject,
257 [in, unique] IMoniker *pmkObjectName,
258 [out] DWORD *pdwRegister);
260 HRESULT Revoke(
261 [in] DWORD dwRegister);
263 HRESULT IsRunning(
264 [in, unique] IMoniker *pmkObjectName);
266 HRESULT GetObject(
267 [in, unique] IMoniker *pmkObjectName,
268 [out] IUnknown **ppunkObject);
270 HRESULT NoteChangeTime(
271 [in] DWORD dwRegister,
272 [in] FILETIME *pfiletime);
274 HRESULT GetTimeOfLastChange(
275 [in, unique] IMoniker *pmkObjectName,
276 [out] FILETIME *pfiletime);
278 HRESULT EnumRunning(
279 [out] IEnumMoniker **ppenumMoniker);
283 object,
284 uuid(0000010c-0000-0000-C000-000000000046)
286 interface IPersist : IUnknown
288 typedef [unique] IPersist *LPPERSIST;
290 HRESULT GetClassID(
291 [out] CLSID *pClassID);
295 object,
296 uuid(00000109-0000-0000-C000-000000000046),
297 pointer_default(unique)
299 interface IPersistStream : IPersist
301 typedef [unique] IPersistStream *LPPERSISTSTREAM;
303 HRESULT IsDirty();
305 HRESULT Load(
306 [in, unique] IStream *pStm);
308 HRESULT Save(
309 [in, unique] IStream *pStm,
310 [in] BOOL fClearDirty);
312 HRESULT GetSizeMax(
313 [out] ULARGE_INTEGER *pcbSize);
317 object,
318 uuid(0000000f-0000-0000-C000-000000000046),
319 pointer_default(unique)
321 interface IMoniker : IPersistStream
323 typedef [unique] IMoniker *LPMONIKER;
325 typedef enum tagMKSYS {
326 MKSYS_NONE = 0,
327 MKSYS_GENERICCOMPOSITE = 1,
328 MKSYS_FILEMONIKER = 2,
329 MKSYS_ANTIMONIKER = 3,
330 MKSYS_ITEMMONIKER = 4,
331 MKSYS_POINTERMONIKER = 5,
332 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
333 MKSYS_CLASSMONIKER = 7
334 } MKSYS;
336 typedef [v1_enum] enum tagMKREDUCE {
337 MKRREDUCE_ONE = 3 << 16,
338 MKRREDUCE_TOUSER = 2 << 16,
339 MKRREDUCE_THROUGHUSER = 1 << 16,
340 MKRREDUCE_ALL = 0
341 } MKRREDUCE;
343 [local]
344 HRESULT BindToObject(
345 [in, unique] IBindCtx *pbc,
346 [in, unique] IMoniker *pmkToLeft,
347 [in] REFIID riidResult,
348 [out, iid_is(riidResult)] void **ppvResult);
350 [call_as(BindToObject)]
351 HRESULT RemoteBindToObject(
352 [in, unique] IBindCtx *pbc,
353 [in, unique] IMoniker *pmkToLeft,
354 [in] REFIID riidResult,
355 [out, iid_is(riidResult)] IUnknown **ppvResult);
357 [local]
358 HRESULT BindToStorage(
359 [in, unique] IBindCtx *pbc,
360 [in, unique] IMoniker *pmkToLeft,
361 [in] REFIID riid,
362 [out, iid_is(riid)] void **ppvObj);
364 [call_as(BindToStorage)]
365 HRESULT RemoteBindToStorage(
366 [in, unique] IBindCtx *pbc,
367 [in, unique] IMoniker *pmkToLeft,
368 [in] REFIID riid,
369 [out, iid_is(riid)] IUnknown **ppvObj);
371 HRESULT Reduce(
372 [in, unique] IBindCtx *pbc,
373 [in] DWORD dwReduceHowFar,
374 [in, out, unique] IMoniker **ppmkToLeft,
375 [out] IMoniker **ppmkReduced);
377 HRESULT ComposeWith(
378 [in, unique] IMoniker *pmkRight,
379 [in] BOOL fOnlyIfNotGeneric,
380 [out] IMoniker **ppmkComposite);
382 HRESULT Enum(
383 [in] BOOL fForward,
384 [out] IEnumMoniker **ppenumMoniker);
386 HRESULT IsEqual(
387 [in, unique] IMoniker *pmkOtherMoniker);
389 HRESULT Hash(
390 [out] DWORD *pdwHash);
392 HRESULT IsRunning(
393 [in, unique] IBindCtx *pbc,
394 [in, unique] IMoniker *pmkToLeft,
395 [in, unique] IMoniker *pmkNewlyRunning);
397 HRESULT GetTimeOfLastChange(
398 [in, unique] IBindCtx *pbc,
399 [in, unique] IMoniker *pmkToLeft,
400 [out] FILETIME *pFileTime);
402 HRESULT Inverse(
403 [out] IMoniker **ppmk);
405 HRESULT CommonPrefixWith(
406 [in, unique] IMoniker *pmkOther,
407 [out] IMoniker **ppmkPrefix);
409 HRESULT RelativePathTo(
410 [in, unique] IMoniker *pmkOther,
411 [out] IMoniker **ppmkRelPath);
413 HRESULT GetDisplayName(
414 [in, unique] IBindCtx *pbc,
415 [in, unique] IMoniker *pmkToLeft,
416 [out] LPOLESTR *ppszDisplayName);
418 HRESULT ParseDisplayName(
419 [in, unique] IBindCtx *pbc,
420 [in, unique] IMoniker *pmkToLeft,
421 [in] LPOLESTR pszDisplayName,
422 [out] ULONG *pchEaten,
423 [out] IMoniker **ppmkOut);
425 HRESULT IsSystemMoniker(
426 [out] DWORD *pdwMksys);
430 object,
431 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
432 pointer_default(unique)
434 interface IROTData : IUnknown
436 HRESULT GetComparisonData(
437 [out, size_is(cbMax)] byte *pbData,
438 [in] ULONG cbMax,
439 [out] ULONG *pcbData);
443 object,
444 uuid(00000140-0000-0000-C000-000000000046)
446 interface IClassActivator : IUnknown
448 HRESULT GetClassObject(
449 [in] REFCLSID rclsid,
450 [in] DWORD dwClassContext,
451 [in] LCID locale,
452 [in] REFIID riid,
453 [out, iid_is(riid)] void **ppv);
457 object,
458 uuid(0000000d-0000-0000-C000-000000000046),
459 pointer_default(unique)
461 interface IEnumSTATSTG : IUnknown
463 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
465 [local]
466 HRESULT Next(
467 [in] ULONG celt,
468 [out, size_is(celt), length_is(*pceltFetched)]
469 STATSTG *rgelt,
470 [out] ULONG *pceltFetched);
472 [call_as(Next)]
473 HRESULT RemoteNext(
474 [in] ULONG celt,
475 [out, size_is(celt), length_is(*pceltFetched)]
476 STATSTG *rgelt,
477 [out] ULONG *pceltFetched);
479 HRESULT Skip(
480 [in] ULONG celt);
482 HRESULT Reset();
484 HRESULT Clone(
485 [out] IEnumSTATSTG **ppenum);
489 object,
490 uuid(0000000b-0000-0000-C000-000000000046),
491 pointer_default(unique)
493 interface IStorage : IUnknown
495 typedef [unique] IStorage *LPSTORAGE;
497 typedef struct tagRemSNB {
498 unsigned long ulCntStr;
499 unsigned long ulCntChar;
500 [size_is(ulCntChar)] OLECHAR rgString[];
501 } RemSNB;
503 typedef [unique] RemSNB *wireSNB;
504 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
506 HRESULT CreateStream(
507 [in] LPCOLESTR pwcsName,
508 [in] DWORD grfMode,
509 [in] DWORD reserved1,
510 [in] DWORD reserved2,
511 [out] IStream **ppstm);
513 [local]
514 HRESULT OpenStream(
515 [in] LPCOLESTR pwcsName,
516 [in, unique] void *reserved1,
517 [in] DWORD grfMode,
518 [in] DWORD reserved2,
519 [out] IStream **ppstm);
521 [call_as(OpenStream)]
522 HRESULT RemoteOpenStream(
523 [in] LPCOLESTR pwcsName,
524 [in] unsigned long cbReserved1,
525 [in, unique, size_is(cbReserved1)] byte *reserved1,
526 [in] DWORD grfMode,
527 [in] DWORD reserved2,
528 [out] IStream **ppstm);
530 HRESULT CreateStorage(
531 [in] LPCOLESTR pwcsName,
532 [in] DWORD grfMode,
533 [in] DWORD dwStgFmt,
534 [in] DWORD reserved2,
535 [out] IStorage **ppstg);
537 HRESULT OpenStorage(
538 [in, unique] LPCOLESTR pwcsName,
539 [in, unique] IStorage *pstgPriority,
540 [in] DWORD grfMode,
541 [in, unique] SNB snbExclude,
542 [in] DWORD reserved,
543 [out] IStorage **ppstg);
545 HRESULT CopyTo(
546 [in] DWORD ciidExclude,
547 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
548 [in, unique] SNB snbExclude,
549 [in, unique] IStorage *pstgDest);
551 HRESULT MoveElementTo(
552 [in] LPCOLESTR pwcsName,
553 [in, unique] IStorage *pstgDest,
554 [in] LPCOLESTR pwcsNewName,
555 [in] DWORD grfFlags);
557 HRESULT Commit(
558 [in] DWORD grfCommitFlags);
560 HRESULT Revert();
562 [local]
563 HRESULT EnumElements(
564 [in] DWORD reserved1,
565 [in, unique, size_is(1)] void *reserved2,
566 [in] DWORD reserved3,
567 [out] IEnumSTATSTG **ppenum);
569 [call_as(EnumElements)]
570 HRESULT RemoteEnumElements(
571 [in] DWORD reserved1,
572 [in] unsigned long cbReserved2,
573 [in, unique, size_is(cbReserved2)] byte *reserved2,
574 [in] DWORD reserved3,
575 [out] IEnumSTATSTG **ppenum);
577 HRESULT DestroyElement(
578 [in] LPCOLESTR pwcsName);
580 HRESULT RenameElement(
581 [in] LPCOLESTR pwcsOldName,
582 [in] LPCOLESTR pwcsNewName);
584 HRESULT SetElementTimes(
585 [in, unique] LPCOLESTR pwcsName,
586 [in, unique] const FILETIME *pctime,
587 [in, unique] const FILETIME *patime,
588 [in, unique] const FILETIME *pmtime);
590 HRESULT SetClass(
591 [in] REFCLSID clsid);
593 HRESULT SetStateBits(
594 [in] DWORD grfStateBits,
595 [in] DWORD grfMask);
597 HRESULT Stat(
598 [out] STATSTG *pstatstg,
599 [in] DWORD grfStatFlag);
603 object,
604 uuid(0000010b-0000-0000-C000-000000000046),
605 pointer_default(unique)
607 interface IPersistFile : IPersist
609 typedef [unique] IPersistFile *LPPERSISTFILE;
611 HRESULT IsDirty();
613 HRESULT Load(
614 [in] LPCOLESTR pszFileName,
615 [in] DWORD dwMode);
617 HRESULT Save(
618 [in, unique] LPCOLESTR pszFileName,
619 [in] BOOL fRemember);
621 HRESULT SaveCompleted(
622 [in, unique] LPCOLESTR pszFileName);
624 HRESULT GetCurFile(
625 [out] LPOLESTR *ppszFileName);
629 object,
630 uuid(0000010a-0000-0000-C000-000000000046),
631 pointer_default(unique)
633 interface IPersistStorage : IPersist
635 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
637 HRESULT IsDirty();
639 HRESULT InitNew(
640 [in, unique] IStorage *pStg);
642 HRESULT Load(
643 [in, unique] IStorage *pStg);
645 HRESULT Save(
646 [in, unique] IStorage *pStgSave,
647 [in] BOOL fSameAsLoad);
649 HRESULT SaveCompleted(
650 [in, unique] IStorage *pStgNew);
652 HRESULT HandsOffStorage();
656 object,
657 uuid(00000012-0000-0000-C000-000000000046),
658 pointer_default(unique)
660 interface IRootStorage : IUnknown
662 typedef [unique] IRootStorage *LPROOTSTORAGE;
664 HRESULT SwitchToFile(
665 [in] LPOLESTR pszFile);
669 object,
670 uuid(0000000a-0000-0000-C000-000000000046),
671 pointer_default(unique)
673 interface ILockBytes : IUnknown
675 typedef [unique] ILockBytes *LPLOCKBYTES;
677 [local]
678 HRESULT ReadAt(
679 [in] ULARGE_INTEGER ulOffset,
680 [out, size_is(cb), length_is(*pcbRead)]
681 void *pv,
682 [in] ULONG cb,
683 [out] ULONG *pcbRead);
685 [call_as(ReadAt)]
686 HRESULT RemoteReadAt(
687 [in] ULARGE_INTEGER ulOffset,
688 [out, size_is(cb), length_is(*pcbRead)]
689 byte *pv,
690 [in] ULONG cb,
691 [out] ULONG *pcbRead);
693 [local]
694 HRESULT WriteAt(
695 [in] ULARGE_INTEGER ulOffset,
696 [in, size_is(cb)] const void *pv,
697 [in] ULONG cb,
698 [out] ULONG *pcbWritten);
700 [call_as(WriteAt)]
701 HRESULT RemoteWriteAt(
702 [in] ULARGE_INTEGER ulOffset,
703 [in, size_is(cb)] const byte *pv,
704 [in] ULONG cb,
705 [out] ULONG *pcbWritten);
707 HRESULT Flush();
709 HRESULT SetSize(
710 [in] ULARGE_INTEGER cb);
712 HRESULT LockRegion(
713 [in] ULARGE_INTEGER libOffset,
714 [in] ULARGE_INTEGER cb,
715 [in] DWORD dwLockType);
717 HRESULT UnlockRegion(
718 [in] ULARGE_INTEGER libOffset,
719 [in] ULARGE_INTEGER cb,
720 [in] DWORD dwLockType);
722 HRESULT Stat(
723 [out] STATSTG *pstatstg,
724 [in] DWORD grfStatFlag);
728 object,
729 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
730 pointer_default(unique)
732 interface IFillLockBytes : IUnknown
734 [local]
735 HRESULT FillAppend(
736 [in, size_is(cb)] const void *pv,
737 [in] ULONG cb,
738 [out] ULONG *pcbWritten);
740 [call_as(FillAppend)]
741 HRESULT RemoteFillAppend(
742 [in, size_is(cb)] const byte *pv,
743 [in] ULONG cb,
744 [out] ULONG *pcbWritten);
746 [local]
747 HRESULT FillAt(
748 [in] ULARGE_INTEGER ulOffset,
749 [in, size_is(cb)] const void *pv,
750 [in] ULONG cb,
751 [out] ULONG *pcbWritten);
753 [call_as(FillAt)]
754 HRESULT RemoteFillAt(
755 [in] ULARGE_INTEGER ulOffset,
756 [in, size_is(cb)] const byte *pv,
757 [in] ULONG cb,
758 [out] ULONG *pcbWritten);
760 HRESULT SetFillSize(
761 [in] ULARGE_INTEGER ulSize);
763 HRESULT Terminate(
764 [in] BOOL bCanceled);
768 object,
769 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
770 pointer_default(unique)
772 interface IProgressNotify : IUnknown
774 HRESULT OnProgress(
775 [in] DWORD dwProgressCurrent,
776 [in] DWORD dwProgressMaximum,
777 [in] BOOL fAccurate,
778 [in] BOOL fOwner);
782 local,
783 object,
784 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
785 pointer_default(unique)
787 interface ILayoutStorage : IUnknown
789 typedef struct tagStorageLayout {
790 DWORD LayoutType;
791 OLECHAR *pwcsElementName;
792 LARGE_INTEGER cOffset;
793 LARGE_INTEGER cBytes;
794 } StorageLayout;
796 HRESULT LayoutScript(
797 [in] StorageLayout *pStorageLayout,
798 [in] DWORD nEntries,
799 [in] DWORD glfInterleavedFlag);
801 HRESULT BeginMonitor();
803 HRESULT EndMonitor();
805 HRESULT ReLayoutDocfile(
806 [in] OLECHAR *pwcsNewDfName);
808 HRESULT ReLayoutDocfileOnILockBytes(
809 [in] ILockBytes *pILockBytes);
813 object,
814 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
816 interface IBlockingLock : IUnknown
818 HRESULT Lock(
819 [in] DWORD dwTimeout);
821 HRESULT Unlock();
826 object,
827 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
829 interface ITimeAndNoticeControl : IUnknown
831 HRESULT SuppressChanges(
832 [in] DWORD res1,
833 [in] DWORD res2);
840 object,
841 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
843 interface IOplockStorage: IUnknown
845 HRESULT CreateStorageEx(
846 [in] LPCWSTR pwcsName,
847 [in] DWORD grfMode,
848 [in] DWORD stgfmt,
849 [in] DWORD grfAttrs,
850 [in] REFIID riid,
851 [out, iid_is(riid)] void **ppstgOpen);
853 HRESULT OpenStorageEx(
854 [in] LPCWSTR pwcsName,
855 [in] DWORD grfMode,
856 [in] DWORD stgfmt,
857 [in] DWORD grfAttrs,
858 [in] REFIID riid,
859 [out, iid_is(riid)] void **ppstgOpen);
862 /******************** Data Object ********************/
865 object,
866 uuid(00000103-0000-0000-C000-000000000046),
867 pointer_default(unique)
869 interface IEnumFORMATETC : IUnknown
871 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
873 typedef struct tagDVTARGETDEVICE {
874 DWORD tdSize;
875 WORD tdDriverNameOffset;
876 WORD tdDeviceNameOffset;
877 WORD tdPortNameOffset;
878 WORD tdExtDevmodeOffset;
879 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
880 BYTE tdData[];
881 } DVTARGETDEVICE;
883 typedef CLIPFORMAT *LPCLIPFORMAT;
885 typedef struct tagFORMATETC {
886 CLIPFORMAT cfFormat;
887 [unique] DVTARGETDEVICE *ptd;
888 DWORD dwAspect;
889 LONG lindex;
890 DWORD tymed;
891 } FORMATETC, *LPFORMATETC;
893 [local]
894 HRESULT Next(
895 [in] ULONG celt,
896 [out, size_is(celt), length_is(*pceltFetched)]
897 FORMATETC *rgelt,
898 [out] ULONG *pceltFetched);
900 [call_as(Next)]
901 HRESULT RemoteNext(
902 [in] ULONG celt,
903 [out, size_is(celt), length_is(*pceltFetched)]
904 FORMATETC *rgelt,
905 [out] ULONG *pceltFetched);
907 HRESULT Skip(
908 [in] ULONG celt);
910 HRESULT Reset();
912 HRESULT Clone(
913 [out] IEnumFORMATETC **ppenum);
917 object,
918 uuid(00000105-0000-0000-C000-000000000046),
919 pointer_default(unique)
921 interface IEnumSTATDATA : IUnknown
923 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
925 typedef enum tagADVF {
926 ADVF_NODATA = 1,
927 ADVF_PRIMEFIRST = 2,
928 ADVF_ONLYONCE = 4,
929 ADVF_DATAONSTOP = 64,
930 ADVFCACHE_NOHANDLER = 8,
931 ADVFCACHE_FORCEBUILTIN = 16,
932 ADVFCACHE_ONSAVE = 32
933 } ADVF;
935 typedef struct tagSTATDATA
937 FORMATETC formatetc;
938 DWORD advf;
939 [unique] IAdviseSink *pAdvSink;
940 DWORD dwConnection;
941 } STATDATA, *LPSTATDATA;
943 [local]
944 HRESULT Next(
945 [in] ULONG celt,
946 [out, size_is(celt), length_is(*pceltFetched)]
947 STATDATA *rgelt,
948 [out] ULONG *pceltFetched);
950 [call_as(Next)]
951 HRESULT RemoteNext(
952 [in] ULONG celt,
953 [out, size_is(celt), length_is(*pceltFetched)]
954 STATDATA *rgelt,
955 [out] ULONG *pceltFetched);
957 HRESULT Skip(
958 [in] ULONG celt);
960 HRESULT Reset();
962 HRESULT Clone(
963 [out] IEnumSTATDATA **ppenum);
967 object,
968 uuid(0000010f-0000-0000-C000-000000000046),
969 pointer_default(unique)
971 interface IAdviseSink : IUnknown
973 typedef IAdviseSink *LPADVISESINK;
975 typedef [v1_enum] enum tagTYMED {
976 TYMED_HGLOBAL = 1,
977 TYMED_FILE = 2,
978 TYMED_ISTREAM = 4,
979 TYMED_ISTORAGE = 8,
980 TYMED_GDI = 16,
981 TYMED_MFPICT = 32,
982 TYMED_ENHMF = 64,
983 TYMED_NULL = 0
984 } TYMED;
986 typedef struct tagRemSTGMEDIUM {
987 DWORD tymed;
988 DWORD dwHandleType;
989 unsigned long pData;
990 unsigned long pUnkForRelease;
991 unsigned long cbData;
992 [size_is(cbData)] byte data[];
993 } RemSTGMEDIUM;
995 typedef struct tagSTGMEDIUM {
996 DWORD tymed;
997 [switch_is(tymed)] union {
998 [case(TYMED_GDI)] HBITMAP hBitmap;
999 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1000 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1001 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1002 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1003 [case(TYMED_ISTREAM)] IStream *pstm;
1004 [case(TYMED_ISTORAGE)] IStorage *pstg;
1005 [default] ;
1006 } DUMMYUNIONNAME;
1007 [unique] IUnknown *pUnkForRelease;
1008 } uSTGMEDIUM;
1010 /* copied from wingdi.h */
1011 #define OBJ_PEN 1
1012 #define OBJ_BRUSH 2
1013 #define OBJ_DC 3
1014 #define OBJ_METADC 4
1015 #define OBJ_PAL 5
1016 #define OBJ_FONT 6
1017 #define OBJ_BITMAP 7
1018 #define OBJ_REGION 8
1019 #define OBJ_METAFILE 9
1020 #define OBJ_MEMDC 10
1021 #define OBJ_EXTPEN 11
1022 #define OBJ_ENHMETADC 12
1023 #define OBJ_ENHMETAFILE 13
1025 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1026 case OBJ_BITMAP: wireHBITMAP hBitmap;
1027 case OBJ_PAL: wireHPALETTE hPalette;
1028 default: wireHGLOBAL hGeneric;
1029 } GDI_OBJECT;
1031 /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION
1032 * violates the C spec, but is necessary for C++. Avoid C spec violation. */
1033 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1034 cpp_quote("#define _STGMEDIUM_UNION")
1035 cpp_quote("#endif")
1037 typedef struct _userSTGMEDIUM {
1038 union _STGMEDIUM_UNION switch(DWORD tymed) u {
1039 case TYMED_NULL: ;
1040 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1041 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1042 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1043 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1044 case TYMED_FILE: LPOLESTR lpszFileName;
1045 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1046 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1047 } DUMMYUNIONNAME;
1048 IUnknown *pUnkForRelease;
1049 } userSTGMEDIUM;
1051 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1052 cpp_quote("#undef _STGMEDIUM_UNION")
1053 cpp_quote("#endif")
1055 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1056 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1058 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1059 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1061 typedef STGMEDIUM *LPSTGMEDIUM;
1063 typedef struct _userFLAG_STGMEDIUM {
1064 long ContextFlags;
1065 long fPassOwnership;
1066 userSTGMEDIUM Stgmed;
1067 } userFLAG_STGMEDIUM;
1069 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1071 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1072 long ContextFlags;
1073 long fPassOwnership;
1074 STGMEDIUM Stgmed;
1075 } FLAG_STGMEDIUM;
1077 [local]
1078 void OnDataChange(
1079 [in, unique] FORMATETC *pFormatetc,
1080 [in, unique] STGMEDIUM *pStgmed);
1082 [call_as(OnDataChange)]
1083 HRESULT RemoteOnDataChange(
1084 [in, unique] FORMATETC *pFormatetc,
1085 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1087 [local]
1088 void OnViewChange(
1089 [in] DWORD dwAspect,
1090 [in] LONG lindex);
1092 [call_as(OnViewChange)]
1093 HRESULT RemoteOnViewChange(
1094 [in] DWORD dwAspect,
1095 [in] LONG lindex);
1097 [local]
1098 void OnRename(
1099 [in] IMoniker *pmk);
1101 [call_as(OnRename)]
1102 HRESULT RemoteOnRename(
1103 [in] IMoniker *pmk);
1105 [local]
1106 void OnSave();
1108 [call_as(OnSave)]
1109 HRESULT RemoteOnSave();
1111 [local]
1112 void OnClose();
1114 [call_as(OnClose)]
1115 HRESULT RemoteOnClose();
1119 object,
1120 uuid(00000125-0000-0000-C000-000000000046),
1121 pointer_default(unique)
1123 interface IAdviseSink2 : IAdviseSink
1125 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1127 [local]
1128 void OnLinkSrcChange(
1129 [in, unique] IMoniker *pmk);
1131 [call_as(OnLinkSrcChange)]
1132 HRESULT RemoteOnLinkSrcChange(
1133 [in, unique] IMoniker *pmk);
1137 object,
1138 uuid(0000010e-0000-0000-C000-000000000046),
1139 pointer_default(unique)
1141 interface IDataObject : IUnknown
1143 typedef [unique] IDataObject *LPDATAOBJECT;
1145 typedef enum tagDATADIR {
1146 DATADIR_GET = 1,
1147 DATADIR_SET = 2
1148 } DATADIR;
1150 [local]
1151 HRESULT GetData(
1152 [in, unique] FORMATETC *pformatetcIn,
1153 [out] STGMEDIUM *pmedium);
1155 [call_as(GetData)]
1156 HRESULT RemoteGetData(
1157 [in, unique] FORMATETC *pformatetcIn,
1158 [out] STGMEDIUM *pRemoteMedium);
1160 [local]
1161 HRESULT GetDataHere(
1162 [in, unique] FORMATETC *pformatetc,
1163 [in, out] STGMEDIUM *pmedium);
1165 [call_as(GetDataHere)]
1166 HRESULT RemoteGetDataHere(
1167 [in, unique] FORMATETC *pformatetc,
1168 [in, out] STGMEDIUM *pRemoteMedium);
1170 HRESULT QueryGetData(
1171 [in, unique] FORMATETC *pformatetc);
1173 HRESULT GetCanonicalFormatEtc(
1174 [in, unique] FORMATETC *pformatectIn,
1175 [out] FORMATETC *pformatetcOut);
1177 [local]
1178 HRESULT SetData(
1179 [in, unique] FORMATETC *pformatetc,
1180 [in, unique] STGMEDIUM *pmedium,
1181 [in] BOOL fRelease);
1183 [call_as(SetData)]
1184 HRESULT RemoteSetData(
1185 [in, unique] FORMATETC *pformatetc,
1186 [in, unique] FLAG_STGMEDIUM *pmedium,
1187 [in] BOOL fRelease);
1189 HRESULT EnumFormatEtc(
1190 [in] DWORD dwDirection,
1191 [out] IEnumFORMATETC **ppenumFormatEtc);
1193 HRESULT DAdvise(
1194 [in] FORMATETC *pformatetc,
1195 [in] DWORD advf,
1196 [in, unique] IAdviseSink *pAdvSink,
1197 [out] DWORD *pdwConnection);
1199 HRESULT DUnadvise(
1200 [in] DWORD dwConnection);
1202 HRESULT EnumDAdvise(
1203 [out] IEnumSTATDATA **ppenumAdvise);
1207 local,
1208 object,
1209 uuid(00000110-0000-0000-C000-000000000046)
1211 interface IDataAdviseHolder : IUnknown
1213 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1215 HRESULT Advise(
1216 [in, unique] IDataObject *pDataObject,
1217 [in, unique] FORMATETC *pFetc,
1218 [in] DWORD advf,
1219 [in, unique] IAdviseSink *pAdvise,
1220 [out] DWORD *pdwConnection);
1222 HRESULT Unadvise(
1223 [in] DWORD dwConnection);
1225 HRESULT EnumAdvise(
1226 [out] IEnumSTATDATA **ppenumAdvise);
1228 HRESULT SendOnDataChange(
1229 [in, unique] IDataObject *pDataObject,
1230 [in] DWORD dwReserved,
1231 [in] DWORD advf);
1234 /******************** Remoting ********************/
1237 local,
1238 object,
1239 uuid(00000016-0000-0000-C000-000000000046)
1241 interface IMessageFilter : IUnknown
1243 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1245 typedef enum tagCALLTYPE {
1246 CALLTYPE_TOPLEVEL = 1,
1247 CALLTYPE_NESTED = 2,
1248 CALLTYPE_ASYNC = 3,
1249 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1250 CALLTYPE_ASYNC_CALLPENDING = 5
1251 } CALLTYPE;
1253 typedef enum tagSERVERCALL {
1254 SERVERCALL_ISHANDLED = 0,
1255 SERVERCALL_REJECTED = 1,
1256 SERVERCALL_RETRYLATER = 2
1257 } SERVERCALL;
1259 typedef enum tagPENDINGTYPE {
1260 PENDINGTYPE_TOPLEVEL = 1,
1261 PENDINGTYPE_NESTED = 2
1262 } PENDINGTYPE;
1264 typedef enum tagPENDINGMSG {
1265 PENDINGMSG_CANCELCALL = 0,
1266 PENDINGMSG_WAITNOPROCESS = 1,
1267 PENDINGMSG_WAITDEFPROCESS = 2
1268 } PENDINGMSG;
1270 typedef struct tagINTERFACEINFO {
1271 IUnknown *pUnk;
1272 IID iid;
1273 WORD wMethod;
1274 } INTERFACEINFO, *LPINTERFACEINFO;
1276 DWORD HandleInComingCall(
1277 [in] DWORD dwCallType,
1278 [in] HTASK htaskCaller,
1279 [in] DWORD dwTickCount,
1280 [in] LPINTERFACEINFO lpInterfaceInfo);
1282 DWORD RetryRejectedCall(
1283 [in] HTASK htaskCallee,
1284 [in] DWORD dwTickCount,
1285 [in] DWORD dwRejectType);
1287 DWORD MessagePending(
1288 [in] HTASK htaskCallee,
1289 [in] DWORD dwTickCount,
1290 [in] DWORD dwPendingType);
1294 object,
1295 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
1297 interface IDirectWriterLock : IUnknown
1299 HRESULT WaitForWriteAccess(
1300 [in] DWORD dwTimeout);
1302 HRESULT ReleaseWriteAccess();
1304 HRESULT HaveWriteAccess();
1308 object,
1309 uuid(00000026-0000-0000-C000-000000000046)
1311 interface IUrlMon : IUnknown
1313 HRESULT AsyncGetClassBits(
1314 [in] REFCLSID rclsid,
1315 [in, unique] LPCWSTR pszTYPE,
1316 [in, unique] LPCWSTR pszExt,
1317 [in] DWORD dwFileVersionMS,
1318 [in] DWORD dwFileVersionLS,
1319 [in, unique] LPCWSTR pszCodeBase,
1320 [in] IBindCtx *pbc,
1321 [in] DWORD dwClassContext,
1322 [in] REFIID riid,
1323 [in] DWORD flags);
1327 local,
1328 object,
1329 uuid(00000145-0000-0000-C000-000000000046)
1331 interface IForegroundTransfer : IUnknown
1333 HRESULT AllowForegroundTransfer(
1334 [in] void *lpvReserved);
1338 local,
1339 object,
1340 uuid(00000034-0000-0000-C000-000000000046),
1341 pointer_default(unique)
1343 interface IInitializeSpy : IUnknown
1345 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
1347 HRESULT PreInitialize(
1348 [in] DWORD dwCoInit,
1349 [in] DWORD dwCurThreadAptRefs);
1351 HRESULT PostInitialize(
1352 [in] HRESULT hrCoInit,
1353 [in] DWORD dwCoInit,
1354 [in] DWORD dwNewThreadAptRefs);
1356 HRESULT PreUninitialize(
1357 [in] DWORD dwCurThreadAptRefs);
1359 HRESULT PostUninitialize(
1360 [in] DWORD dwNewThreadAptRefs);
1364 object,
1365 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
1367 interface IThumbnailExtractor : IUnknown
1369 HRESULT ExtractThumbnail(
1370 [in] IStorage *pStg,
1371 [in] ULONG ulLength,
1372 [in] ULONG ulHeight,
1373 [out] ULONG *pulOutputLength,
1374 [out] ULONG *pulOutputHeight,
1375 [out] HBITMAP *phOutputBitmap);
1378 HRESULT OnFileUpdated(
1379 [in] IStorage *pStg);
1383 object,
1384 pointer_default(unique),
1385 uuid(947990de-cc28-11d2-a0f7-00805f858fb1)
1387 interface IDummyHICONIncluder : IUnknown
1389 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc);
1393 object,
1394 local,
1395 pointer_default(unique),
1396 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b)
1398 interface IApartmentShutdown : IUnknown
1400 void OnUninitialize([in] UINT64 identifier);