ReactOS 0.4.16-dev-1946-g52006dd
objidl.idl
Go to the documentation of this file.
1/*
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
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef DO_NO_IMPORTS
20import "unknwn.idl";
21#define DO_NO_IMPORTS
22#define OBJIDL_UNDEF_DO_NO_IMPORTS
23#endif
24
25#include "objidlbase.idl"
26#ifdef OBJIDL_UNDEF_DO_NO_IMPORTS
27#undef DO_NO_IMPORTS
28#endif
29
30interface IRunningObjectTable;
31interface IMoniker;
32interface IAdviseSink;
33
34[
35 local,
36 object,
37 uuid(0000001d-0000-0000-C000-000000000046)
38]
40{
42
44 [in] SIZE_T cbRequest);
45
47 [in] LPVOID pActual);
48
51 [in] BOOL fSpyed);
52
54 [in] BOOL fSpyed);
55
58 [in] SIZE_T cbRequest,
59 [out] LPVOID *ppNewRequest,
60 [in] BOOL fSpyed);
61
63 [in] LPVOID pActual,
64 [in] BOOL fSpyed);
65
68 [in] BOOL fSpyed);
69
71 [in] SIZE_T cbActual,
72 [in] BOOL fSpyed);
73
76 [in] BOOL fSpyed);
77
80 [in] BOOL fSpyed,
81 [in] int fActual);
82
84
86}
87
88/******************** Monikers ********************/
89
90[
91 object,
92 uuid(0000000e-0000-0000-C000-000000000046),
94]
95interface IBindCtx : IUnknown
96{
98 typedef [unique] IBindCtx *LPBC;
99
100 typedef struct tagBIND_OPTS {
106
107 /* FIXME: C++ crap */
108 typedef struct tagBIND_OPTS2 {
118
119 typedef struct tagBIND_OPTS3 {
130
131 typedef enum tagBIND_FLAGS {
135
137 [in, unique] IUnknown *punk);
138
140 [in, unique] IUnknown *punk);
141
143
144 [local]
146 [in] BIND_OPTS *pbindopts);
147
148 [call_as(SetBindOptions)]
150 [in] BIND_OPTS2 *pbindopts);
151
152 [local]
154 [in, out] BIND_OPTS *pbindopts);
155
156 [call_as(GetBindOptions)]
158 [in, out] BIND_OPTS2 *pbindopts);
159
161 [out] IRunningObjectTable **pprot);
162
164 [in] LPOLESTR pszKey,
165 [in, unique] IUnknown *punk);
166
168 [in] LPOLESTR pszKey,
169 [out] IUnknown **ppunk);
170
172 [out] IEnumString **ppenum);
173
175 [in] LPOLESTR pszKey);
176}
177
178[
179 object,
180 uuid(00000102-0000-0000-C000-000000000046),
182]
184{
186
187 [local]
189 [in] ULONG celt,
190 [out, size_is(celt), length_is(*pceltFetched)]
191 IMoniker **rgelt,
192 [out] ULONG *pceltFetched);
193
194 [call_as(Next)]
196 [in] ULONG celt,
197 [out, size_is(celt), length_is(*pceltFetched)]
198 IMoniker **rgelt,
199 [out] ULONG *pceltFetched);
200
202 [in] ULONG celt);
203
205
207 [out] IEnumMoniker **ppenum);
208}
209
210[
211 object,
212 uuid(00000126-0000-0000-C000-000000000046)
213]
215{
217
219 [out] LPCLSID lpClsid);
220
222 [in] LPBINDCTX pbc);
223
224 [local]
226
227 [call_as(IsRunning)]
229
231 [in] BOOL fLock,
232 [in] BOOL fLastUnlockCloses);
233
235 [in] BOOL fContained);
236}
237
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 */
242cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
243cpp_quote("#undef GetObject")
244cpp_quote("#endif")
245
246[
247 object,
248 uuid(00000010-0000-0000-C000-000000000046)
249]
250interface IRunningObjectTable : IUnknown
251{
252 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
253
254 HRESULT Register(
255 [in] DWORD grfFlags,
256 [in, unique] IUnknown *punkObject,
257 [in, unique] IMoniker *pmkObjectName,
258 [out] DWORD *pdwRegister);
259
260 HRESULT Revoke(
261 [in] DWORD dwRegister);
262
263 HRESULT IsRunning(
264 [in, unique] IMoniker *pmkObjectName);
265
266 HRESULT GetObject(
267 [in, unique] IMoniker *pmkObjectName,
268 [out] IUnknown **ppunkObject);
269
270 HRESULT NoteChangeTime(
271 [in] DWORD dwRegister,
272 [in] FILETIME *pfiletime);
273
274 HRESULT GetTimeOfLastChange(
275 [in, unique] IMoniker *pmkObjectName,
276 [out] FILETIME *pfiletime);
277
278 HRESULT EnumRunning(
279 [out] IEnumMoniker **ppenumMoniker);
280}
281
282[
283 object,
284 uuid(0000010c-0000-0000-C000-000000000046)
285]
286interface IPersist : IUnknown
287{
288 typedef [unique] IPersist *LPPERSIST;
289
290 HRESULT GetClassID(
291 [out] CLSID *pClassID);
292}
293
294[
295 object,
296 uuid(00000109-0000-0000-C000-000000000046),
297 pointer_default(unique)
298]
299interface IPersistStream : IPersist
300{
301 typedef [unique] IPersistStream *LPPERSISTSTREAM;
302
303 HRESULT IsDirty();
304
305 HRESULT Load(
306 [in, unique] IStream *pStm);
307
308 HRESULT Save(
309 [in, unique] IStream *pStm,
310 [in] BOOL fClearDirty);
311
312 HRESULT GetSizeMax(
313 [out] ULARGE_INTEGER *pcbSize);
314}
315
316[
317 object,
318 uuid(0000000f-0000-0000-C000-000000000046),
319 pointer_default(unique)
320]
321interface IMoniker : IPersistStream
322{
323 typedef [unique] IMoniker *LPMONIKER;
324
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_OBJREFMONIKER = 8,
335 MKSYS_SESSIONMONIKER = 9,
336 MKSYS_LUAMONIKER = 10
337 } MKSYS;
338
339 typedef [v1_enum] enum tagMKREDUCE {
340 MKRREDUCE_ONE = 3 << 16,
341 MKRREDUCE_TOUSER = 2 << 16,
342 MKRREDUCE_THROUGHUSER = 1 << 16,
343 MKRREDUCE_ALL = 0
344 } MKRREDUCE;
345
346 [local]
347 HRESULT BindToObject(
348 [in, unique] IBindCtx *pbc,
349 [in, unique] IMoniker *pmkToLeft,
350 [in] REFIID riidResult,
351 [out, iid_is(riidResult)] void **ppvResult);
352
353 [call_as(BindToObject)]
354 HRESULT RemoteBindToObject(
355 [in, unique] IBindCtx *pbc,
356 [in, unique] IMoniker *pmkToLeft,
357 [in] REFIID riidResult,
358 [out, iid_is(riidResult)] IUnknown **ppvResult);
359
360 [local]
361 HRESULT BindToStorage(
362 [in, unique] IBindCtx *pbc,
363 [in, unique] IMoniker *pmkToLeft,
364 [in] REFIID riid,
365 [out, iid_is(riid)] void **ppvObj);
366
367 [call_as(BindToStorage)]
368 HRESULT RemoteBindToStorage(
369 [in, unique] IBindCtx *pbc,
370 [in, unique] IMoniker *pmkToLeft,
371 [in] REFIID riid,
372 [out, iid_is(riid)] IUnknown **ppvObj);
373
374 HRESULT Reduce(
375 [in, unique] IBindCtx *pbc,
376 [in] DWORD dwReduceHowFar,
377 [in, out, unique] IMoniker **ppmkToLeft,
378 [out] IMoniker **ppmkReduced);
379
380 HRESULT ComposeWith(
381 [in, unique] IMoniker *pmkRight,
382 [in] BOOL fOnlyIfNotGeneric,
383 [out] IMoniker **ppmkComposite);
384
385 HRESULT Enum(
386 [in] BOOL fForward,
387 [out] IEnumMoniker **ppenumMoniker);
388
389 HRESULT IsEqual(
390 [in, unique] IMoniker *pmkOtherMoniker);
391
392 HRESULT Hash(
393 [out] DWORD *pdwHash);
394
395 HRESULT IsRunning(
396 [in, unique] IBindCtx *pbc,
397 [in, unique] IMoniker *pmkToLeft,
398 [in, unique] IMoniker *pmkNewlyRunning);
399
400 HRESULT GetTimeOfLastChange(
401 [in, unique] IBindCtx *pbc,
402 [in, unique] IMoniker *pmkToLeft,
403 [out] FILETIME *pFileTime);
404
405 HRESULT Inverse(
406 [out] IMoniker **ppmk);
407
408 HRESULT CommonPrefixWith(
409 [in, unique] IMoniker *pmkOther,
410 [out] IMoniker **ppmkPrefix);
411
412 HRESULT RelativePathTo(
413 [in, unique] IMoniker *pmkOther,
414 [out] IMoniker **ppmkRelPath);
415
416 HRESULT GetDisplayName(
417 [in, unique] IBindCtx *pbc,
418 [in, unique] IMoniker *pmkToLeft,
419 [out] LPOLESTR *ppszDisplayName);
420
421 HRESULT ParseDisplayName(
422 [in, unique] IBindCtx *pbc,
423 [in, unique] IMoniker *pmkToLeft,
424 [in] LPOLESTR pszDisplayName,
425 [out] ULONG *pchEaten,
426 [out] IMoniker **ppmkOut);
427
428 HRESULT IsSystemMoniker(
429 [out] DWORD *pdwMksys);
430}
431
432[
433 object,
434 uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
435 pointer_default(unique)
436]
437interface IROTData : IUnknown
438{
439 HRESULT GetComparisonData(
440 [out, size_is(cbMax)] byte *pbData,
441 [in] ULONG cbMax,
442 [out] ULONG *pcbData);
443}
444
445[
446 object,
447 uuid(00000140-0000-0000-C000-000000000046)
448]
449interface IClassActivator : IUnknown
450{
451 HRESULT GetClassObject(
452 [in] REFCLSID rclsid,
453 [in] DWORD dwClassContext,
454 [in] LCID locale,
455 [in] REFIID riid,
456 [out, iid_is(riid)] void **ppv);
457}
458
459[
460 object,
461 uuid(0000000d-0000-0000-C000-000000000046),
462 pointer_default(unique)
463]
464interface IEnumSTATSTG : IUnknown
465{
466 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
467
468 [local]
469 HRESULT Next(
470 [in] ULONG celt,
471 [out, size_is(celt), length_is(*pceltFetched)]
472 STATSTG *rgelt,
473 [out] ULONG *pceltFetched);
474
475 [call_as(Next)]
476 HRESULT RemoteNext(
477 [in] ULONG celt,
478 [out, size_is(celt), length_is(*pceltFetched)]
479 STATSTG *rgelt,
480 [out] ULONG *pceltFetched);
481
482 HRESULT Skip(
483 [in] ULONG celt);
484
485 HRESULT Reset();
486
487 HRESULT Clone(
488 [out] IEnumSTATSTG **ppenum);
489}
490
491[
492 object,
493 uuid(0000000b-0000-0000-C000-000000000046),
494 pointer_default(unique)
495]
496interface IStorage : IUnknown
497{
498 typedef [unique] IStorage *LPSTORAGE;
499
500 typedef struct tagRemSNB {
501 unsigned long ulCntStr;
502 unsigned long ulCntChar;
503 [size_is(ulCntChar)] OLECHAR rgString[];
504 } RemSNB;
505
506 typedef [unique] RemSNB *wireSNB;
507 typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
508
509 HRESULT CreateStream(
510 [in] LPCOLESTR pwcsName,
511 [in] DWORD grfMode,
512 [in] DWORD reserved1,
513 [in] DWORD reserved2,
514 [out] IStream **ppstm);
515
516 [local]
517 HRESULT OpenStream(
518 [in] LPCOLESTR pwcsName,
519 [in, unique] void *reserved1,
520 [in] DWORD grfMode,
521 [in] DWORD reserved2,
522 [out] IStream **ppstm);
523
524 [call_as(OpenStream)]
525 HRESULT RemoteOpenStream(
526 [in] LPCOLESTR pwcsName,
527 [in] unsigned long cbReserved1,
528 [in, unique, size_is(cbReserved1)] byte *reserved1,
529 [in] DWORD grfMode,
530 [in] DWORD reserved2,
531 [out] IStream **ppstm);
532
533 HRESULT CreateStorage(
534 [in] LPCOLESTR pwcsName,
535 [in] DWORD grfMode,
536 [in] DWORD dwStgFmt,
537 [in] DWORD reserved2,
538 [out] IStorage **ppstg);
539
540 HRESULT OpenStorage(
541 [in, unique] LPCOLESTR pwcsName,
542 [in, unique] IStorage *pstgPriority,
543 [in] DWORD grfMode,
544 [in, unique] SNB snbExclude,
545 [in] DWORD reserved,
546 [out] IStorage **ppstg);
547
548 HRESULT CopyTo(
549 [in] DWORD ciidExclude,
550 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
551 [in, unique] SNB snbExclude,
552 [in, unique] IStorage *pstgDest);
553
554 HRESULT MoveElementTo(
555 [in] LPCOLESTR pwcsName,
556 [in, unique] IStorage *pstgDest,
557 [in] LPCOLESTR pwcsNewName,
558 [in] DWORD grfFlags);
559
560 HRESULT Commit(
561 [in] DWORD grfCommitFlags);
562
563 HRESULT Revert();
564
565 [local]
566 HRESULT EnumElements(
567 [in] DWORD reserved1,
568 [in, unique, size_is(1)] void *reserved2,
569 [in] DWORD reserved3,
570 [out] IEnumSTATSTG **ppenum);
571
572 [call_as(EnumElements)]
573 HRESULT RemoteEnumElements(
574 [in] DWORD reserved1,
575 [in] unsigned long cbReserved2,
576 [in, unique, size_is(cbReserved2)] byte *reserved2,
577 [in] DWORD reserved3,
578 [out] IEnumSTATSTG **ppenum);
579
580 HRESULT DestroyElement(
581 [in] LPCOLESTR pwcsName);
582
583 HRESULT RenameElement(
584 [in] LPCOLESTR pwcsOldName,
585 [in] LPCOLESTR pwcsNewName);
586
587 HRESULT SetElementTimes(
588 [in, unique] LPCOLESTR pwcsName,
589 [in, unique] const FILETIME *pctime,
590 [in, unique] const FILETIME *patime,
591 [in, unique] const FILETIME *pmtime);
592
593 HRESULT SetClass(
594 [in] REFCLSID clsid);
595
596 HRESULT SetStateBits(
597 [in] DWORD grfStateBits,
598 [in] DWORD grfMask);
599
600 HRESULT Stat(
601 [out] STATSTG *pstatstg,
602 [in] DWORD grfStatFlag);
603}
604
605[
606 object,
607 uuid(0000010b-0000-0000-C000-000000000046),
608 pointer_default(unique)
609]
610interface IPersistFile : IPersist
611{
612 typedef [unique] IPersistFile *LPPERSISTFILE;
613
614 HRESULT IsDirty();
615
616 HRESULT Load(
617 [in] LPCOLESTR pszFileName,
618 [in] DWORD dwMode);
619
620 HRESULT Save(
621 [in, unique] LPCOLESTR pszFileName,
622 [in] BOOL fRemember);
623
624 HRESULT SaveCompleted(
625 [in, unique] LPCOLESTR pszFileName);
626
627 HRESULT GetCurFile(
628 [out] LPOLESTR *ppszFileName);
629}
630
631[
632 object,
633 uuid(0000010a-0000-0000-C000-000000000046),
634 pointer_default(unique)
635]
636interface IPersistStorage : IPersist
637{
638 typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
639
640 HRESULT IsDirty();
641
642 HRESULT InitNew(
643 [in, unique] IStorage *pStg);
644
645 HRESULT Load(
646 [in, unique] IStorage *pStg);
647
648 HRESULT Save(
649 [in, unique] IStorage *pStgSave,
650 [in] BOOL fSameAsLoad);
651
652 HRESULT SaveCompleted(
653 [in, unique] IStorage *pStgNew);
654
655 HRESULT HandsOffStorage();
656}
657
658[
659 object,
660 uuid(00000012-0000-0000-C000-000000000046),
661 pointer_default(unique)
662]
663interface IRootStorage : IUnknown
664{
665 typedef [unique] IRootStorage *LPROOTSTORAGE;
666
667 HRESULT SwitchToFile(
668 [in] LPOLESTR pszFile);
669}
670
671[
672 object,
673 uuid(0000000a-0000-0000-C000-000000000046),
674 pointer_default(unique)
675]
676interface ILockBytes : IUnknown
677{
678 typedef [unique] ILockBytes *LPLOCKBYTES;
679
680 [local]
681 HRESULT ReadAt(
682 [in] ULARGE_INTEGER ulOffset,
683 [out, size_is(cb), length_is(*pcbRead)]
684 void *pv,
685 [in] ULONG cb,
686 [out] ULONG *pcbRead);
687
688 [call_as(ReadAt)]
689 HRESULT RemoteReadAt(
690 [in] ULARGE_INTEGER ulOffset,
691 [out, size_is(cb), length_is(*pcbRead)]
692 byte *pv,
693 [in] ULONG cb,
694 [out] ULONG *pcbRead);
695
696 [local]
697 HRESULT WriteAt(
698 [in] ULARGE_INTEGER ulOffset,
699 [in, size_is(cb)] const void *pv,
700 [in] ULONG cb,
701 [out] ULONG *pcbWritten);
702
703 [call_as(WriteAt)]
704 HRESULT RemoteWriteAt(
705 [in] ULARGE_INTEGER ulOffset,
706 [in, size_is(cb)] const byte *pv,
707 [in] ULONG cb,
708 [out] ULONG *pcbWritten);
709
710 HRESULT Flush();
711
712 HRESULT SetSize(
713 [in] ULARGE_INTEGER cb);
714
715 HRESULT LockRegion(
716 [in] ULARGE_INTEGER libOffset,
717 [in] ULARGE_INTEGER cb,
718 [in] DWORD dwLockType);
719
720 HRESULT UnlockRegion(
721 [in] ULARGE_INTEGER libOffset,
722 [in] ULARGE_INTEGER cb,
723 [in] DWORD dwLockType);
724
725 HRESULT Stat(
726 [out] STATSTG *pstatstg,
727 [in] DWORD grfStatFlag);
728}
729
730[
731 object,
732 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
733 pointer_default(unique)
734]
735interface IFillLockBytes : IUnknown
736{
737 [local]
738 HRESULT FillAppend(
739 [in, size_is(cb)] const void *pv,
740 [in] ULONG cb,
741 [out] ULONG *pcbWritten);
742
743 [call_as(FillAppend)]
744 HRESULT RemoteFillAppend(
745 [in, size_is(cb)] const byte *pv,
746 [in] ULONG cb,
747 [out] ULONG *pcbWritten);
748
749 [local]
750 HRESULT FillAt(
751 [in] ULARGE_INTEGER ulOffset,
752 [in, size_is(cb)] const void *pv,
753 [in] ULONG cb,
754 [out] ULONG *pcbWritten);
755
756 [call_as(FillAt)]
757 HRESULT RemoteFillAt(
758 [in] ULARGE_INTEGER ulOffset,
759 [in, size_is(cb)] const byte *pv,
760 [in] ULONG cb,
761 [out] ULONG *pcbWritten);
762
763 HRESULT SetFillSize(
764 [in] ULARGE_INTEGER ulSize);
765
766 HRESULT Terminate(
767 [in] BOOL bCanceled);
768}
769
770[
771 object,
772 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
773 pointer_default(unique)
774]
775interface IProgressNotify : IUnknown
776{
777 HRESULT OnProgress(
778 [in] DWORD dwProgressCurrent,
779 [in] DWORD dwProgressMaximum,
780 [in] BOOL fAccurate,
781 [in] BOOL fOwner);
782}
783
784[
785 local,
786 object,
787 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
788 pointer_default(unique)
789]
790interface ILayoutStorage : IUnknown
791{
792 typedef struct tagStorageLayout {
793 DWORD LayoutType;
794 OLECHAR *pwcsElementName;
795 LARGE_INTEGER cOffset;
796 LARGE_INTEGER cBytes;
797 } StorageLayout;
798
799 HRESULT LayoutScript(
800 [in] StorageLayout *pStorageLayout,
801 [in] DWORD nEntries,
802 [in] DWORD glfInterleavedFlag);
803
804 HRESULT BeginMonitor();
805
806 HRESULT EndMonitor();
807
808 HRESULT ReLayoutDocfile(
809 [in] OLECHAR *pwcsNewDfName);
810
811 HRESULT ReLayoutDocfileOnILockBytes(
812 [in] ILockBytes *pILockBytes);
813}
814
815[
816 object,
817 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
818]
819interface IBlockingLock : IUnknown
820{
821 HRESULT Lock(
822 [in] DWORD dwTimeout);
823
824 HRESULT Unlock();
825}
826
827
828[
829 object,
830 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
831]
832interface ITimeAndNoticeControl : IUnknown
833{
834 HRESULT SuppressChanges(
835 [in] DWORD res1,
836 [in] DWORD res2);
837
838}
839
840
841
842[
843 object,
844 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
845]
846interface IOplockStorage: IUnknown
847{
848 HRESULT CreateStorageEx(
849 [in] LPCWSTR pwcsName,
850 [in] DWORD grfMode,
851 [in] DWORD stgfmt,
852 [in] DWORD grfAttrs,
853 [in] REFIID riid,
854 [out, iid_is(riid)] void **ppstgOpen);
855
856 HRESULT OpenStorageEx(
857 [in] LPCWSTR pwcsName,
858 [in] DWORD grfMode,
859 [in] DWORD stgfmt,
860 [in] DWORD grfAttrs,
861 [in] REFIID riid,
862 [out, iid_is(riid)] void **ppstgOpen);
863}
864
865/******************** Data Object ********************/
866
867[
868 object,
869 uuid(00000103-0000-0000-C000-000000000046),
870 pointer_default(unique)
871]
872interface IEnumFORMATETC : IUnknown
873{
874 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
875
876 typedef struct tagDVTARGETDEVICE {
877 DWORD tdSize;
878 WORD tdDriverNameOffset;
879 WORD tdDeviceNameOffset;
880 WORD tdPortNameOffset;
881 WORD tdExtDevmodeOffset;
882 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
883 BYTE tdData[];
884 } DVTARGETDEVICE;
885
886 typedef CLIPFORMAT *LPCLIPFORMAT;
887
888 typedef struct tagFORMATETC {
889 CLIPFORMAT cfFormat;
890 [unique] DVTARGETDEVICE *ptd;
891 DWORD dwAspect;
892 LONG lindex;
893 DWORD tymed;
894 } FORMATETC, *LPFORMATETC;
895
896 [local]
897 HRESULT Next(
898 [in] ULONG celt,
899 [out, size_is(celt), length_is(*pceltFetched)]
900 FORMATETC *rgelt,
901 [out] ULONG *pceltFetched);
902
903 [call_as(Next)]
904 HRESULT RemoteNext(
905 [in] ULONG celt,
906 [out, size_is(celt), length_is(*pceltFetched)]
907 FORMATETC *rgelt,
908 [out] ULONG *pceltFetched);
909
910 HRESULT Skip(
911 [in] ULONG celt);
912
913 HRESULT Reset();
914
915 HRESULT Clone(
916 [out] IEnumFORMATETC **ppenum);
917}
918
919[
920 object,
921 uuid(00000105-0000-0000-C000-000000000046),
922 pointer_default(unique)
923]
924interface IEnumSTATDATA : IUnknown
925{
926 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
927
928 typedef enum tagADVF {
929 ADVF_NODATA = 1,
930 ADVF_PRIMEFIRST = 2,
931 ADVF_ONLYONCE = 4,
932 ADVF_DATAONSTOP = 64,
933 ADVFCACHE_NOHANDLER = 8,
934 ADVFCACHE_FORCEBUILTIN = 16,
935 ADVFCACHE_ONSAVE = 32
936 } ADVF;
937
938 typedef struct tagSTATDATA
939 {
940 FORMATETC formatetc;
941 DWORD advf;
942 [unique] IAdviseSink *pAdvSink;
943 DWORD dwConnection;
944 } STATDATA, *LPSTATDATA;
945
946 [local]
947 HRESULT Next(
948 [in] ULONG celt,
949 [out, size_is(celt), length_is(*pceltFetched)]
950 STATDATA *rgelt,
951 [out] ULONG *pceltFetched);
952
953 [call_as(Next)]
954 HRESULT RemoteNext(
955 [in] ULONG celt,
956 [out, size_is(celt), length_is(*pceltFetched)]
957 STATDATA *rgelt,
958 [out] ULONG *pceltFetched);
959
960 HRESULT Skip(
961 [in] ULONG celt);
962
963 HRESULT Reset();
964
965 HRESULT Clone(
966 [out] IEnumSTATDATA **ppenum);
967}
968
969[
970 object,
971 uuid(0000010f-0000-0000-C000-000000000046),
972 pointer_default(unique)
973]
974interface IAdviseSink : IUnknown
975{
976 typedef IAdviseSink *LPADVISESINK;
977
978 typedef [v1_enum] enum tagTYMED {
979 TYMED_HGLOBAL = 1,
980 TYMED_FILE = 2,
981 TYMED_ISTREAM = 4,
982 TYMED_ISTORAGE = 8,
983 TYMED_GDI = 16,
984 TYMED_MFPICT = 32,
985 TYMED_ENHMF = 64,
986 TYMED_NULL = 0
987 } TYMED;
988
989 typedef struct tagRemSTGMEDIUM {
990 DWORD tymed;
991 DWORD dwHandleType;
992 unsigned long pData;
993 unsigned long pUnkForRelease;
994 unsigned long cbData;
995 [size_is(cbData)] byte data[];
996 } RemSTGMEDIUM;
997
998 typedef struct tagSTGMEDIUM {
999 DWORD tymed;
1000 [switch_is(tymed)] union {
1001 [case(TYMED_GDI)] HBITMAP hBitmap;
1002 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict;
1003 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile;
1004 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal;
1005 [case(TYMED_FILE)] LPOLESTR lpszFileName;
1006 [case(TYMED_ISTREAM)] IStream *pstm;
1007 [case(TYMED_ISTORAGE)] IStorage *pstg;
1008 [default] ;
1009 } DUMMYUNIONNAME;
1010 [unique] IUnknown *pUnkForRelease;
1011 } uSTGMEDIUM;
1012
1013/* copied from wingdi.h */
1014#define OBJ_PEN 1
1015#define OBJ_BRUSH 2
1016#define OBJ_DC 3
1017#define OBJ_METADC 4
1018#define OBJ_PAL 5
1019#define OBJ_FONT 6
1020#define OBJ_BITMAP 7
1021#define OBJ_REGION 8
1022#define OBJ_METAFILE 9
1023#define OBJ_MEMDC 10
1024#define OBJ_EXTPEN 11
1025#define OBJ_ENHMETADC 12
1026#define OBJ_ENHMETAFILE 13
1027
1028 typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
1029 case OBJ_BITMAP: wireHBITMAP hBitmap;
1030 case OBJ_PAL: wireHPALETTE hPalette;
1031 default: wireHGLOBAL hGeneric;
1032 } GDI_OBJECT;
1033
1034 /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION
1035 * violates the C spec, but is necessary for C++. Avoid C spec violation. */
1036 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1037 cpp_quote("#define _STGMEDIUM_UNION")
1038 cpp_quote("#endif")
1039
1040 typedef struct _userSTGMEDIUM {
1041 union _STGMEDIUM_UNION switch(DWORD tymed) u {
1042 case TYMED_NULL: ;
1043 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
1044 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
1045 case TYMED_GDI: GDI_OBJECT *hGdiHandle;
1046 case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
1047 case TYMED_FILE: LPOLESTR lpszFileName;
1048 case TYMED_ISTREAM: BYTE_BLOB *pstm;
1049 case TYMED_ISTORAGE: BYTE_BLOB *pstg;
1050 } DUMMYUNIONNAME;
1051 IUnknown *pUnkForRelease;
1052 } userSTGMEDIUM;
1053
1054 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1055 cpp_quote("#undef _STGMEDIUM_UNION")
1056 cpp_quote("#endif")
1057
1058 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
1059 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
1060
1061 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
1062 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
1063
1064 typedef STGMEDIUM *LPSTGMEDIUM;
1065
1066 typedef struct _userFLAG_STGMEDIUM {
1067 long ContextFlags;
1068 long fPassOwnership;
1069 userSTGMEDIUM Stgmed;
1070 } userFLAG_STGMEDIUM;
1071
1072 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
1073
1074 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
1075 long ContextFlags;
1076 long fPassOwnership;
1077 STGMEDIUM Stgmed;
1078 } FLAG_STGMEDIUM;
1079
1080 [local]
1081 void OnDataChange(
1082 [in, unique] FORMATETC *pFormatetc,
1083 [in, unique] STGMEDIUM *pStgmed);
1084
1085 [call_as(OnDataChange)]
1086 HRESULT RemoteOnDataChange(
1087 [in, unique] FORMATETC *pFormatetc,
1088 [in, unique] ASYNC_STGMEDIUM *pStgmed);
1089
1090 [local]
1091 void OnViewChange(
1092 [in] DWORD dwAspect,
1093 [in] LONG lindex);
1094
1095 [call_as(OnViewChange)]
1096 HRESULT RemoteOnViewChange(
1097 [in] DWORD dwAspect,
1098 [in] LONG lindex);
1099
1100 [local]
1101 void OnRename(
1102 [in] IMoniker *pmk);
1103
1104 [call_as(OnRename)]
1105 HRESULT RemoteOnRename(
1106 [in] IMoniker *pmk);
1107
1108 [local]
1109 void OnSave();
1110
1111 [call_as(OnSave)]
1112 HRESULT RemoteOnSave();
1113
1114 [local]
1115 void OnClose();
1116
1117 [call_as(OnClose)]
1118 HRESULT RemoteOnClose();
1119}
1120
1121[
1122 object,
1123 uuid(00000125-0000-0000-C000-000000000046),
1124 pointer_default(unique)
1125]
1126interface IAdviseSink2 : IAdviseSink
1127{
1128 typedef [unique] IAdviseSink2 *LPADVISESINK2;
1129
1130 [local]
1131 void OnLinkSrcChange(
1132 [in, unique] IMoniker *pmk);
1133
1134 [call_as(OnLinkSrcChange)]
1135 HRESULT RemoteOnLinkSrcChange(
1136 [in, unique] IMoniker *pmk);
1137}
1138
1139[
1140 object,
1141 uuid(0000010e-0000-0000-C000-000000000046),
1142 pointer_default(unique)
1143]
1144interface IDataObject : IUnknown
1145{
1146 typedef [unique] IDataObject *LPDATAOBJECT;
1147
1148 typedef enum tagDATADIR {
1149 DATADIR_GET = 1,
1150 DATADIR_SET = 2
1151 } DATADIR;
1152
1153 [local]
1154 HRESULT GetData(
1155 [in, unique] FORMATETC *pformatetcIn,
1156 [out] STGMEDIUM *pmedium);
1157
1158 [call_as(GetData)]
1159 HRESULT RemoteGetData(
1160 [in, unique] FORMATETC *pformatetcIn,
1161 [out] STGMEDIUM *pRemoteMedium);
1162
1163 [local]
1164 HRESULT GetDataHere(
1165 [in, unique] FORMATETC *pformatetc,
1166 [in, out] STGMEDIUM *pmedium);
1167
1168 [call_as(GetDataHere)]
1169 HRESULT RemoteGetDataHere(
1170 [in, unique] FORMATETC *pformatetc,
1171 [in, out] STGMEDIUM *pRemoteMedium);
1172
1173 HRESULT QueryGetData(
1174 [in, unique] FORMATETC *pformatetc);
1175
1176 HRESULT GetCanonicalFormatEtc(
1177 [in, unique] FORMATETC *pformatectIn,
1178 [out] FORMATETC *pformatetcOut);
1179
1180 [local]
1181 HRESULT SetData(
1182 [in, unique] FORMATETC *pformatetc,
1183 [in, unique] STGMEDIUM *pmedium,
1184 [in] BOOL fRelease);
1185
1186 [call_as(SetData)]
1187 HRESULT RemoteSetData(
1188 [in, unique] FORMATETC *pformatetc,
1189 [in, unique] FLAG_STGMEDIUM *pmedium,
1190 [in] BOOL fRelease);
1191
1192 HRESULT EnumFormatEtc(
1193 [in] DWORD dwDirection,
1194 [out] IEnumFORMATETC **ppenumFormatEtc);
1195
1196 HRESULT DAdvise(
1197 [in] FORMATETC *pformatetc,
1198 [in] DWORD advf,
1199 [in, unique] IAdviseSink *pAdvSink,
1200 [out] DWORD *pdwConnection);
1201
1202 HRESULT DUnadvise(
1203 [in] DWORD dwConnection);
1204
1205 HRESULT EnumDAdvise(
1206 [out] IEnumSTATDATA **ppenumAdvise);
1207}
1208
1209[
1210 local,
1211 object,
1212 uuid(00000110-0000-0000-C000-000000000046)
1213]
1214interface IDataAdviseHolder : IUnknown
1215{
1216 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
1217
1218 HRESULT Advise(
1219 [in, unique] IDataObject *pDataObject,
1220 [in, unique] FORMATETC *pFetc,
1221 [in] DWORD advf,
1222 [in, unique] IAdviseSink *pAdvise,
1223 [out] DWORD *pdwConnection);
1224
1225 HRESULT Unadvise(
1226 [in] DWORD dwConnection);
1227
1228 HRESULT EnumAdvise(
1229 [out] IEnumSTATDATA **ppenumAdvise);
1230
1231 HRESULT SendOnDataChange(
1232 [in, unique] IDataObject *pDataObject,
1233 [in] DWORD dwReserved,
1234 [in] DWORD advf);
1235}
1236
1237/******************** Remoting ********************/
1238
1239[
1240 local,
1241 object,
1242 uuid(00000016-0000-0000-C000-000000000046)
1243]
1244interface IMessageFilter : IUnknown
1245{
1246 typedef [unique] IMessageFilter *LPMESSAGEFILTER;
1247
1248 typedef enum tagCALLTYPE {
1249 CALLTYPE_TOPLEVEL = 1,
1250 CALLTYPE_NESTED = 2,
1251 CALLTYPE_ASYNC = 3,
1252 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
1253 CALLTYPE_ASYNC_CALLPENDING = 5
1254 } CALLTYPE;
1255
1256 typedef enum tagSERVERCALL {
1257 SERVERCALL_ISHANDLED = 0,
1258 SERVERCALL_REJECTED = 1,
1259 SERVERCALL_RETRYLATER = 2
1260 } SERVERCALL;
1261
1262 typedef enum tagPENDINGTYPE {
1263 PENDINGTYPE_TOPLEVEL = 1,
1264 PENDINGTYPE_NESTED = 2
1265 } PENDINGTYPE;
1266
1267 typedef enum tagPENDINGMSG {
1268 PENDINGMSG_CANCELCALL = 0,
1269 PENDINGMSG_WAITNOPROCESS = 1,
1270 PENDINGMSG_WAITDEFPROCESS = 2
1271 } PENDINGMSG;
1272
1273 typedef struct tagINTERFACEINFO {
1274 IUnknown *pUnk;
1275 IID iid;
1276 WORD wMethod;
1277 } INTERFACEINFO, *LPINTERFACEINFO;
1278
1279 DWORD HandleInComingCall(
1280 [in] DWORD dwCallType,
1281 [in] HTASK htaskCaller,
1282 [in] DWORD dwTickCount,
1283 [in] LPINTERFACEINFO lpInterfaceInfo);
1284
1285 DWORD RetryRejectedCall(
1286 [in] HTASK htaskCallee,
1287 [in] DWORD dwTickCount,
1288 [in] DWORD dwRejectType);
1289
1290 DWORD MessagePending(
1291 [in] HTASK htaskCallee,
1292 [in] DWORD dwTickCount,
1293 [in] DWORD dwPendingType);
1294}
1295
1296[
1297 object,
1298 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
1299]
1300interface IDirectWriterLock : IUnknown
1301{
1302 HRESULT WaitForWriteAccess(
1303 [in] DWORD dwTimeout);
1304
1305 HRESULT ReleaseWriteAccess();
1306
1307 HRESULT HaveWriteAccess();
1308}
1309
1310[
1311 object,
1312 uuid(00000026-0000-0000-C000-000000000046)
1313]
1314interface IUrlMon : IUnknown
1315{
1316 HRESULT AsyncGetClassBits(
1317 [in] REFCLSID rclsid,
1318 [in, unique] LPCWSTR pszTYPE,
1319 [in, unique] LPCWSTR pszExt,
1320 [in] DWORD dwFileVersionMS,
1321 [in] DWORD dwFileVersionLS,
1322 [in, unique] LPCWSTR pszCodeBase,
1323 [in] IBindCtx *pbc,
1324 [in] DWORD dwClassContext,
1325 [in] REFIID riid,
1326 [in] DWORD flags);
1327}
1328
1329[
1330 local,
1331 object,
1332 uuid(00000145-0000-0000-C000-000000000046)
1333]
1334interface IForegroundTransfer : IUnknown
1335{
1336 HRESULT AllowForegroundTransfer(
1337 [in] void *lpvReserved);
1338}
1339
1340[
1341 local,
1342 object,
1343 uuid(00000034-0000-0000-C000-000000000046),
1344 pointer_default(unique)
1345]
1346interface IInitializeSpy : IUnknown
1347{
1348 typedef [unique] IInitializeSpy *LPINITIALIZESPY;
1349
1350 HRESULT PreInitialize(
1351 [in] DWORD dwCoInit,
1352 [in] DWORD dwCurThreadAptRefs);
1353
1354 HRESULT PostInitialize(
1355 [in] HRESULT hrCoInit,
1356 [in] DWORD dwCoInit,
1357 [in] DWORD dwNewThreadAptRefs);
1358
1359 HRESULT PreUninitialize(
1360 [in] DWORD dwCurThreadAptRefs);
1361
1362 HRESULT PostUninitialize(
1363 [in] DWORD dwNewThreadAptRefs);
1364}
1365
1366[
1367 object,
1368 uuid(969dc708-5c76-11d1-8d86-0000f804b057)
1369]
1370interface IThumbnailExtractor : IUnknown
1371{
1372 HRESULT ExtractThumbnail(
1373 [in] IStorage *pStg,
1374 [in] ULONG ulLength,
1375 [in] ULONG ulHeight,
1376 [out] ULONG *pulOutputLength,
1377 [out] ULONG *pulOutputHeight,
1378 [out] HBITMAP *phOutputBitmap);
1379
1380
1381 HRESULT OnFileUpdated(
1382 [in] IStorage *pStg);
1383}
1384
1385[
1386 object,
1387 pointer_default(unique),
1388 uuid(947990de-cc28-11d2-a0f7-00805f858fb1)
1389]
1390interface IDummyHICONIncluder : IUnknown
1391{
1392 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc);
1393}
1394
1395[
1396 object,
1397 local,
1398 pointer_default(unique),
1399 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b)
1400]
1401interface IApartmentShutdown : IUnknown
1402{
1403 void OnUninitialize([in] UINT64 identifier);
1404}
CD3D10_BUFFER_DESC D3D10_BUFFER_DESC cpp_quote(" ~CD3D10_BUFFER_DESC() {}") operator const D3D10_BUFFER_DESC &() const
Definition: d3d10.idl:491
coclass PSFactoryBuffer pointer_default(unique)] interface ObjectRpcBaseTypes
Definition: dcom.idl:35
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define local
Definition: zutil.h:30
FxRequest * pRequest
GLuint in
Definition: glext.h:9616
enum IBindCtx::tagBIND_FLAGS BIND_FLAGS
struct IBindCtx::tagBIND_OPTS BIND_OPTS
HRESULT RegisterObjectBound([in, unique] IUnknown *punk)
struct IBindCtx::tagBIND_OPTS3 * LPBIND_OPTS3
HRESULT GetRunningObjectTable([out] IRunningObjectTable **pprot)
struct IBindCtx::tagBIND_OPTS2 BIND_OPTS2
tagBIND_FLAGS
Definition: objidl.idl:131
@ BIND_JUSTTESTEXISTENCE
Definition: objidl.idl:133
@ BIND_MAYBOTHERUSER
Definition: objidl.idl:132
HRESULT GetObjectParam([in] LPOLESTR pszKey, [out] IUnknown **ppunk)
struct IBindCtx::tagBIND_OPTS2 * LPBIND_OPTS2
struct IBindCtx::tagBIND_OPTS * LPBIND_OPTS
HRESULT RevokeObjectParam([in] LPOLESTR pszKey)
HRESULT RemoteGetBindOptions([in, out] BIND_OPTS2 *pbindopts)
HRESULT RemoteSetBindOptions([in] BIND_OPTS2 *pbindopts)
HRESULT RevokeObjectBound([in, unique] IUnknown *punk)
HRESULT SetBindOptions([in] BIND_OPTS *pbindopts)
IBindCtx * LPBC
Definition: objidl.idl:98
HRESULT RegisterObjectParam([in] LPOLESTR pszKey, [in, unique] IUnknown *punk)
HRESULT EnumObjectParam([out] IEnumString **ppenum)
struct IBindCtx::tagBIND_OPTS3 BIND_OPTS3
IBindCtx * LPBINDCTX
Definition: objidl.idl:97
HRESULT ReleaseBoundObjects()
HRESULT GetBindOptions([in, out] BIND_OPTS *pbindopts)
HRESULT Reset()
HRESULT Skip([in] ULONG celt)
HRESULT Clone([out] IEnumMoniker **ppenum)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IMoniker **rgelt, [out] ULONG *pceltFetched)
IEnumMoniker * LPENUMMONIKER
Definition: objidl.idl:185
HRESULT RemoteNext([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IMoniker **rgelt, [out] ULONG *pceltFetched)
LPVOID PreFree([in] LPVOID pRequest, [in] BOOL fSpyed)
SIZE_T PreAlloc([in] SIZE_T cbRequest)
void PostFree([in] BOOL fSpyed)
IMallocSpy * LPMALLOCSPY
Definition: objidl.idl:41
void PostHeapMinimize()
LPVOID PreDidAlloc([in] LPVOID pRequest, [in] BOOL fSpyed)
SIZE_T PreRealloc([in] LPVOID pRequest, [in] SIZE_T cbRequest, [out] LPVOID *ppNewRequest, [in] BOOL fSpyed)
void PreHeapMinimize()
LPVOID PostAlloc([in] LPVOID pActual)
SIZE_T PostGetSize([in] SIZE_T cbActual, [in] BOOL fSpyed)
int PostDidAlloc([in] LPVOID pRequest, [in] BOOL fSpyed, [in] int fActual)
LPVOID PostRealloc([in] LPVOID pActual, [in] BOOL fSpyed)
LPVOID PreGetSize([in] LPVOID pRequest, [in] BOOL fSpyed)
HRESULT Run([in] LPBINDCTX pbc)
HRESULT RemoteIsRunning()
HRESULT LockRunning([in] BOOL fLock, [in] BOOL fLastUnlockCloses)
IRunnableObject * LPRUNNABLEOBJECT
Definition: objidl.idl:216
HRESULT SetContainedObject([in] BOOL fContained)
HRESULT GetRunningClass([out] LPCLSID lpClsid)
Definition: msctf.idl:532
#define d
Definition: ke_i.h:81
#define e
Definition: ke_i.h:82
static LPOLESTR
Definition: stg_prop.c:27
interface IBindCtx * LPBINDCTX
Definition: objfwd.h:18
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158
DWORD LCID
Definition: nls.h:13
COSERVERINFO * pServerInfo
Definition: objidl.idl:116
COSERVERINFO * pServerInfo
Definition: objidl.idl:127
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG
Definition: typedefs.h:59
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383