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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 interface IEnumString
;
23 interface IRunningObjectTable
;
25 interface IAdviseSink
;
26 interface IAsyncManager
;
28 /* FIXME: COSERVERINFO should be moved here from wtypes.idl */
30 /******************** Fundamentals ********************/
35 uuid(00000003-0000-0000-C000
-000000000046)
37 interface IMarshal
: IUnknown
39 typedef [unique] IMarshal
*LPMARSHAL
;
41 HRESULT GetUnmarshalClass
(
43 [in, unique] void *pv
,
44 [in] DWORD dwDestContext
,
45 [in, unique] void *pvDestContext
,
49 HRESULT GetMarshalSizeMax
(
51 [in, unique] void *pv
,
52 [in] DWORD dwDestContext
,
53 [in, unique] void *pvDestContext
,
57 HRESULT MarshalInterface
(
58 [in, unique] IStream
*pStm
,
60 [in, unique] void *pv
,
61 [in] DWORD dwDestContext
,
62 [in, unique] void *pvDestContext
,
63 [in] DWORD mshlflags
);
65 HRESULT UnmarshalInterface
(
66 [in, unique] IStream
*pStm
,
70 HRESULT ReleaseMarshalData
(
71 [in, unique] IStream
*pStm
);
73 HRESULT DisconnectObject
(
74 [in] DWORD dwReserved
);
80 uuid(00000018-0000-0000-C000
-000000000046)
82 interface IStdMarshalInfo
: IUnknown
84 typedef [unique] IStdMarshalInfo
*LPSTDMARSHALINFO
;
86 HRESULT GetClassForHandler
(
87 [in] DWORD dwDestContext
,
88 [in, unique] void *pvDestContext
,
95 uuid(00000019-0000-0000-C000
-000000000046)
97 interface IExternalConnection
: IUnknown
99 typedef [unique] IExternalConnection
*LPEXTERNALCONNECTION
;
101 typedef enum tagEXTCONN
{
102 EXTCONN_STRONG
= 0x0001,
103 EXTCONN_WEAK
= 0x0002,
104 EXTCONN_CALLABLE
= 0x0004
109 [in] DWORD reserved
);
111 DWORD ReleaseConnection
(
114 [in] BOOL fLastReleaseCloses
);
120 uuid(00000020-0000-0000-C000
-000000000046)
122 interface IMultiQI
: IUnknown
124 typedef [unique] IMultiQI
*LPMULTIQI
;
126 typedef struct tagMULTI_QI
{
132 HRESULT QueryMultipleInterfaces
(
134 [in, out] MULTI_QI
*pMQIs
);
140 uuid(00000002-0000-0000-C000
-000000000046)
142 interface IMalloc
: IUnknown
144 typedef [unique] IMalloc
*LPMALLOC
;
159 int DidAlloc
(LPVOID pv
);
167 uuid(0000001d
-0000-0000-C000
-000000000046)
169 interface IMallocSpy
: IUnknown
171 typedef [unique] IMallocSpy
*LPMALLOCSPY
;
174 [in] ULONG cbRequest
);
177 [in] LPVOID pActual
);
180 [in] LPVOID pRequest
,
187 [in] LPVOID pRequest
,
188 [in] ULONG cbRequest
,
189 [out] LPVOID
*ppNewRequest
,
197 [in] LPVOID pRequest
,
205 [in] LPVOID pRequest
,
209 [in] LPVOID pRequest
,
213 void PreHeapMinimize
();
215 void PostHeapMinimize
();
221 uuid(00000021-0000-0000-C000
-000000000046)
223 interface IInternalUnknown
: IUnknown
225 HRESULT QueryInternalInterface
(
232 uuid(00000100-0000-0000-C000
-000000000046),
233 pointer_default(unique)
235 interface IEnumUnknown
: IUnknown
237 typedef [unique] IEnumUnknown
*LPENUMUNKNOWN
;
242 [out] IUnknown
**rgelt
,
243 [out] ULONG
*pceltFetched
);
248 [out, size_is(celt
), length_is(*pceltFetched
)]
250 [out] ULONG
*pceltFetched
);
258 [out] IEnumUnknown
**ppenum
);
263 uuid(00000022-0000-0000-C000
-000000000046),
265 pointer_default(unique)
267 interface ISurrogate
: IUnknown
269 typedef [unique] ISurrogate
*LPSURROGATE
;
271 HRESULT LoadDllServer
(
272 [in] REFCLSID Clsid
);
273 HRESULT FreeSurrogate
();
279 uuid(00000146-0000-0000-C000
-000000000046)
281 interface IGlobalInterfaceTable
: IUnknown
283 typedef [unique] IGlobalInterfaceTable
*LPGLOBALINTERFACETABLE
;
285 HRESULT RegisterInterfaceInGlobal
(
288 [out] DWORD
*pdwCookie
);
290 HRESULT RevokeInterfaceFromGlobal
(
291 [in] DWORD dwCookie
);
293 HRESULT GetInterfaceFromGlobal
(
296 [out, iid_is(riid
)] void **ppv
);
299 /******************** Monikers ********************/
303 uuid(0000000e-0000-0000-C000
-000000000046),
304 pointer_default(unique)
306 interface IBindCtx
: IUnknown
308 typedef [unique] IBindCtx
*LPBINDCTX
;
309 typedef [unique] IBindCtx
*LPBC
;
311 typedef struct tagBIND_OPTS
{
315 DWORD dwTickCountDeadline
;
316 } BIND_OPTS
, *LPBIND_OPTS
;
318 /* FIXME: C++ crap */
319 typedef struct tagBIND_OPTS2
{
323 DWORD dwTickCountDeadline
;
325 DWORD dwClassContext
;
327 COSERVERINFO
*pServerInfo
;
328 } BIND_OPTS2
, *LPBIND_OPTS2
;
330 typedef enum tagBIND_FLAGS
{
331 BIND_MAYBOTHERUSER
= 1,
332 BIND_JUSTTESTEXISTENCE
= 2
335 HRESULT RegisterObjectBound
(
336 [in, unique] IUnknown
*punk
);
338 HRESULT RevokeObjectBound
(
339 [in, unique] IUnknown
*punk
);
341 HRESULT ReleaseBoundObjects
();
344 HRESULT SetBindOptions
(
345 [in] BIND_OPTS
*pbindopts
);
347 [call_as
(SetBindOptions
)]
348 HRESULT RemoteSetBindOptions
(
349 [in] BIND_OPTS2
*pbindopts
);
352 HRESULT GetBindOptions
(
353 [in, out] BIND_OPTS
*pbindopts
);
355 [call_as
(GetBindOptions
)]
356 HRESULT RemoteGetBindOptions
(
357 [in, out] BIND_OPTS2
*pbindopts
);
359 HRESULT GetRunningObjectTable
(
360 [out] IRunningObjectTable
**pprot
);
362 HRESULT RegisterObjectParam
(
363 [in] LPOLESTR pszKey
,
364 [in, unique] IUnknown
*punk
);
366 HRESULT GetObjectParam
(
367 [in] LPOLESTR pszKey
,
368 [out] IUnknown
**ppunk
);
370 HRESULT EnumObjectParam
(
371 [out] IEnumString
**ppenum
);
373 HRESULT RevokeObjectParam
(
374 [in] LPOLESTR pszKey
);
379 uuid(00000102-0000-0000-C000
-000000000046),
380 pointer_default(unique)
382 interface IEnumMoniker
: IUnknown
384 typedef [unique] IEnumMoniker
*LPENUMMONIKER
;
389 [out, size_is(celt
), length_is(*pceltFetched
)]
391 [out] ULONG
*pceltFetched
);
396 [out, size_is(celt
), length_is(*pceltFetched
)]
398 [out] ULONG
*pceltFetched
);
406 [out] IEnumMoniker
**ppenum
);
411 uuid(00000126-0000-0000-C000
-000000000046)
413 interface IRunnableObject
: IUnknown
415 typedef [unique] IRunnableObject
*LPRUNNABLEOBJECT
;
417 HRESULT GetRunningClass
(
418 [out] LPCLSID lpClsid
);
427 HRESULT RemoteIsRunning
();
431 [in] BOOL fLastUnlockCloses
);
433 HRESULT SetContainedObject
(
434 [in] BOOL fContained
);
437 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
438 * which resolves to a compilation failure if __WINESRC__ is defined,
439 * but GetObject is used as a valid method name below, so we have
440 * to undefine it if __WINESRC__ is defined */
441 cpp_quote
("#ifdef __WINESRC__")
442 cpp_quote
("#undef GetObject")
447 uuid(00000010-0000-0000-C000
-000000000046)
449 interface IRunningObjectTable
: IUnknown
451 typedef [unique] IRunningObjectTable
*LPRUNNINGOBJECTTABLE
;
455 [in, unique] IUnknown
*punkObject
,
456 [in, unique] IMoniker
*pmkObjectName
,
457 [out] DWORD
*pdwRegister
);
460 [in] DWORD dwRegister
);
463 [in, unique] IMoniker
*pmkObjectName
);
466 [in, unique] IMoniker
*pmkObjectName
,
467 [out] IUnknown
**ppunkObject
);
469 HRESULT NoteChangeTime
(
470 [in] DWORD dwRegister
,
471 [in] FILETIME
*pfiletime
);
473 HRESULT GetTimeOfLastChange
(
474 [in, unique] IMoniker
*pmkObjectName
,
475 [out] FILETIME
*pfiletime
);
478 [out] IEnumMoniker
**ppenumMoniker
);
483 uuid(0000010c
-0000-0000-C000
-000000000046)
485 interface IPersist
: IUnknown
487 typedef [unique] IPersist
*LPPERSIST
;
490 [out] CLSID
*pClassID
);
495 uuid(00000109-0000-0000-C000
-000000000046),
496 pointer_default(unique)
498 interface IPersistStream
: IPersist
500 typedef [unique] IPersistStream
*LPPERSISTSTREAM
;
505 [in, unique] IStream
*pStm
);
508 [in, unique] IStream
*pStm
,
509 [in] BOOL fClearDirty
);
512 [out] ULARGE_INTEGER
*pcbSize
);
517 uuid(0000000f
-0000-0000-C000
-000000000046),
518 pointer_default(unique)
520 interface IMoniker
: IPersistStream
522 typedef [unique] IMoniker
*LPMONIKER
;
524 typedef enum tagMKSYS
{
526 MKSYS_GENERICCOMPOSITE
= 1,
527 MKSYS_FILEMONIKER
= 2,
528 MKSYS_ANTIMONIKER
= 3,
529 MKSYS_ITEMMONIKER
= 4,
530 MKSYS_POINTERMONIKER
= 5,
531 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
532 MKSYS_CLASSMONIKER
= 7
535 typedef [v1_enum] enum tagMKREDUCE
{
536 MKRREDUCE_ONE
= 3 << 16,
537 MKRREDUCE_TOUSER
= 2 << 16,
538 MKRREDUCE_THROUGHUSER
= 1 << 16,
543 HRESULT BindToObject
(
544 [in, unique] IBindCtx
*pbc
,
545 [in, unique] IMoniker
*pmkToLeft
,
546 [in] REFIID riidResult
,
547 [out, iid_is(riidResult
)] void **ppvResult
);
549 [call_as
(BindToObject
)]
550 HRESULT RemoteBindToObject
(
551 [in, unique] IBindCtx
*pbc
,
552 [in, unique] IMoniker
*pmkToLeft
,
553 [in] REFIID riidResult
,
554 [out, iid_is(riidResult
)] IUnknown
**ppvResult
);
557 HRESULT BindToStorage
(
558 [in, unique] IBindCtx
*pbc
,
559 [in, unique] IMoniker
*pmkToLeft
,
561 [out, iid_is(riid
)] void **ppvObj
);
563 [call_as
(BindToStorage
)]
564 HRESULT RemoteBindToStorage
(
565 [in, unique] IBindCtx
*pbc
,
566 [in, unique] IMoniker
*pmkToLeft
,
568 [out, iid_is(riid
)] IUnknown
**ppvObj
);
571 [in, unique] IBindCtx
*pbc
,
572 [in] DWORD dwReduceHowFar
,
573 [in, out, unique] IMoniker
**ppmkToLeft
,
574 [out] IMoniker
**ppmkReduced
);
577 [in, unique] IMoniker
*pmkRight
,
578 [in] BOOL fOnlyIfNotGeneric
,
579 [out] IMoniker
**ppmkComposite
);
583 [out] IEnumMoniker
**ppenumMoniker
);
586 [in, unique] IMoniker
*pmkOtherMoniker
);
589 [out] DWORD
*pdwHash
);
592 [in, unique] IBindCtx
*pbc
,
593 [in, unique] IMoniker
*pmkToLeft
,
594 [in, unique] IMoniker
*pmkNewlyRunning
);
596 HRESULT GetTimeOfLastChange
(
597 [in, unique] IBindCtx
*pbc
,
598 [in, unique] IMoniker
*pmkToLeft
,
599 [out] FILETIME
*pFileTime
);
602 [out] IMoniker
**ppmk
);
604 HRESULT CommonPrefixWith
(
605 [in, unique] IMoniker
*pmkOther
,
606 [out] IMoniker
**ppmkPrefix
);
608 HRESULT RelativePathTo
(
609 [in, unique] IMoniker
*pmkOther
,
610 [out] IMoniker
**ppmkRelPath
);
612 HRESULT GetDisplayName
(
613 [in, unique] IBindCtx
*pbc
,
614 [in, unique] IMoniker
*pmkToLeft
,
615 [out] LPOLESTR
*ppszDisplayName
);
617 HRESULT ParseDisplayName
(
618 [in, unique] IBindCtx
*pbc
,
619 [in, unique] IMoniker
*pmkToLeft
,
620 [in] LPOLESTR pszDisplayName
,
621 [out] ULONG
*pchEaten
,
622 [out] IMoniker
**ppmkOut
);
624 HRESULT IsSystemMoniker
(
625 [out] DWORD
*pdwMksys
);
630 uuid(f29f6bc0
-5021-11ce
-aa15
-00006901293f
),
631 pointer_default(unique)
633 interface IROTData
: IUnknown
635 HRESULT GetComparisonData
(
636 [out, size_is(cbMax
)] byte *pbData
,
638 [out] ULONG
*pcbData
);
643 uuid(00000101-0000-0000-C000
-000000000046),
644 pointer_default(unique)
646 interface IEnumString
: IUnknown
648 typedef [unique] IEnumString
*LPENUMSTRING
;
653 [out, size_is(celt
), length_is(*pceltFetched
)]
655 [out] ULONG
*pceltFetched
);
660 [out, size_is(celt
), length_is(*pceltFetched
)]
662 [out] ULONG
*pceltFetched
);
670 [out] IEnumString
**ppenum
);
675 uuid(00000140-0000-0000-C000
-000000000046)
677 interface IClassActivator
: IUnknown
679 HRESULT GetClassObject
(
680 [in] REFCLSID rclsid
,
681 [in] DWORD dwClassContext
,
684 [out, iid_is(riid
)] void **ppv
);
687 /******************** Storage ********************/
691 uuid(0c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
692 pointer_default(unique)
694 interface ISequentialStream
: IUnknown
698 [out, size_is(cb
), length_is(*pcbRead
)]
701 [out] ULONG
*pcbRead
);
705 [out, size_is(cb
), length_is(*pcbRead
)]
708 [out] ULONG
*pcbRead
);
712 [in, size_is(cb
)] const void *pv
,
714 [out] ULONG
*pcbWritten
);
718 [in, size_is(cb
)] const byte *pv
,
720 [out] ULONG
*pcbWritten
);
725 uuid(0000000c
-0000-0000-C000
-000000000046),
726 pointer_default(unique)
728 interface IStream
: ISequentialStream
730 typedef [unique] IStream
*LPSTREAM
;
732 typedef struct tagSTATSTG
{
735 ULARGE_INTEGER cbSize
;
740 DWORD grfLocksSupported
;
746 typedef enum tagSTGTY
{
753 typedef enum tagSTREAM_SEEK
{
759 /* these are defined in Linux's fcntl.h,
760 * undefine them to avoid conflicts */
761 cpp_quote
("#undef LOCK_MAND")
762 cpp_quote
("#undef LOCK_READ")
763 cpp_quote
("#undef LOCK_WRITE")
764 cpp_quote
("#undef LOCK_RW")
766 typedef enum tagLOCKTYPE
{
774 [in] LARGE_INTEGER dlibMove
,
776 [out] ULARGE_INTEGER
*plibNewPosition
);
780 [in] LARGE_INTEGER dlibMove
,
782 [out] ULARGE_INTEGER
*plibNewPosition
);
785 [in] ULARGE_INTEGER libNewSize
);
789 [in, unique] IStream
*pstm
,
790 [in] ULARGE_INTEGER cb
,
791 [out] ULARGE_INTEGER
*pcbRead
,
792 [out] ULARGE_INTEGER
*pcbWritten
);
795 HRESULT RemoteCopyTo
(
796 [in, unique] IStream
*pstm
,
797 [in] ULARGE_INTEGER cb
,
798 [out] ULARGE_INTEGER
*pcbRead
,
799 [out] ULARGE_INTEGER
*pcbWritten
);
802 [in] DWORD grfCommitFlags
);
807 [in] ULARGE_INTEGER libOffset
,
808 [in] ULARGE_INTEGER cb
,
809 [in] DWORD dwLockType
);
811 HRESULT UnlockRegion
(
812 [in] ULARGE_INTEGER libOffset
,
813 [in] ULARGE_INTEGER cb
,
814 [in] DWORD dwLockType
);
817 [out] STATSTG
*pstatstg
,
818 [in] DWORD grfStatFlag
);
821 [out] IStream
**ppstm
);
826 uuid(0000000d
-0000-0000-C000
-000000000046),
827 pointer_default(unique)
829 interface IEnumSTATSTG
: IUnknown
831 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
836 [out, size_is(celt
), length_is(*pceltFetched
)]
838 [out] ULONG
*pceltFetched
);
843 [out, size_is(celt
), length_is(*pceltFetched
)]
845 [out] ULONG
*pceltFetched
);
853 [out] IEnumSTATSTG
**ppenum
);
858 uuid(0000000b
-0000-0000-C000
-000000000046),
859 pointer_default(unique)
861 interface IStorage
: IUnknown
863 typedef [unique] IStorage
*LPSTORAGE
;
865 typedef struct tagRemSNB
{
866 unsigned long ulCntStr
;
867 unsigned long ulCntChar
;
868 [size_is(ulCntChar
)] OLECHAR rgString
[];
871 typedef [unique] RemSNB
*wireSNB
;
872 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
874 HRESULT CreateStream
(
875 [in] LPCOLESTR pwcsName
,
877 [in] DWORD reserved1
,
878 [in] DWORD reserved2
,
879 [out] IStream
**ppstm
);
883 [in] LPCOLESTR pwcsName
,
884 [in, unique] void *reserved1
,
886 [in] DWORD reserved2
,
887 [out] IStream
**ppstm
);
889 [call_as
(OpenStream
)]
890 HRESULT RemoteOpenStream
(
891 [in] LPCOLESTR pwcsName
,
892 [in] unsigned long cbReserved1
,
893 [in, unique, size_is(cbReserved1
)] byte *reserved1
,
895 [in] DWORD reserved2
,
896 [out] IStream
**ppstm
);
898 HRESULT CreateStorage
(
899 [in] LPCOLESTR pwcsName
,
902 [in] DWORD reserved2
,
903 [out] IStorage
**ppstg
);
906 [in, unique] LPCOLESTR pwcsName
,
907 [in, unique] IStorage
*pstgPriority
,
909 [in, unique] SNB snbExclude
,
911 [out] IStorage
**ppstg
);
914 [in] DWORD ciidExclude
,
915 [in, unique, size_is(ciidExclude
)] const IID
*rgiidExclude
,
916 [in, unique] SNB snbExclude
,
917 [in, unique] IStorage
*pstgDest
);
919 HRESULT MoveElementTo
(
920 [in] LPCOLESTR pwcsName
,
921 [in, unique] IStorage
*pstgDest
,
922 [in] LPCOLESTR pwcsNewName
,
923 [in] DWORD grfFlags
);
926 [in] DWORD grfCommitFlags
);
931 HRESULT EnumElements
(
932 [in] DWORD reserved1
,
933 [in, unique, size_is(1)] void *reserved2
,
934 [in] DWORD reserved3
,
935 [out] IEnumSTATSTG
**ppenum
);
937 [call_as
(EnumElements
)]
938 HRESULT RemoteEnumElements
(
939 [in] DWORD reserved1
,
940 [in] unsigned long cbReserved2
,
941 [in, unique, size_is(cbReserved2
)] byte *reserved2
,
942 [in] DWORD reserved3
,
943 [out] IEnumSTATSTG
**ppenum
);
945 HRESULT DestroyElement
(
946 [in] LPCOLESTR pwcsName
);
948 HRESULT RenameElement
(
949 [in] LPCOLESTR pwcsOldName
,
950 [in] LPCOLESTR pwcsNewName
);
952 HRESULT SetElementTimes
(
953 [in, unique] LPCOLESTR pwcsName
,
954 [in, unique] const FILETIME
*pctime
,
955 [in, unique] const FILETIME
*patime
,
956 [in, unique] const FILETIME
*pmtime
);
959 [in] REFCLSID clsid
);
961 HRESULT SetStateBits
(
962 [in] DWORD grfStateBits
,
966 [out] STATSTG
*pstatstg
,
967 [in] DWORD grfStatFlag
);
972 uuid(0000010b
-0000-0000-C000
-000000000046),
973 pointer_default(unique)
975 interface IPersistFile
: IPersist
977 typedef [unique] IPersistFile
*LPPERSISTFILE
;
982 [in] LPCOLESTR pszFileName
,
986 [in, unique] LPCOLESTR pszFileName
,
987 [in] BOOL fRemember
);
989 HRESULT SaveCompleted
(
990 [in, unique] LPCOLESTR pszFileName
);
993 [out] LPOLESTR
*ppszFileName
);
998 uuid(0000010a
-0000-0000-C000
-000000000046),
999 pointer_default(unique)
1001 interface IPersistStorage
: IPersist
1003 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
1008 [in, unique] IStorage
*pStg
);
1011 [in, unique] IStorage
*pStg
);
1014 [in, unique] IStorage
*pStgSave
,
1015 [in] BOOL fSameAsLoad
);
1017 HRESULT SaveCompleted
(
1018 [in, unique] IStorage
*pStgNew
);
1020 HRESULT HandsOffStorage
();
1025 uuid(00000012-0000-0000-C000
-000000000046),
1026 pointer_default(unique)
1028 interface IRootStorage
: IUnknown
1030 typedef [unique] IRootStorage
*LPROOTSTORAGE
;
1032 HRESULT SwitchToFile
(
1033 [in] LPOLESTR pszFile
);
1038 uuid(0000000a
-0000-0000-C000
-000000000046),
1039 pointer_default(unique)
1041 interface ILockBytes
: IUnknown
1043 typedef [unique] ILockBytes
*LPLOCKBYTES
;
1047 [in] ULARGE_INTEGER ulOffset
,
1048 [out, size_is(cb
), length_is(*pcbRead
)]
1051 [out] ULONG
*pcbRead
);
1054 HRESULT RemoteReadAt
(
1055 [in] ULARGE_INTEGER ulOffset
,
1056 [out, size_is(cb
), length_is(*pcbRead
)]
1059 [out] ULONG
*pcbRead
);
1063 [in] ULARGE_INTEGER ulOffset
,
1064 [in, size_is(cb
)] const void *pv
,
1066 [out] ULONG
*pcbWritten
);
1069 HRESULT RemoteWriteAt
(
1070 [in] ULARGE_INTEGER ulOffset
,
1071 [in, size_is(cb
)] const byte *pv
,
1073 [out] ULONG
*pcbWritten
);
1078 [in] ULARGE_INTEGER cb
);
1081 [in] ULARGE_INTEGER libOffset
,
1082 [in] ULARGE_INTEGER cb
,
1083 [in] DWORD dwLockType
);
1085 HRESULT UnlockRegion
(
1086 [in] ULARGE_INTEGER libOffset
,
1087 [in] ULARGE_INTEGER cb
,
1088 [in] DWORD dwLockType
);
1091 [out] STATSTG
*pstatstg
,
1092 [in] DWORD grfStatFlag
);
1097 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
1098 pointer_default(unique)
1100 interface IFillLockBytes
: IUnknown
1104 [in, size_is(cb
)] const void *pv
,
1106 [out] ULONG
*pcbWritten
);
1108 [call_as
(FillAppend
)]
1109 HRESULT RemoteFillAppend
(
1110 [in, size_is(cb
)] const byte *pv
,
1112 [out] ULONG
*pcbWritten
);
1116 [in] ULARGE_INTEGER ulOffset
,
1117 [in, size_is(cb
)] const void *pv
,
1119 [out] ULONG
*pcbWritten
);
1122 HRESULT RemoteFillAt
(
1123 [in] ULARGE_INTEGER ulOffset
,
1124 [in, size_is(cb
)] const byte *pv
,
1126 [out] ULONG
*pcbWritten
);
1128 HRESULT SetFillSize
(
1129 [in] ULARGE_INTEGER ulSize
);
1132 [in] BOOL bCanceled
);
1137 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
1138 pointer_default(unique)
1140 interface IProgressNotify
: IUnknown
1143 [in] DWORD dwProgressCurrent
,
1144 [in] DWORD dwProgressMaximum
,
1145 [in] BOOL fAccurate
,
1152 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
1153 pointer_default(unique)
1155 interface ILayoutStorage
: IUnknown
1157 typedef struct tagStorageLayout
{
1159 OLECHAR
*pwcsElementName
;
1160 LARGE_INTEGER cOffset
;
1161 LARGE_INTEGER cBytes
;
1164 HRESULT LayoutScript
(
1165 [in] StorageLayout
*pStorageLayout
,
1166 [in] DWORD nEntries
,
1167 [in] DWORD glfInterleavedFlag
);
1169 HRESULT BeginMonitor
();
1171 HRESULT EndMonitor
();
1173 HRESULT ReLayoutDocfile
(
1174 [in] OLECHAR
*pwcsNewDfName
);
1176 HRESULT ReLayoutDocfileOnILockBytes
(
1177 [in] ILockBytes
*pILockBytes
);
1180 /******************** Data Object ********************/
1184 uuid(00000103-0000-0000-C000
-000000000046),
1185 pointer_default(unique)
1187 interface IEnumFORMATETC
: IUnknown
1189 typedef [unique] IEnumFORMATETC
*LPENUMFORMATETC
;
1191 typedef struct tagDVTARGETDEVICE
{
1193 WORD tdDriverNameOffset
;
1194 WORD tdDeviceNameOffset
;
1195 WORD tdPortNameOffset
;
1196 WORD tdExtDevmodeOffset
;
1197 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
1201 typedef CLIPFORMAT
*LPCLIPFORMAT
;
1203 typedef struct tagFORMATETC
{
1204 CLIPFORMAT cfFormat
;
1205 [unique] DVTARGETDEVICE
*ptd
;
1209 } FORMATETC
, *LPFORMATETC
;
1214 [out, size_is(celt
), length_is(*pceltFetched
)]
1216 [out] ULONG
*pceltFetched
);
1221 [out, size_is(celt
), length_is(*pceltFetched
)]
1223 [out] ULONG
*pceltFetched
);
1231 [out] IEnumFORMATETC
**ppenum
);
1236 uuid(00000105-0000-0000-C000
-000000000046),
1237 pointer_default(unique)
1239 interface IEnumSTATDATA
: IUnknown
1241 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
1243 typedef enum tagADVF
{
1245 ADVF_PRIMEFIRST
= 2,
1247 ADVF_DATAONSTOP
= 64,
1248 ADVFCACHE_NOHANDLER
= 8,
1249 ADVFCACHE_FORCEBUILTIN
= 16,
1250 ADVFCACHE_ONSAVE
= 32
1253 typedef struct tagSTATDATA
1255 FORMATETC formatetc
;
1257 [unique] IAdviseSink
*pAdvSink
;
1259 } STATDATA
, *LPSTATDATA
;
1264 [out, size_is(celt
), length_is(*pceltFetched
)]
1266 [out] ULONG
*pceltFetched
);
1271 [out, size_is(celt
), length_is(*pceltFetched
)]
1273 [out] ULONG
*pceltFetched
);
1281 [out] IEnumSTATDATA
**ppenum
);
1286 uuid(0000010f
-0000-0000-C000
-000000000046),
1287 pointer_default(unique)
1289 interface IAdviseSink
: IUnknown
1291 typedef IAdviseSink
*LPADVISESINK
;
1293 typedef [v1_enum] enum tagTYMED
{
1304 typedef struct tagRemSTGMEDIUM
{
1307 unsigned long pData
;
1308 unsigned long pUnkForRelease
;
1309 unsigned long cbData
;
1310 [size_is(cbData
)] byte data
[];
1313 /* FIXME: C/C++ nameless union version */
1314 typedef struct tagSTGMEDIUM
{
1316 [switch_is(tymed
)] union {
1317 [case(TYMED_GDI
)] HBITMAP hBitmap;
1318 [case(TYMED_MFPICT
)] HMETAFILEPICT hMetaFilePict
;
1319 [case(TYMED_ENHMF
)] HENHMETAFILE hEnhMetaFile;
1320 [case(TYMED_HGLOBAL
)] HGLOBAL hGlobal;
1321 [case(TYMED_FILE
)] LPOLESTR lpszFileName
;
1322 [case(TYMED_ISTREAM
)] IStream
*pstm
;
1323 [case(TYMED_ISTORAGE
)] IStorage
*pstg
;
1326 [unique] IUnknown
*pUnkForRelease
;
1329 /* copied from wingdi.h */
1333 #define OBJ_METADC
4
1336 #define OBJ_BITMAP
7
1337 #define OBJ_REGION
8
1338 #define OBJ_METAFILE
9
1339 #define OBJ_MEMDC
10
1340 #define OBJ_EXTPEN
11
1341 #define OBJ_ENHMETADC
12
1342 #define OBJ_ENHMETAFILE
13
1344 typedef union _GDI_OBJECT
switch(DWORD ObjectType
) u
{
1345 case OBJ_BITMAP
: wireHBITMAP
hBitmap;
1346 case OBJ_PAL
: wireHPALETTE
hPalette;
1347 default: wireHGLOBAL hGeneric
;
1350 typedef struct _userSTGMEDIUM
{
1351 union switch(DWORD tymed
) u
{
1353 case TYMED_MFPICT
: wireHMETAFILEPICT hMetaFilePict
;
1354 case TYMED_ENHMF
: wireHENHMETAFILE hHEnhMetaFile
;
1355 case TYMED_GDI
: GDI_OBJECT
*hGdiHandle
;
1356 case TYMED_HGLOBAL
: wireHGLOBAL
hGlobal;
1357 case TYMED_FILE
: LPOLESTR lpszFileName
;
1358 case TYMED_ISTREAM
: BYTE_BLOB
*pstm
;
1359 case TYMED_ISTORAGE
: BYTE_BLOB
*pstg
;
1361 IUnknown
*pUnkForRelease
;
1364 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1365 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1367 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1368 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1370 typedef STGMEDIUM
*LPSTGMEDIUM
;
1372 typedef struct _userFLAG_STGMEDIUM
{
1374 long fPassOwnership
;
1375 userSTGMEDIUM Stgmed
;
1376 } userFLAG_STGMEDIUM
;
1378 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1380 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1382 long fPassOwnership
;
1388 [in, unique] FORMATETC
*pFormatetc
,
1389 [in, unique] STGMEDIUM
*pStgmed
);
1391 [call_as
(OnDataChange
), async
]
1392 HRESULT RemoteOnDataChange
(
1393 [in] IAsyncManager
**ppIAM
,
1394 [in, unique] FORMATETC
*pFormatetc
,
1395 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1399 [in] DWORD dwAspect
,
1402 [call_as
(OnViewChange
), async
]
1403 HRESULT RemoteOnViewChange
(
1404 [in] IAsyncManager
**ppIAM
,
1405 [in] DWORD dwAspect
,
1410 [in] IMoniker
*pmk
);
1412 [call_as
(OnRename
), async
]
1413 HRESULT RemoteOnRename
(
1414 [in] IAsyncManager
**ppIAM
,
1415 [in] IMoniker
*pmk
);
1420 [call_as
(OnSave
), async
]
1421 HRESULT RemoteOnSave
(
1422 [in] IAsyncManager
**ppIAM
);
1428 HRESULT RemoteOnClose
();
1433 uuid(00000125-0000-0000-C000
-000000000046),
1434 pointer_default(unique)
1436 interface IAdviseSink2
: IAdviseSink
1438 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1441 void OnLinkSrcChange
(
1442 [in, unique] IMoniker
*pmk
);
1444 [call_as
(OnLinkSrcChange
), async
]
1445 HRESULT RemoteOnLinkSrcChange
(
1446 [in] IAsyncManager
**ppIAM
,
1447 [in, unique] IMoniker
*pmk
);
1452 uuid(0000010e-0000-0000-C000
-000000000046),
1453 pointer_default(unique)
1455 interface IDataObject
: IUnknown
1457 typedef [unique] IDataObject
*LPDATAOBJECT
;
1459 typedef enum tagDATADIR
{
1466 [in, unique] FORMATETC
*pformatetcIn
,
1467 [out] STGMEDIUM
*pmedium
);
1470 HRESULT RemoteGetData
(
1471 [in, unique] FORMATETC
*pformatetcIn
,
1472 [out] STGMEDIUM
*pRemoteMedium
);
1475 HRESULT GetDataHere
(
1476 [in, unique] FORMATETC
*pformatetc
,
1477 [in, out] STGMEDIUM
*pmedium
);
1479 [call_as
(GetDataHere
)]
1480 HRESULT RemoteGetDataHere
(
1481 [in, unique] FORMATETC
*pformatetc
,
1482 [in, out] STGMEDIUM
*pRemoteMedium
);
1484 HRESULT QueryGetData
(
1485 [in, unique] FORMATETC
*pformatetc
);
1487 HRESULT GetCanonicalFormatEtc
(
1488 [in, unique] FORMATETC
*pformatectIn
,
1489 [out] FORMATETC
*pformatetcOut
);
1493 [in, unique] FORMATETC
*pformatetc
,
1494 [in, unique] STGMEDIUM
*pmedium
,
1495 [in] BOOL fRelease
);
1498 HRESULT RemoteSetData
(
1499 [in, unique] FORMATETC
*pformatetc
,
1500 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1501 [in] BOOL fRelease
);
1503 HRESULT EnumFormatEtc
(
1504 [in] DWORD dwDirection
,
1505 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1508 [in] FORMATETC
*pformatetc
,
1510 [in, unique] IAdviseSink
*pAdvSink
,
1511 [out] DWORD
*pdwConnection
);
1514 [in] DWORD dwConnection
);
1516 HRESULT EnumDAdvise
(
1517 [out] IEnumSTATDATA
**ppenumAdvise
);
1523 uuid(00000110-0000-0000-C000
-000000000046)
1525 interface IDataAdviseHolder
: IUnknown
1527 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1530 [in, unique] IDataObject
*pDataObject
,
1531 [in, unique] FORMATETC
*pFetc
,
1533 [in, unique] IAdviseSink
*pAdvise
,
1534 [out] DWORD
*pdwConnection
);
1537 [in] DWORD dwConnection
);
1540 [out] IEnumSTATDATA
**ppenumAdvise
);
1542 HRESULT SendOnDataChange
(
1543 [in, unique] IDataObject
*pDataObject
,
1544 [in] DWORD dwReserved
,
1548 /******************** Remoting ********************/
1553 uuid(00000016-0000-0000-C000
-000000000046)
1555 interface IMessageFilter
: IUnknown
1557 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1559 typedef enum tagCALLTYPE
{
1560 CALLTYPE_TOPLEVEL
= 1,
1561 CALLTYPE_NESTED
= 2,
1563 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1564 CALLTYPE_ASYNC_CALLPENDING
= 5
1567 typedef enum tagSERVERCALL
{
1568 SERVERCALL_ISHANDLED
= 0,
1569 SERVERCALL_REJECTED
= 1,
1570 SERVERCALL_RETRYLATER
= 2
1573 typedef enum tagPENDINGTYPE
{
1574 PENDINGTYPE_TOPLEVEL
= 1,
1575 PENDINGTYPE_NESTED
= 2
1578 typedef enum tagPENDINGMSG
{
1579 PENDINGMSG_CANCELCALL
= 0,
1580 PENDINGMSG_WAITNOPROCESS
= 1,
1581 PENDINGMSG_WAITDEFPROCESS
= 2
1584 typedef struct tagINTERFACEINFO
{
1588 } INTERFACEINFO
, *LPINTERFACEINFO
;
1590 DWORD HandleInComingCall
(
1591 [in] DWORD dwCallType
,
1592 [in] HTASK htaskCaller
,
1593 [in] DWORD dwTickCount
,
1594 [in] LPINTERFACEINFO lpInterfaceInfo
);
1596 DWORD RetryRejectedCall
(
1597 [in] HTASK htaskCallee
,
1598 [in] DWORD dwTickCount
,
1599 [in] DWORD dwRejectType
);
1601 DWORD MessagePending
(
1602 [in] HTASK htaskCallee
,
1603 [in] DWORD dwTickCount
,
1604 [in] DWORD dwPendingType
);
1610 uuid(D5F56B60
-593B
-101A
-B569
-08002B2DBF7A
)
1612 interface IRpcChannelBuffer
: IUnknown
1614 typedef [unique] IRpcChannelBuffer
*LPRPCCHANNELBUFFER
;
1616 typedef unsigned long RPCOLEDATAREP
;
1618 typedef struct tagRPCOLEMESSAGE
{
1620 RPCOLEDATAREP dataRepresentation
;
1628 typedef RPCOLEMESSAGE
*PRPCOLEMESSAGE
;
1631 [in] RPCOLEMESSAGE
*pMessage
,
1634 HRESULT SendReceive
(
1635 [in,out] RPCOLEMESSAGE
*pMessage
,
1636 [out] ULONG
*pStatus
);
1639 [in] RPCOLEMESSAGE
*pMessage
);
1642 [out] DWORD
*pdwDestContext
,
1643 [out] void **ppvDestContext
);
1645 HRESULT IsConnected
();
1651 uuid(594f31d0
-7f19
-11d0
-b194
-00a0c90dc8bf
)
1653 interface IRpcChannelBuffer2
: IRpcChannelBuffer
1655 typedef [unique] IRpcChannelBuffer2
*LPRPCCHANNELBUFFER2
;
1657 HRESULT GetProtocolVersion
(
1658 [in,out] DWORD
*pdwVersion
);
1664 uuid(25B15600
-0115-11d0
-BF0D
-00AA00B8DFD2
)
1666 interface IRpcChannelBuffer3
: IRpcChannelBuffer2
1668 typedef [unique] IRpcChannelBuffer3
*LPRPCCHANNELBUFFER3
;
1671 [in,out] RPCOLEMESSAGE
*pMsg
,
1672 [out] ULONG
*pulStatus
);
1675 [in,out] RPCOLEMESSAGE
*pMsg
,
1677 [out] ULONG
*pulStatus
);
1680 [in] RPCOLEMESSAGE
*pMsg
);
1682 HRESULT GetCallContext
(
1683 [in] RPCOLEMESSAGE
*pMsg
,
1685 [out] void **pInterface
);
1687 HRESULT GetDestCtxEx
(
1688 [in] RPCOLEMESSAGE
*pMsg
,
1689 [out] DWORD
*pdwDestContext
,
1690 [out] void **ppvDestContext
);
1693 [in] RPCOLEMESSAGE
*pMsg
,
1694 [out] DWORD
*pState
);
1696 HRESULT RegisterAsync
(
1697 [in] RPCOLEMESSAGE
*pMsg
,
1698 [in] IAsyncManager
*pAsyncMgr
);
1704 uuid(D5F56A34
-593B
-101A
-B569
-08002B2DBF7A
)
1706 interface IRpcProxyBuffer
: IUnknown
1708 typedef [unique] IRpcProxyBuffer
*LPRPCPROXYBUFFER
;
1711 [in, unique] IRpcChannelBuffer
*pRpcChannelBuffer
);
1719 uuid(D5F56AFC
-593B
-101A
-B569
-08002B2DBF7A
)
1721 interface IRpcStubBuffer
: IUnknown
1723 typedef [unique] IRpcStubBuffer
*LPRPCSTUBBUFFER
;
1726 [in] IUnknown
*pUnkServer
);
1731 [in] RPCOLEMESSAGE
*_prpcmsg
,
1732 [in] IRpcChannelBuffer
*_pRpcChannelBuffer
);
1734 IRpcStubBuffer
*IsIIDSupported
(
1739 HRESULT DebugServerQueryInterface
(
1742 void DebugServerRelease
(
1749 uuid(D5F569D0
-593B
-101A
-B569
-08002B2DBF7A
)
1751 interface IPSFactoryBuffer
: IUnknown
1753 typedef [unique] IPSFactoryBuffer
*LPPSFACTORYBUFFER
;
1755 HRESULT CreateProxy
(
1756 [in] IUnknown
*pUnkOuter
,
1758 [out] IRpcProxyBuffer
**ppProxy
,
1763 [in, unique] IUnknown
*pUnkServer
,
1764 [out] IRpcStubBuffer
**ppStub
);
1770 uuid(1008c4a0
-7613-11cf
-9af1
-0020af6e72f4
)
1772 interface IChannelHook
: IUnknown
1774 typedef [unique] IChannelHook
*LPCHANNELHOOK
;
1776 typedef struct SChannelHookCallInfo
{
1783 } SChannelHookCallInfo
;
1786 [in] REFGUID uExtent
,
1788 [out] ULONG
*pDataSize
);
1790 void ClientFillBuffer
(
1791 [in] REFGUID uExtent
,
1793 [in, out] ULONG
*pDataSize
,
1794 [in] void *pDataBuffer
);
1797 [in] REFGUID uExtent
,
1799 [in] ULONG cbDataSize
,
1800 [in] void *pDataBuffer
,
1801 [in] DWORD lDataRep
,
1802 [in] HRESULT hrFault
);
1805 [in] REFGUID uExtent
,
1807 [in] ULONG cbDataSize
,
1808 [in] void *pDataBuffer
,
1809 [in] DWORD lDataRep
);
1812 [in] REFGUID uExtent
,
1814 [in] HRESULT hrFault
,
1815 [out] ULONG
*pDataSize
);
1817 void ServerFillBuffer
(
1818 [in] REFGUID uExtent
,
1820 [in, out] ULONG
*pDataSize
,
1821 [in] void *pDataBuffer
,
1822 [in] HRESULT hrFault
);
1825 extern
const FMTID FMTID_SummaryInformation
;
1826 extern
const FMTID FMTID_DocSummaryInformation
;
1827 extern
const FMTID FMTID_UserDefinedProperties
;
1830 /******************** Connection Points ********************/
1833 /******************** DCOM ********************/
1838 uuid(0000013D
-0000-0000-C000
-000000000046)
1840 interface IClientSecurity
: IUnknown
1842 typedef struct tagSOLE_AUTHENTICATION_SERVICE
{
1845 OLECHAR
*pPrincipalName
;
1847 } SOLE_AUTHENTICATION_SERVICE
;
1849 typedef SOLE_AUTHENTICATION_SERVICE
*PSOLE_AUTHENTICATION_SERVICE
;
1851 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
1853 EOAC_MUTUAL_AUTH
= 0x1,
1854 EOAC_CLOAKING
= 0x10,
1855 EOAC_SECURE_REFS
= 0x2,
1856 EOAC_ACCESS_CONTROL
= 0x4,
1858 } EOLE_AUTHENTICATION_CAPABILITIES
;
1860 HRESULT QueryBlanket
(
1861 [in] IUnknown
*pProxy
,
1862 [out] DWORD
*pAuthnSvc
,
1863 [out] DWORD
*pAuthzSvc
,
1864 [out] OLECHAR
**pServerPrincName
,
1865 [out] DWORD
*pAuthnLevel
,
1866 [out] DWORD
*pImpLevel
,
1867 [out] void **pAuthInfo
,
1868 [out] DWORD
*pCapabilites
);
1871 [in] IUnknown
*pProxy
,
1872 [in] DWORD AuthnSvc
,
1873 [in] DWORD AuthzSvc
,
1874 [in] OLECHAR
*pServerPrincName
,
1875 [in] DWORD AuthnLevel
,
1876 [in] DWORD ImpLevel
,
1877 [in] void *pAuthInfo
,
1878 [in] DWORD Capabilities
);
1881 [in] IUnknown
*pProxy
,
1882 [out] IUnknown
**ppCopy
);
1888 uuid(0000013E-0000-0000-C000
-000000000046)
1890 interface IServerSecurity
: IUnknown
1892 HRESULT QueryBlanket
(
1893 [out] DWORD
*pAuthnSvc
,
1894 [out] DWORD
*pAuthzSvc
,
1895 [out] OLECHAR
**pServerPrincName
,
1896 [out] DWORD
*pAuthnLevel
,
1897 [out] DWORD
*pImpLevel
,
1898 [out] void **pPrivs
,
1899 [out] DWORD
*pCapabilities
);
1901 HRESULT ImpersonateClient
();
1903 HRESULT RevertToSelf
();
1905 BOOL IsImpersonating
();
1911 uuid(00000024-0000-0000-C000
-000000000046)
1913 interface IAsyncSetup
: IUnknown
1915 HRESULT GetAsyncManager
(
1917 [in] IUnknown
*pOuter
,
1919 [out] IUnknown
**ppInner
,
1920 [out] IAsyncManager
**ppAsyncMgr
);
1926 uuid(0000002A
-0000-0000-C000
-000000000046)
1928 interface IAsyncManager
: IUnknown
1930 typedef enum tagDCOM_CALL_STATE
{
1932 DCOM_CALL_COMPLETE
= 1,
1933 DCOM_CALL_CANCELED
= 2
1936 HRESULT CompleteCall
(
1937 [in] HRESULT Result
);
1938 HRESULT GetCallContext
(
1940 [out] void **pInterface
);
1942 [out] ULONG
*pulStateFlags
);