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
22 #define OBJIDL_UNDEF_DO_NO_IMPORTS
25 #include
"objidlbase.idl"
26 #ifdef OBJIDL_UNDEF_DO_NO_IMPORTS
30 interface IRunningObjectTable
;
32 interface IAdviseSink
;
37 uuid(0000001d
-0000-0000-C000
-000000000046)
39 interface IMallocSpy
: IUnknown
41 typedef [unique] IMallocSpy
*LPMALLOCSPY
;
44 [in] SIZE_T cbRequest
);
58 [in] SIZE_T cbRequest
,
59 [out] LPVOID
*ppNewRequest
,
83 void PreHeapMinimize
();
85 void PostHeapMinimize
();
88 /******************** Monikers ********************/
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
{
104 DWORD dwTickCountDeadline
;
105 } BIND_OPTS
, *LPBIND_OPTS
;
107 /* FIXME: C++ crap */
108 typedef struct tagBIND_OPTS2
{
112 DWORD dwTickCountDeadline
;
114 DWORD dwClassContext
;
116 COSERVERINFO
*pServerInfo
;
117 } BIND_OPTS2
, *LPBIND_OPTS2
;
119 typedef struct tagBIND_OPTS3
{
123 DWORD dwTickCountDeadline
;
125 DWORD dwClassContext
;
127 COSERVERINFO
*pServerInfo
;
129 } BIND_OPTS3
, *LPBIND_OPTS3
;
131 typedef enum tagBIND_FLAGS
{
132 BIND_MAYBOTHERUSER
= 1,
133 BIND_JUSTTESTEXISTENCE
= 2
136 HRESULT RegisterObjectBound
(
137 [in, unique] IUnknown
*punk
);
139 HRESULT RevokeObjectBound
(
140 [in, unique] IUnknown
*punk
);
142 HRESULT ReleaseBoundObjects
();
145 HRESULT SetBindOptions
(
146 [in] BIND_OPTS
*pbindopts
);
148 [call_as
(SetBindOptions
)]
149 HRESULT RemoteSetBindOptions
(
150 [in] BIND_OPTS2
*pbindopts
);
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
);
180 uuid(00000102-0000-0000-C000
-000000000046),
181 pointer_default(unique)
183 interface IEnumMoniker
: IUnknown
185 typedef [unique] IEnumMoniker
*LPENUMMONIKER
;
190 [out, size_is(celt
), length_is(*pceltFetched
)]
192 [out] ULONG
*pceltFetched
);
197 [out, size_is(celt
), length_is(*pceltFetched
)]
199 [out] ULONG
*pceltFetched
);
207 [out] IEnumMoniker
**ppenum
);
212 uuid(00000126-0000-0000-C000
-000000000046)
214 interface IRunnableObject
: IUnknown
216 typedef [unique] IRunnableObject
*LPRUNNABLEOBJECT
;
218 HRESULT GetRunningClass
(
219 [out] LPCLSID lpClsid
);
228 HRESULT RemoteIsRunning
();
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")
248 uuid(00000010-0000-0000-C000
-000000000046)
250 interface IRunningObjectTable
: IUnknown
252 typedef [unique] IRunningObjectTable
*LPRUNNINGOBJECTTABLE
;
256 [in, unique] IUnknown
*punkObject
,
257 [in, unique] IMoniker
*pmkObjectName
,
258 [out] DWORD
*pdwRegister
);
261 [in] DWORD dwRegister
);
264 [in, unique] IMoniker
*pmkObjectName
);
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
);
279 [out] IEnumMoniker
**ppenumMoniker
);
284 uuid(0000010c
-0000-0000-C000
-000000000046)
286 interface IPersist
: IUnknown
288 typedef [unique] IPersist
*LPPERSIST
;
291 [out] CLSID
*pClassID
);
296 uuid(00000109-0000-0000-C000
-000000000046),
297 pointer_default(unique)
299 interface IPersistStream
: IPersist
301 typedef [unique] IPersistStream
*LPPERSISTSTREAM
;
306 [in, unique] IStream
*pStm
);
309 [in, unique] IStream
*pStm
,
310 [in] BOOL fClearDirty
);
313 [out] ULARGE_INTEGER
*pcbSize
);
318 uuid(0000000f
-0000-0000-C000
-000000000046),
319 pointer_default(unique)
321 interface IMoniker
: IPersistStream
323 typedef [unique] IMoniker
*LPMONIKER
;
325 typedef enum tagMKSYS
{
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
339 typedef [v1_enum] enum tagMKREDUCE
{
340 MKRREDUCE_ONE
= 3 << 16,
341 MKRREDUCE_TOUSER
= 2 << 16,
342 MKRREDUCE_THROUGHUSER
= 1 << 16,
347 HRESULT BindToObject
(
348 [in, unique] IBindCtx
*pbc
,
349 [in, unique] IMoniker
*pmkToLeft
,
350 [in] REFIID riidResult
,
351 [out, iid_is(riidResult
)] void **ppvResult
);
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
);
361 HRESULT BindToStorage
(
362 [in, unique] IBindCtx
*pbc
,
363 [in, unique] IMoniker
*pmkToLeft
,
365 [out, iid_is(riid
)] void **ppvObj
);
367 [call_as
(BindToStorage
)]
368 HRESULT RemoteBindToStorage
(
369 [in, unique] IBindCtx
*pbc
,
370 [in, unique] IMoniker
*pmkToLeft
,
372 [out, iid_is(riid
)] IUnknown
**ppvObj
);
375 [in, unique] IBindCtx
*pbc
,
376 [in] DWORD dwReduceHowFar
,
377 [in, out, unique] IMoniker
**ppmkToLeft
,
378 [out] IMoniker
**ppmkReduced
);
381 [in, unique] IMoniker
*pmkRight
,
382 [in] BOOL fOnlyIfNotGeneric
,
383 [out] IMoniker
**ppmkComposite
);
387 [out] IEnumMoniker
**ppenumMoniker
);
390 [in, unique] IMoniker
*pmkOtherMoniker
);
393 [out] DWORD
*pdwHash
);
396 [in, unique] IBindCtx
*pbc
,
397 [in, unique] IMoniker
*pmkToLeft
,
398 [in, unique] IMoniker
*pmkNewlyRunning
);
400 HRESULT GetTimeOfLastChange
(
401 [in, unique] IBindCtx
*pbc
,
402 [in, unique] IMoniker
*pmkToLeft
,
403 [out] FILETIME
*pFileTime
);
406 [out] IMoniker
**ppmk
);
408 HRESULT CommonPrefixWith
(
409 [in, unique] IMoniker
*pmkOther
,
410 [out] IMoniker
**ppmkPrefix
);
412 HRESULT RelativePathTo
(
413 [in, unique] IMoniker
*pmkOther
,
414 [out] IMoniker
**ppmkRelPath
);
416 HRESULT GetDisplayName
(
417 [in, unique] IBindCtx
*pbc
,
418 [in, unique] IMoniker
*pmkToLeft
,
419 [out] LPOLESTR
*ppszDisplayName
);
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
);
428 HRESULT IsSystemMoniker
(
429 [out] DWORD
*pdwMksys
);
434 uuid(f29f6bc0
-5021-11ce
-aa15
-00006901293f
),
435 pointer_default(unique)
437 interface IROTData
: IUnknown
439 HRESULT GetComparisonData
(
440 [out, size_is(cbMax
)] byte *pbData
,
442 [out] ULONG
*pcbData
);
447 uuid(00000140-0000-0000-C000
-000000000046)
449 interface IClassActivator
: IUnknown
451 HRESULT GetClassObject
(
452 [in] REFCLSID rclsid
,
453 [in] DWORD dwClassContext
,
456 [out, iid_is(riid
)] void **ppv
);
461 uuid(0000000d
-0000-0000-C000
-000000000046),
462 pointer_default(unique)
464 interface IEnumSTATSTG
: IUnknown
466 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
471 [out, size_is(celt
), length_is(*pceltFetched
)]
473 [out] ULONG
*pceltFetched
);
478 [out, size_is(celt
), length_is(*pceltFetched
)]
480 [out] ULONG
*pceltFetched
);
488 [out] IEnumSTATSTG
**ppenum
);
493 uuid(0000000b
-0000-0000-C000
-000000000046),
494 pointer_default(unique)
496 interface IStorage
: IUnknown
498 typedef [unique] IStorage
*LPSTORAGE
;
500 typedef struct tagRemSNB
{
501 unsigned long ulCntStr
;
502 unsigned long ulCntChar
;
503 [size_is(ulCntChar
)] OLECHAR rgString
[];
506 typedef [unique] RemSNB
*wireSNB
;
507 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
509 HRESULT CreateStream
(
510 [in] LPCOLESTR pwcsName
,
512 [in] DWORD reserved1
,
513 [in] DWORD reserved2
,
514 [out] IStream
**ppstm
);
518 [in] LPCOLESTR pwcsName
,
519 [in, unique] void *reserved1
,
521 [in] DWORD reserved2
,
522 [out] IStream
**ppstm
);
524 [call_as
(OpenStream
)]
525 HRESULT RemoteOpenStream
(
526 [in] LPCOLESTR pwcsName
,
527 [in] unsigned long cbReserved1
,
528 [in, unique, size_is(cbReserved1
)] byte *reserved1
,
530 [in] DWORD reserved2
,
531 [out] IStream
**ppstm
);
533 HRESULT CreateStorage
(
534 [in] LPCOLESTR pwcsName
,
537 [in] DWORD reserved2
,
538 [out] IStorage
**ppstg
);
541 [in, unique] LPCOLESTR pwcsName
,
542 [in, unique] IStorage
*pstgPriority
,
544 [in, unique] SNB snbExclude
,
546 [out] IStorage
**ppstg
);
549 [in] DWORD ciidExclude
,
550 [in, unique, size_is(ciidExclude
)] const IID
*rgiidExclude
,
551 [in, unique] SNB snbExclude
,
552 [in, unique] IStorage
*pstgDest
);
554 HRESULT MoveElementTo
(
555 [in] LPCOLESTR pwcsName
,
556 [in, unique] IStorage
*pstgDest
,
557 [in] LPCOLESTR pwcsNewName
,
558 [in] DWORD grfFlags
);
561 [in] DWORD grfCommitFlags
);
566 HRESULT EnumElements
(
567 [in] DWORD reserved1
,
568 [in, unique, size_is(1)] void *reserved2
,
569 [in] DWORD reserved3
,
570 [out] IEnumSTATSTG
**ppenum
);
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
);
580 HRESULT DestroyElement
(
581 [in] LPCOLESTR pwcsName
);
583 HRESULT RenameElement
(
584 [in] LPCOLESTR pwcsOldName
,
585 [in] LPCOLESTR pwcsNewName
);
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
);
594 [in] REFCLSID clsid
);
596 HRESULT SetStateBits
(
597 [in] DWORD grfStateBits
,
601 [out] STATSTG
*pstatstg
,
602 [in] DWORD grfStatFlag
);
607 uuid(0000010b
-0000-0000-C000
-000000000046),
608 pointer_default(unique)
610 interface IPersistFile
: IPersist
612 typedef [unique] IPersistFile
*LPPERSISTFILE
;
617 [in] LPCOLESTR pszFileName
,
621 [in, unique] LPCOLESTR pszFileName
,
622 [in] BOOL fRemember
);
624 HRESULT SaveCompleted
(
625 [in, unique] LPCOLESTR pszFileName
);
628 [out] LPOLESTR
*ppszFileName
);
633 uuid(0000010a
-0000-0000-C000
-000000000046),
634 pointer_default(unique)
636 interface IPersistStorage
: IPersist
638 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
643 [in, unique] IStorage
*pStg
);
646 [in, unique] IStorage
*pStg
);
649 [in, unique] IStorage
*pStgSave
,
650 [in] BOOL fSameAsLoad
);
652 HRESULT SaveCompleted
(
653 [in, unique] IStorage
*pStgNew
);
655 HRESULT HandsOffStorage
();
660 uuid(00000012-0000-0000-C000
-000000000046),
661 pointer_default(unique)
663 interface IRootStorage
: IUnknown
665 typedef [unique] IRootStorage
*LPROOTSTORAGE
;
667 HRESULT SwitchToFile
(
668 [in] LPOLESTR pszFile
);
673 uuid(0000000a
-0000-0000-C000
-000000000046),
674 pointer_default(unique)
676 interface ILockBytes
: IUnknown
678 typedef [unique] ILockBytes
*LPLOCKBYTES
;
682 [in] ULARGE_INTEGER ulOffset
,
683 [out, size_is(cb
), length_is(*pcbRead
)]
686 [out] ULONG
*pcbRead
);
689 HRESULT RemoteReadAt
(
690 [in] ULARGE_INTEGER ulOffset
,
691 [out, size_is(cb
), length_is(*pcbRead
)]
694 [out] ULONG
*pcbRead
);
698 [in] ULARGE_INTEGER ulOffset
,
699 [in, size_is(cb
)] const void *pv
,
701 [out] ULONG
*pcbWritten
);
704 HRESULT RemoteWriteAt
(
705 [in] ULARGE_INTEGER ulOffset
,
706 [in, size_is(cb
)] const byte *pv
,
708 [out] ULONG
*pcbWritten
);
713 [in] ULARGE_INTEGER cb
);
716 [in] ULARGE_INTEGER libOffset
,
717 [in] ULARGE_INTEGER cb
,
718 [in] DWORD dwLockType
);
720 HRESULT UnlockRegion
(
721 [in] ULARGE_INTEGER libOffset
,
722 [in] ULARGE_INTEGER cb
,
723 [in] DWORD dwLockType
);
726 [out] STATSTG
*pstatstg
,
727 [in] DWORD grfStatFlag
);
732 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
733 pointer_default(unique)
735 interface IFillLockBytes
: IUnknown
739 [in, size_is(cb
)] const void *pv
,
741 [out] ULONG
*pcbWritten
);
743 [call_as
(FillAppend
)]
744 HRESULT RemoteFillAppend
(
745 [in, size_is(cb
)] const byte *pv
,
747 [out] ULONG
*pcbWritten
);
751 [in] ULARGE_INTEGER ulOffset
,
752 [in, size_is(cb
)] const void *pv
,
754 [out] ULONG
*pcbWritten
);
757 HRESULT RemoteFillAt
(
758 [in] ULARGE_INTEGER ulOffset
,
759 [in, size_is(cb
)] const byte *pv
,
761 [out] ULONG
*pcbWritten
);
764 [in] ULARGE_INTEGER ulSize
);
767 [in] BOOL bCanceled
);
772 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
773 pointer_default(unique)
775 interface IProgressNotify
: IUnknown
778 [in] DWORD dwProgressCurrent
,
779 [in] DWORD dwProgressMaximum
,
787 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
788 pointer_default(unique)
790 interface ILayoutStorage
: IUnknown
792 typedef struct tagStorageLayout
{
794 OLECHAR
*pwcsElementName
;
795 LARGE_INTEGER cOffset
;
796 LARGE_INTEGER cBytes
;
799 HRESULT LayoutScript
(
800 [in] StorageLayout
*pStorageLayout
,
802 [in] DWORD glfInterleavedFlag
);
804 HRESULT BeginMonitor
();
806 HRESULT EndMonitor
();
808 HRESULT ReLayoutDocfile
(
809 [in] OLECHAR
*pwcsNewDfName
);
811 HRESULT ReLayoutDocfileOnILockBytes
(
812 [in] ILockBytes
*pILockBytes
);
817 uuid(30f3d47a
-6447-11d1
-8e3c
-00c04fb9386d
)
819 interface IBlockingLock
: IUnknown
822 [in] DWORD dwTimeout
);
830 uuid(bc0bf6ae
-8878-11d1
-83e9
-00c04fc2c6d4
)
832 interface ITimeAndNoticeControl
: IUnknown
834 HRESULT SuppressChanges
(
844 uuid(8d19c834
-8879-11d1
-83e9
-00c04fc2c6d4
)
846 interface IOplockStorage
: IUnknown
848 HRESULT CreateStorageEx
(
849 [in] LPCWSTR pwcsName
,
854 [out, iid_is(riid
)] void **ppstgOpen
);
856 HRESULT OpenStorageEx
(
857 [in] LPCWSTR pwcsName
,
862 [out, iid_is(riid
)] void **ppstgOpen
);
865 /******************** Data Object ********************/
869 uuid(00000103-0000-0000-C000
-000000000046),
870 pointer_default(unique)
872 interface IEnumFORMATETC
: IUnknown
874 typedef [unique] IEnumFORMATETC
*LPENUMFORMATETC
;
876 typedef struct tagDVTARGETDEVICE
{
878 WORD tdDriverNameOffset
;
879 WORD tdDeviceNameOffset
;
880 WORD tdPortNameOffset
;
881 WORD tdExtDevmodeOffset
;
882 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
886 typedef CLIPFORMAT
*LPCLIPFORMAT
;
888 typedef struct tagFORMATETC
{
890 [unique] DVTARGETDEVICE
*ptd
;
894 } FORMATETC
, *LPFORMATETC
;
899 [out, size_is(celt
), length_is(*pceltFetched
)]
901 [out] ULONG
*pceltFetched
);
906 [out, size_is(celt
), length_is(*pceltFetched
)]
908 [out] ULONG
*pceltFetched
);
916 [out] IEnumFORMATETC
**ppenum
);
921 uuid(00000105-0000-0000-C000
-000000000046),
922 pointer_default(unique)
924 interface IEnumSTATDATA
: IUnknown
926 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
928 typedef enum tagADVF
{
932 ADVF_DATAONSTOP
= 64,
933 ADVFCACHE_NOHANDLER
= 8,
934 ADVFCACHE_FORCEBUILTIN
= 16,
935 ADVFCACHE_ONSAVE
= 32
938 typedef struct tagSTATDATA
942 [unique] IAdviseSink
*pAdvSink
;
944 } STATDATA
, *LPSTATDATA
;
949 [out, size_is(celt
), length_is(*pceltFetched
)]
951 [out] ULONG
*pceltFetched
);
956 [out, size_is(celt
), length_is(*pceltFetched
)]
958 [out] ULONG
*pceltFetched
);
966 [out] IEnumSTATDATA
**ppenum
);
971 uuid(0000010f
-0000-0000-C000
-000000000046),
972 pointer_default(unique)
974 interface IAdviseSink
: IUnknown
976 typedef IAdviseSink
*LPADVISESINK
;
978 typedef [v1_enum] enum tagTYMED
{
989 typedef struct tagRemSTGMEDIUM
{
993 unsigned long pUnkForRelease
;
994 unsigned long cbData
;
995 [size_is(cbData
)] byte data
[];
998 typedef struct tagSTGMEDIUM
{
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
;
1010 [unique] IUnknown
*pUnkForRelease
;
1013 /* copied from wingdi.h */
1017 #define OBJ_METADC
4
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
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
;
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")
1040 typedef struct _userSTGMEDIUM
{
1041 union _STGMEDIUM_UNION
switch(DWORD tymed
) u
{
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
;
1051 IUnknown
*pUnkForRelease
;
1054 cpp_quote
("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1055 cpp_quote
("#undef _STGMEDIUM_UNION")
1058 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1059 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1061 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1062 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1064 typedef STGMEDIUM
*LPSTGMEDIUM
;
1066 typedef struct _userFLAG_STGMEDIUM
{
1068 long fPassOwnership
;
1069 userSTGMEDIUM Stgmed
;
1070 } userFLAG_STGMEDIUM
;
1072 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1074 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1076 long fPassOwnership
;
1082 [in, unique] FORMATETC
*pFormatetc
,
1083 [in, unique] STGMEDIUM
*pStgmed
);
1085 [call_as
(OnDataChange
)]
1086 HRESULT RemoteOnDataChange
(
1087 [in, unique] FORMATETC
*pFormatetc
,
1088 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1092 [in] DWORD dwAspect
,
1095 [call_as
(OnViewChange
)]
1096 HRESULT RemoteOnViewChange
(
1097 [in] DWORD dwAspect
,
1102 [in] IMoniker
*pmk
);
1105 HRESULT RemoteOnRename
(
1106 [in] IMoniker
*pmk
);
1112 HRESULT RemoteOnSave
();
1118 HRESULT RemoteOnClose
();
1123 uuid(00000125-0000-0000-C000
-000000000046),
1124 pointer_default(unique)
1126 interface IAdviseSink2
: IAdviseSink
1128 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1131 void OnLinkSrcChange
(
1132 [in, unique] IMoniker
*pmk
);
1134 [call_as
(OnLinkSrcChange
)]
1135 HRESULT RemoteOnLinkSrcChange
(
1136 [in, unique] IMoniker
*pmk
);
1141 uuid(0000010e-0000-0000-C000
-000000000046),
1142 pointer_default(unique)
1144 interface IDataObject
: IUnknown
1146 typedef [unique] IDataObject
*LPDATAOBJECT
;
1148 typedef enum tagDATADIR
{
1155 [in, unique] FORMATETC
*pformatetcIn
,
1156 [out] STGMEDIUM
*pmedium
);
1159 HRESULT RemoteGetData
(
1160 [in, unique] FORMATETC
*pformatetcIn
,
1161 [out] STGMEDIUM
*pRemoteMedium
);
1164 HRESULT GetDataHere
(
1165 [in, unique] FORMATETC
*pformatetc
,
1166 [in, out] STGMEDIUM
*pmedium
);
1168 [call_as
(GetDataHere
)]
1169 HRESULT RemoteGetDataHere
(
1170 [in, unique] FORMATETC
*pformatetc
,
1171 [in, out] STGMEDIUM
*pRemoteMedium
);
1173 HRESULT QueryGetData
(
1174 [in, unique] FORMATETC
*pformatetc
);
1176 HRESULT GetCanonicalFormatEtc
(
1177 [in, unique] FORMATETC
*pformatectIn
,
1178 [out] FORMATETC
*pformatetcOut
);
1182 [in, unique] FORMATETC
*pformatetc
,
1183 [in, unique] STGMEDIUM
*pmedium
,
1184 [in] BOOL fRelease
);
1187 HRESULT RemoteSetData
(
1188 [in, unique] FORMATETC
*pformatetc
,
1189 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1190 [in] BOOL fRelease
);
1192 HRESULT EnumFormatEtc
(
1193 [in] DWORD dwDirection
,
1194 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1197 [in] FORMATETC
*pformatetc
,
1199 [in, unique] IAdviseSink
*pAdvSink
,
1200 [out] DWORD
*pdwConnection
);
1203 [in] DWORD dwConnection
);
1205 HRESULT EnumDAdvise
(
1206 [out] IEnumSTATDATA
**ppenumAdvise
);
1212 uuid(00000110-0000-0000-C000
-000000000046)
1214 interface IDataAdviseHolder
: IUnknown
1216 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1219 [in, unique] IDataObject
*pDataObject
,
1220 [in, unique] FORMATETC
*pFetc
,
1222 [in, unique] IAdviseSink
*pAdvise
,
1223 [out] DWORD
*pdwConnection
);
1226 [in] DWORD dwConnection
);
1229 [out] IEnumSTATDATA
**ppenumAdvise
);
1231 HRESULT SendOnDataChange
(
1232 [in, unique] IDataObject
*pDataObject
,
1233 [in] DWORD dwReserved
,
1237 /******************** Remoting ********************/
1242 uuid(00000016-0000-0000-C000
-000000000046)
1244 interface IMessageFilter
: IUnknown
1246 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1248 typedef enum tagCALLTYPE
{
1249 CALLTYPE_TOPLEVEL
= 1,
1250 CALLTYPE_NESTED
= 2,
1252 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1253 CALLTYPE_ASYNC_CALLPENDING
= 5
1256 typedef enum tagSERVERCALL
{
1257 SERVERCALL_ISHANDLED
= 0,
1258 SERVERCALL_REJECTED
= 1,
1259 SERVERCALL_RETRYLATER
= 2
1262 typedef enum tagPENDINGTYPE
{
1263 PENDINGTYPE_TOPLEVEL
= 1,
1264 PENDINGTYPE_NESTED
= 2
1267 typedef enum tagPENDINGMSG
{
1268 PENDINGMSG_CANCELCALL
= 0,
1269 PENDINGMSG_WAITNOPROCESS
= 1,
1270 PENDINGMSG_WAITDEFPROCESS
= 2
1273 typedef struct tagINTERFACEINFO
{
1277 } INTERFACEINFO
, *LPINTERFACEINFO
;
1279 DWORD HandleInComingCall
(
1280 [in] DWORD dwCallType
,
1281 [in] HTASK htaskCaller
,
1282 [in] DWORD dwTickCount
,
1283 [in] LPINTERFACEINFO lpInterfaceInfo
);
1285 DWORD RetryRejectedCall
(
1286 [in] HTASK htaskCallee
,
1287 [in] DWORD dwTickCount
,
1288 [in] DWORD dwRejectType
);
1290 DWORD MessagePending
(
1291 [in] HTASK htaskCallee
,
1292 [in] DWORD dwTickCount
,
1293 [in] DWORD dwPendingType
);
1298 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
1300 interface IDirectWriterLock
: IUnknown
1302 HRESULT WaitForWriteAccess
(
1303 [in] DWORD dwTimeout
);
1305 HRESULT ReleaseWriteAccess
();
1307 HRESULT HaveWriteAccess
();
1312 uuid(00000026-0000-0000-C000
-000000000046)
1314 interface IUrlMon
: IUnknown
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
,
1324 [in] DWORD dwClassContext
,
1332 uuid(00000145-0000-0000-C000
-000000000046)
1334 interface IForegroundTransfer
: IUnknown
1336 HRESULT AllowForegroundTransfer
(
1337 [in] void *lpvReserved
);
1343 uuid(00000034-0000-0000-C000
-000000000046),
1344 pointer_default(unique)
1346 interface IInitializeSpy
: IUnknown
1348 typedef [unique] IInitializeSpy
*LPINITIALIZESPY
;
1350 HRESULT PreInitialize
(
1351 [in] DWORD dwCoInit
,
1352 [in] DWORD dwCurThreadAptRefs
);
1354 HRESULT PostInitialize
(
1355 [in] HRESULT hrCoInit
,
1356 [in] DWORD dwCoInit
,
1357 [in] DWORD dwNewThreadAptRefs
);
1359 HRESULT PreUninitialize
(
1360 [in] DWORD dwCurThreadAptRefs
);
1362 HRESULT PostUninitialize
(
1363 [in] DWORD dwNewThreadAptRefs
);
1368 uuid(969dc708
-5c76
-11d1
-8d86
-0000f804b057
)
1370 interface IThumbnailExtractor
: IUnknown
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
);
1381 HRESULT OnFileUpdated
(
1382 [in] IStorage
*pStg
);
1387 pointer_default(unique),
1388 uuid(947990de
-cc28
-11d2
-a0f7
-00805f858fb1
)
1390 interface IDummyHICONIncluder
: IUnknown
1392 HRESULT Dummy
([in] HICON hIcon
, [in] HDC hdc
);
1398 pointer_default(unique),
1399 uuid(a2f05a09
-27a2
-42b5
-bc0e
-ac163ef49d9b
)
1401 interface IApartmentShutdown
: IUnknown
1403 void OnUninitialize
([in] UINT64 identifier
);