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
336 typedef [v1_enum] enum tagMKREDUCE
{
337 MKRREDUCE_ONE
= 3 << 16,
338 MKRREDUCE_TOUSER
= 2 << 16,
339 MKRREDUCE_THROUGHUSER
= 1 << 16,
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
);
358 HRESULT BindToStorage
(
359 [in, unique] IBindCtx
*pbc
,
360 [in, unique] IMoniker
*pmkToLeft
,
362 [out, iid_is(riid
)] void **ppvObj
);
364 [call_as
(BindToStorage
)]
365 HRESULT RemoteBindToStorage
(
366 [in, unique] IBindCtx
*pbc
,
367 [in, unique] IMoniker
*pmkToLeft
,
369 [out, iid_is(riid
)] IUnknown
**ppvObj
);
372 [in, unique] IBindCtx
*pbc
,
373 [in] DWORD dwReduceHowFar
,
374 [in, out, unique] IMoniker
**ppmkToLeft
,
375 [out] IMoniker
**ppmkReduced
);
378 [in, unique] IMoniker
*pmkRight
,
379 [in] BOOL fOnlyIfNotGeneric
,
380 [out] IMoniker
**ppmkComposite
);
384 [out] IEnumMoniker
**ppenumMoniker
);
387 [in, unique] IMoniker
*pmkOtherMoniker
);
390 [out] DWORD
*pdwHash
);
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
);
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
);
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
,
439 [out] ULONG
*pcbData
);
444 uuid(00000140-0000-0000-C000
-000000000046)
446 interface IClassActivator
: IUnknown
448 HRESULT GetClassObject
(
449 [in] REFCLSID rclsid
,
450 [in] DWORD dwClassContext
,
453 [out, iid_is(riid
)] void **ppv
);
458 uuid(0000000d
-0000-0000-C000
-000000000046),
459 pointer_default(unique)
461 interface IEnumSTATSTG
: IUnknown
463 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
468 [out, size_is(celt
), length_is(*pceltFetched
)]
470 [out] ULONG
*pceltFetched
);
475 [out, size_is(celt
), length_is(*pceltFetched
)]
477 [out] ULONG
*pceltFetched
);
485 [out] IEnumSTATSTG
**ppenum
);
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
[];
503 typedef [unique] RemSNB
*wireSNB
;
504 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
506 HRESULT CreateStream
(
507 [in] LPCOLESTR pwcsName
,
509 [in] DWORD reserved1
,
510 [in] DWORD reserved2
,
511 [out] IStream
**ppstm
);
515 [in] LPCOLESTR pwcsName
,
516 [in, unique] void *reserved1
,
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
,
527 [in] DWORD reserved2
,
528 [out] IStream
**ppstm
);
530 HRESULT CreateStorage
(
531 [in] LPCOLESTR pwcsName
,
534 [in] DWORD reserved2
,
535 [out] IStorage
**ppstg
);
538 [in, unique] LPCOLESTR pwcsName
,
539 [in, unique] IStorage
*pstgPriority
,
541 [in, unique] SNB snbExclude
,
543 [out] IStorage
**ppstg
);
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
);
558 [in] DWORD grfCommitFlags
);
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
);
591 [in] REFCLSID clsid
);
593 HRESULT SetStateBits
(
594 [in] DWORD grfStateBits
,
598 [out] STATSTG
*pstatstg
,
599 [in] DWORD grfStatFlag
);
604 uuid(0000010b
-0000-0000-C000
-000000000046),
605 pointer_default(unique)
607 interface IPersistFile
: IPersist
609 typedef [unique] IPersistFile
*LPPERSISTFILE
;
614 [in] LPCOLESTR pszFileName
,
618 [in, unique] LPCOLESTR pszFileName
,
619 [in] BOOL fRemember
);
621 HRESULT SaveCompleted
(
622 [in, unique] LPCOLESTR pszFileName
);
625 [out] LPOLESTR
*ppszFileName
);
630 uuid(0000010a
-0000-0000-C000
-000000000046),
631 pointer_default(unique)
633 interface IPersistStorage
: IPersist
635 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
640 [in, unique] IStorage
*pStg
);
643 [in, unique] IStorage
*pStg
);
646 [in, unique] IStorage
*pStgSave
,
647 [in] BOOL fSameAsLoad
);
649 HRESULT SaveCompleted
(
650 [in, unique] IStorage
*pStgNew
);
652 HRESULT HandsOffStorage
();
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
);
670 uuid(0000000a
-0000-0000-C000
-000000000046),
671 pointer_default(unique)
673 interface ILockBytes
: IUnknown
675 typedef [unique] ILockBytes
*LPLOCKBYTES
;
679 [in] ULARGE_INTEGER ulOffset
,
680 [out, size_is(cb
), length_is(*pcbRead
)]
683 [out] ULONG
*pcbRead
);
686 HRESULT RemoteReadAt
(
687 [in] ULARGE_INTEGER ulOffset
,
688 [out, size_is(cb
), length_is(*pcbRead
)]
691 [out] ULONG
*pcbRead
);
695 [in] ULARGE_INTEGER ulOffset
,
696 [in, size_is(cb
)] const void *pv
,
698 [out] ULONG
*pcbWritten
);
701 HRESULT RemoteWriteAt
(
702 [in] ULARGE_INTEGER ulOffset
,
703 [in, size_is(cb
)] const byte *pv
,
705 [out] ULONG
*pcbWritten
);
710 [in] ULARGE_INTEGER cb
);
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
);
723 [out] STATSTG
*pstatstg
,
724 [in] DWORD grfStatFlag
);
729 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
730 pointer_default(unique)
732 interface IFillLockBytes
: IUnknown
736 [in, size_is(cb
)] const void *pv
,
738 [out] ULONG
*pcbWritten
);
740 [call_as
(FillAppend
)]
741 HRESULT RemoteFillAppend
(
742 [in, size_is(cb
)] const byte *pv
,
744 [out] ULONG
*pcbWritten
);
748 [in] ULARGE_INTEGER ulOffset
,
749 [in, size_is(cb
)] const void *pv
,
751 [out] ULONG
*pcbWritten
);
754 HRESULT RemoteFillAt
(
755 [in] ULARGE_INTEGER ulOffset
,
756 [in, size_is(cb
)] const byte *pv
,
758 [out] ULONG
*pcbWritten
);
761 [in] ULARGE_INTEGER ulSize
);
764 [in] BOOL bCanceled
);
769 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
770 pointer_default(unique)
772 interface IProgressNotify
: IUnknown
775 [in] DWORD dwProgressCurrent
,
776 [in] DWORD dwProgressMaximum
,
784 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
785 pointer_default(unique)
787 interface ILayoutStorage
: IUnknown
789 typedef struct tagStorageLayout
{
791 OLECHAR
*pwcsElementName
;
792 LARGE_INTEGER cOffset
;
793 LARGE_INTEGER cBytes
;
796 HRESULT LayoutScript
(
797 [in] StorageLayout
*pStorageLayout
,
799 [in] DWORD glfInterleavedFlag
);
801 HRESULT BeginMonitor
();
803 HRESULT EndMonitor
();
805 HRESULT ReLayoutDocfile
(
806 [in] OLECHAR
*pwcsNewDfName
);
808 HRESULT ReLayoutDocfileOnILockBytes
(
809 [in] ILockBytes
*pILockBytes
);
814 uuid(30f3d47a
-6447-11d1
-8e3c
-00c04fb9386d
)
816 interface IBlockingLock
: IUnknown
819 [in] DWORD dwTimeout
);
827 uuid(bc0bf6ae
-8878-11d1
-83e9
-00c04fc2c6d4
)
829 interface ITimeAndNoticeControl
: IUnknown
831 HRESULT SuppressChanges
(
841 uuid(8d19c834
-8879-11d1
-83e9
-00c04fc2c6d4
)
843 interface IOplockStorage
: IUnknown
845 HRESULT CreateStorageEx
(
846 [in] LPCWSTR pwcsName
,
851 [out, iid_is(riid
)] void **ppstgOpen
);
853 HRESULT OpenStorageEx
(
854 [in] LPCWSTR pwcsName
,
859 [out, iid_is(riid
)] void **ppstgOpen
);
862 /******************** Data 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
{
875 WORD tdDriverNameOffset
;
876 WORD tdDeviceNameOffset
;
877 WORD tdPortNameOffset
;
878 WORD tdExtDevmodeOffset
;
879 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
883 typedef CLIPFORMAT
*LPCLIPFORMAT
;
885 typedef struct tagFORMATETC
{
887 [unique] DVTARGETDEVICE
*ptd
;
891 } FORMATETC
, *LPFORMATETC
;
896 [out, size_is(celt
), length_is(*pceltFetched
)]
898 [out] ULONG
*pceltFetched
);
903 [out, size_is(celt
), length_is(*pceltFetched
)]
905 [out] ULONG
*pceltFetched
);
913 [out] IEnumFORMATETC
**ppenum
);
918 uuid(00000105-0000-0000-C000
-000000000046),
919 pointer_default(unique)
921 interface IEnumSTATDATA
: IUnknown
923 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
925 typedef enum tagADVF
{
929 ADVF_DATAONSTOP
= 64,
930 ADVFCACHE_NOHANDLER
= 8,
931 ADVFCACHE_FORCEBUILTIN
= 16,
932 ADVFCACHE_ONSAVE
= 32
935 typedef struct tagSTATDATA
939 [unique] IAdviseSink
*pAdvSink
;
941 } STATDATA
, *LPSTATDATA
;
946 [out, size_is(celt
), length_is(*pceltFetched
)]
948 [out] ULONG
*pceltFetched
);
953 [out, size_is(celt
), length_is(*pceltFetched
)]
955 [out] ULONG
*pceltFetched
);
963 [out] IEnumSTATDATA
**ppenum
);
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
{
986 typedef struct tagRemSTGMEDIUM
{
990 unsigned long pUnkForRelease
;
991 unsigned long cbData
;
992 [size_is(cbData
)] byte data
[];
995 typedef struct tagSTGMEDIUM
{
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
;
1007 [unique] IUnknown
*pUnkForRelease
;
1010 /* copied from wingdi.h */
1014 #define OBJ_METADC
4
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
;
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")
1037 typedef struct _userSTGMEDIUM
{
1038 union _STGMEDIUM_UNION
switch(DWORD tymed
) u
{
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
;
1048 IUnknown
*pUnkForRelease
;
1051 cpp_quote
("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1052 cpp_quote
("#undef _STGMEDIUM_UNION")
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
{
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
{
1073 long fPassOwnership
;
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
);
1089 [in] DWORD dwAspect
,
1092 [call_as
(OnViewChange
)]
1093 HRESULT RemoteOnViewChange
(
1094 [in] DWORD dwAspect
,
1099 [in] IMoniker
*pmk
);
1102 HRESULT RemoteOnRename
(
1103 [in] IMoniker
*pmk
);
1109 HRESULT RemoteOnSave
();
1115 HRESULT RemoteOnClose
();
1120 uuid(00000125-0000-0000-C000
-000000000046),
1121 pointer_default(unique)
1123 interface IAdviseSink2
: IAdviseSink
1125 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1128 void OnLinkSrcChange
(
1129 [in, unique] IMoniker
*pmk
);
1131 [call_as
(OnLinkSrcChange
)]
1132 HRESULT RemoteOnLinkSrcChange
(
1133 [in, unique] IMoniker
*pmk
);
1138 uuid(0000010e-0000-0000-C000
-000000000046),
1139 pointer_default(unique)
1141 interface IDataObject
: IUnknown
1143 typedef [unique] IDataObject
*LPDATAOBJECT
;
1145 typedef enum tagDATADIR
{
1152 [in, unique] FORMATETC
*pformatetcIn
,
1153 [out] STGMEDIUM
*pmedium
);
1156 HRESULT RemoteGetData
(
1157 [in, unique] FORMATETC
*pformatetcIn
,
1158 [out] STGMEDIUM
*pRemoteMedium
);
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
);
1179 [in, unique] FORMATETC
*pformatetc
,
1180 [in, unique] STGMEDIUM
*pmedium
,
1181 [in] BOOL fRelease
);
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
);
1194 [in] FORMATETC
*pformatetc
,
1196 [in, unique] IAdviseSink
*pAdvSink
,
1197 [out] DWORD
*pdwConnection
);
1200 [in] DWORD dwConnection
);
1202 HRESULT EnumDAdvise
(
1203 [out] IEnumSTATDATA
**ppenumAdvise
);
1209 uuid(00000110-0000-0000-C000
-000000000046)
1211 interface IDataAdviseHolder
: IUnknown
1213 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1216 [in, unique] IDataObject
*pDataObject
,
1217 [in, unique] FORMATETC
*pFetc
,
1219 [in, unique] IAdviseSink
*pAdvise
,
1220 [out] DWORD
*pdwConnection
);
1223 [in] DWORD dwConnection
);
1226 [out] IEnumSTATDATA
**ppenumAdvise
);
1228 HRESULT SendOnDataChange
(
1229 [in, unique] IDataObject
*pDataObject
,
1230 [in] DWORD dwReserved
,
1234 /******************** Remoting ********************/
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,
1249 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1250 CALLTYPE_ASYNC_CALLPENDING
= 5
1253 typedef enum tagSERVERCALL
{
1254 SERVERCALL_ISHANDLED
= 0,
1255 SERVERCALL_REJECTED
= 1,
1256 SERVERCALL_RETRYLATER
= 2
1259 typedef enum tagPENDINGTYPE
{
1260 PENDINGTYPE_TOPLEVEL
= 1,
1261 PENDINGTYPE_NESTED
= 2
1264 typedef enum tagPENDINGMSG
{
1265 PENDINGMSG_CANCELCALL
= 0,
1266 PENDINGMSG_WAITNOPROCESS
= 1,
1267 PENDINGMSG_WAITDEFPROCESS
= 2
1270 typedef struct tagINTERFACEINFO
{
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
);
1295 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
1297 interface IDirectWriterLock
: IUnknown
1299 HRESULT WaitForWriteAccess
(
1300 [in] DWORD dwTimeout
);
1302 HRESULT ReleaseWriteAccess
();
1304 HRESULT HaveWriteAccess
();
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
,
1321 [in] DWORD dwClassContext
,
1329 uuid(00000145-0000-0000-C000
-000000000046)
1331 interface IForegroundTransfer
: IUnknown
1333 HRESULT AllowForegroundTransfer
(
1334 [in] void *lpvReserved
);
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
);
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
);
1384 pointer_default(unique),
1385 uuid(947990de
-cc28
-11d2
-a0f7
-00805f858fb1
)
1387 interface IDummyHICONIncluder
: IUnknown
1389 HRESULT Dummy
([in] HICON hIcon
, [in] HDC hdc
);
1395 pointer_default(unique),
1396 uuid(a2f05a09
-27a2
-42b5
-bc0e
-ac163ef49d9b
)
1398 interface IApartmentShutdown
: IUnknown
1400 void OnUninitialize
([in] UINT64 identifier
);