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
24 interface IEnumString
;
25 interface IRunningObjectTable
;
27 interface IAdviseSink
;
28 interface IAsyncManager
;
29 interface ISynchronize
;
31 typedef struct _COSERVERINFO
{
34 COAUTHINFO
*pAuthInfo
;
38 /******************** Fundamentals ********************/
43 uuid(00000003-0000-0000-C000
-000000000046)
45 interface IMarshal
: IUnknown
47 typedef [unique] IMarshal
*LPMARSHAL
;
49 HRESULT GetUnmarshalClass
(
51 [in, unique] void *pv
,
52 [in] DWORD dwDestContext
,
53 [in, unique] void *pvDestContext
,
57 HRESULT GetMarshalSizeMax
(
59 [in, unique] void *pv
,
60 [in] DWORD dwDestContext
,
61 [in, unique] void *pvDestContext
,
65 HRESULT MarshalInterface
(
66 [in, unique] IStream
*pStm
,
68 [in, unique] void *pv
,
69 [in] DWORD dwDestContext
,
70 [in, unique] void *pvDestContext
,
71 [in] DWORD mshlflags
);
73 HRESULT UnmarshalInterface
(
74 [in, unique] IStream
*pStm
,
78 HRESULT ReleaseMarshalData
(
79 [in, unique] IStream
*pStm
);
81 HRESULT DisconnectObject
(
82 [in] DWORD dwReserved
);
88 uuid(000001cf
-0000-0000-C000
-000000000046)
90 interface IMarshal2
: IMarshal
92 typedef [unique] IMarshal2
*LPMARSHAL2
;
98 uuid(00000018-0000-0000-C000
-000000000046)
100 interface IStdMarshalInfo
: IUnknown
102 typedef [unique] IStdMarshalInfo
*LPSTDMARSHALINFO
;
104 HRESULT GetClassForHandler
(
105 [in] DWORD dwDestContext
,
106 [in, unique] void *pvDestContext
,
107 [out] CLSID
*pClsid
);
113 uuid(00000019-0000-0000-C000
-000000000046)
115 interface IExternalConnection
: IUnknown
117 typedef [unique] IExternalConnection
*LPEXTERNALCONNECTION
;
119 typedef enum tagEXTCONN
{
120 EXTCONN_STRONG
= 0x0001,
121 EXTCONN_WEAK
= 0x0002,
122 EXTCONN_CALLABLE
= 0x0004
127 [in] DWORD reserved
);
129 DWORD ReleaseConnection
(
132 [in] BOOL fLastReleaseCloses
);
138 uuid(00000020-0000-0000-C000
-000000000046)
140 interface IMultiQI
: IUnknown
142 typedef [unique] IMultiQI
*LPMULTIQI
;
144 typedef struct tagMULTI_QI
{
150 HRESULT QueryMultipleInterfaces
(
152 [in, out] MULTI_QI
*pMQIs
);
158 uuid(00000002-0000-0000-C000
-000000000046)
160 interface IMalloc
: IUnknown
162 typedef [unique] IMalloc
*LPMALLOC
;
177 int DidAlloc
(LPVOID pv
);
185 uuid(0000001d
-0000-0000-C000
-000000000046)
187 interface IMallocSpy
: IUnknown
189 typedef [unique] IMallocSpy
*LPMALLOCSPY
;
192 [in] ULONG cbRequest
);
195 [in] LPVOID pActual
);
198 [in] LPVOID pRequest
,
205 [in] LPVOID pRequest
,
206 [in] ULONG cbRequest
,
207 [out] LPVOID
*ppNewRequest
,
215 [in] LPVOID pRequest
,
223 [in] LPVOID pRequest
,
227 [in] LPVOID pRequest
,
231 void PreHeapMinimize
();
233 void PostHeapMinimize
();
239 uuid(00000021-0000-0000-C000
-000000000046)
241 interface IInternalUnknown
: IUnknown
243 HRESULT QueryInternalInterface
(
250 uuid(00000100-0000-0000-C000
-000000000046),
251 pointer_default(unique)
253 interface IEnumUnknown
: IUnknown
255 typedef [unique] IEnumUnknown
*LPENUMUNKNOWN
;
260 [out] IUnknown
**rgelt
,
261 [out] ULONG
*pceltFetched
);
266 [out, size_is(celt
), length_is(*pceltFetched
)]
268 [out] ULONG
*pceltFetched
);
276 [out] IEnumUnknown
**ppenum
);
281 uuid(00000022-0000-0000-C000
-000000000046),
283 pointer_default(unique)
285 interface ISurrogate
: IUnknown
287 typedef [unique] ISurrogate
*LPSURROGATE
;
289 HRESULT LoadDllServer
(
290 [in] REFCLSID Clsid
);
291 HRESULT FreeSurrogate
();
297 uuid(00000146-0000-0000-C000
-000000000046)
299 interface IGlobalInterfaceTable
: IUnknown
301 typedef [unique] IGlobalInterfaceTable
*LPGLOBALINTERFACETABLE
;
303 HRESULT RegisterInterfaceInGlobal
(
306 [out] DWORD
*pdwCookie
);
308 HRESULT RevokeInterfaceFromGlobal
(
309 [in] DWORD dwCookie
);
311 HRESULT GetInterfaceFromGlobal
(
314 [out, iid_is(riid
)] void **ppv
);
317 /******************** Monikers ********************/
321 uuid(0000000e-0000-0000-C000
-000000000046),
322 pointer_default(unique)
324 interface IBindCtx
: IUnknown
326 typedef [unique] IBindCtx
*LPBINDCTX
;
327 typedef [unique] IBindCtx
*LPBC
;
329 typedef struct tagBIND_OPTS
{
333 DWORD dwTickCountDeadline
;
334 } BIND_OPTS
, *LPBIND_OPTS
;
336 /* FIXME: C++ crap */
337 typedef struct tagBIND_OPTS2
{
341 DWORD dwTickCountDeadline
;
343 DWORD dwClassContext
;
345 COSERVERINFO
*pServerInfo
;
346 } BIND_OPTS2
, *LPBIND_OPTS2
;
348 typedef enum tagBIND_FLAGS
{
349 BIND_MAYBOTHERUSER
= 1,
350 BIND_JUSTTESTEXISTENCE
= 2
353 HRESULT RegisterObjectBound
(
354 [in, unique] IUnknown
*punk
);
356 HRESULT RevokeObjectBound
(
357 [in, unique] IUnknown
*punk
);
359 HRESULT ReleaseBoundObjects
();
362 HRESULT SetBindOptions
(
363 [in] BIND_OPTS
*pbindopts
);
365 [call_as
(SetBindOptions
)]
366 HRESULT RemoteSetBindOptions
(
367 [in] BIND_OPTS2
*pbindopts
);
370 HRESULT GetBindOptions
(
371 [in, out] BIND_OPTS
*pbindopts
);
373 [call_as
(GetBindOptions
)]
374 HRESULT RemoteGetBindOptions
(
375 [in, out] BIND_OPTS2
*pbindopts
);
377 HRESULT GetRunningObjectTable
(
378 [out] IRunningObjectTable
**pprot
);
380 HRESULT RegisterObjectParam
(
381 [in] LPOLESTR pszKey
,
382 [in, unique] IUnknown
*punk
);
384 HRESULT GetObjectParam
(
385 [in] LPOLESTR pszKey
,
386 [out] IUnknown
**ppunk
);
388 HRESULT EnumObjectParam
(
389 [out] IEnumString
**ppenum
);
391 HRESULT RevokeObjectParam
(
392 [in] LPOLESTR pszKey
);
397 uuid(00000102-0000-0000-C000
-000000000046),
398 pointer_default(unique)
400 interface IEnumMoniker
: IUnknown
402 typedef [unique] IEnumMoniker
*LPENUMMONIKER
;
407 [out, size_is(celt
), length_is(*pceltFetched
)]
409 [out] ULONG
*pceltFetched
);
414 [out, size_is(celt
), length_is(*pceltFetched
)]
416 [out] ULONG
*pceltFetched
);
424 [out] IEnumMoniker
**ppenum
);
429 uuid(00000126-0000-0000-C000
-000000000046)
431 interface IRunnableObject
: IUnknown
433 typedef [unique] IRunnableObject
*LPRUNNABLEOBJECT
;
435 HRESULT GetRunningClass
(
436 [out] LPCLSID lpClsid
);
445 HRESULT RemoteIsRunning
();
449 [in] BOOL fLastUnlockCloses
);
451 HRESULT SetContainedObject
(
452 [in] BOOL fContained
);
455 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
456 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
457 * but GetObject is used as a valid method name below, so we have
458 * to undefine it in that case */
459 cpp_quote
("#ifdef WINE_NO_UNICODE_MACROS")
460 cpp_quote
("#undef GetObject")
465 uuid(00000010-0000-0000-C000
-000000000046)
467 interface IRunningObjectTable
: IUnknown
469 typedef [unique] IRunningObjectTable
*LPRUNNINGOBJECTTABLE
;
473 [in, unique] IUnknown
*punkObject
,
474 [in, unique] IMoniker
*pmkObjectName
,
475 [out] DWORD
*pdwRegister
);
478 [in] DWORD dwRegister
);
481 [in, unique] IMoniker
*pmkObjectName
);
484 [in, unique] IMoniker
*pmkObjectName
,
485 [out] IUnknown
**ppunkObject
);
487 HRESULT NoteChangeTime
(
488 [in] DWORD dwRegister
,
489 [in] FILETIME
*pfiletime
);
491 HRESULT GetTimeOfLastChange
(
492 [in, unique] IMoniker
*pmkObjectName
,
493 [out] FILETIME
*pfiletime
);
496 [out] IEnumMoniker
**ppenumMoniker
);
501 uuid(0000010c
-0000-0000-C000
-000000000046)
503 interface IPersist
: IUnknown
505 typedef [unique] IPersist
*LPPERSIST
;
508 [out] CLSID
*pClassID
);
513 uuid(00000109-0000-0000-C000
-000000000046),
514 pointer_default(unique)
516 interface IPersistStream
: IPersist
518 typedef [unique] IPersistStream
*LPPERSISTSTREAM
;
523 [in, unique] IStream
*pStm
);
526 [in, unique] IStream
*pStm
,
527 [in] BOOL fClearDirty
);
530 [out] ULARGE_INTEGER
*pcbSize
);
535 uuid(0000000f
-0000-0000-C000
-000000000046),
536 pointer_default(unique)
538 interface IMoniker
: IPersistStream
540 typedef [unique] IMoniker
*LPMONIKER
;
542 typedef enum tagMKSYS
{
544 MKSYS_GENERICCOMPOSITE
= 1,
545 MKSYS_FILEMONIKER
= 2,
546 MKSYS_ANTIMONIKER
= 3,
547 MKSYS_ITEMMONIKER
= 4,
548 MKSYS_POINTERMONIKER
= 5,
549 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
550 MKSYS_CLASSMONIKER
= 7
553 typedef [v1_enum] enum tagMKREDUCE
{
554 MKRREDUCE_ONE
= 3 << 16,
555 MKRREDUCE_TOUSER
= 2 << 16,
556 MKRREDUCE_THROUGHUSER
= 1 << 16,
561 HRESULT BindToObject
(
562 [in, unique] IBindCtx
*pbc
,
563 [in, unique] IMoniker
*pmkToLeft
,
564 [in] REFIID riidResult
,
565 [out, iid_is(riidResult
)] void **ppvResult
);
567 [call_as
(BindToObject
)]
568 HRESULT RemoteBindToObject
(
569 [in, unique] IBindCtx
*pbc
,
570 [in, unique] IMoniker
*pmkToLeft
,
571 [in] REFIID riidResult
,
572 [out, iid_is(riidResult
)] IUnknown
**ppvResult
);
575 HRESULT BindToStorage
(
576 [in, unique] IBindCtx
*pbc
,
577 [in, unique] IMoniker
*pmkToLeft
,
579 [out, iid_is(riid
)] void **ppvObj
);
581 [call_as
(BindToStorage
)]
582 HRESULT RemoteBindToStorage
(
583 [in, unique] IBindCtx
*pbc
,
584 [in, unique] IMoniker
*pmkToLeft
,
586 [out, iid_is(riid
)] IUnknown
**ppvObj
);
589 [in, unique] IBindCtx
*pbc
,
590 [in] DWORD dwReduceHowFar
,
591 [in, out, unique] IMoniker
**ppmkToLeft
,
592 [out] IMoniker
**ppmkReduced
);
595 [in, unique] IMoniker
*pmkRight
,
596 [in] BOOL fOnlyIfNotGeneric
,
597 [out] IMoniker
**ppmkComposite
);
601 [out] IEnumMoniker
**ppenumMoniker
);
604 [in, unique] IMoniker
*pmkOtherMoniker
);
607 [out] DWORD
*pdwHash
);
610 [in, unique] IBindCtx
*pbc
,
611 [in, unique] IMoniker
*pmkToLeft
,
612 [in, unique] IMoniker
*pmkNewlyRunning
);
614 HRESULT GetTimeOfLastChange
(
615 [in, unique] IBindCtx
*pbc
,
616 [in, unique] IMoniker
*pmkToLeft
,
617 [out] FILETIME
*pFileTime
);
620 [out] IMoniker
**ppmk
);
622 HRESULT CommonPrefixWith
(
623 [in, unique] IMoniker
*pmkOther
,
624 [out] IMoniker
**ppmkPrefix
);
626 HRESULT RelativePathTo
(
627 [in, unique] IMoniker
*pmkOther
,
628 [out] IMoniker
**ppmkRelPath
);
630 HRESULT GetDisplayName
(
631 [in, unique] IBindCtx
*pbc
,
632 [in, unique] IMoniker
*pmkToLeft
,
633 [out] LPOLESTR
*ppszDisplayName
);
635 HRESULT ParseDisplayName
(
636 [in, unique] IBindCtx
*pbc
,
637 [in, unique] IMoniker
*pmkToLeft
,
638 [in] LPOLESTR pszDisplayName
,
639 [out] ULONG
*pchEaten
,
640 [out] IMoniker
**ppmkOut
);
642 HRESULT IsSystemMoniker
(
643 [out] DWORD
*pdwMksys
);
648 uuid(f29f6bc0
-5021-11ce
-aa15
-00006901293f
),
649 pointer_default(unique)
651 interface IROTData
: IUnknown
653 HRESULT GetComparisonData
(
654 [out, size_is(cbMax
)] byte *pbData
,
656 [out] ULONG
*pcbData
);
661 uuid(00000101-0000-0000-C000
-000000000046),
662 pointer_default(unique)
664 interface IEnumString
: IUnknown
666 typedef [unique] IEnumString
*LPENUMSTRING
;
671 [out, size_is(celt
), length_is(*pceltFetched
)]
673 [out] ULONG
*pceltFetched
);
678 [out, size_is(celt
), length_is(*pceltFetched
)]
680 [out] ULONG
*pceltFetched
);
688 [out] IEnumString
**ppenum
);
693 uuid(00000140-0000-0000-C000
-000000000046)
695 interface IClassActivator
: IUnknown
697 HRESULT GetClassObject
(
698 [in] REFCLSID rclsid
,
699 [in] DWORD dwClassContext
,
702 [out, iid_is(riid
)] void **ppv
);
705 /******************** Storage ********************/
709 uuid(0c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
710 pointer_default(unique)
712 interface ISequentialStream
: IUnknown
716 [out, size_is(cb
), length_is(*pcbRead
)]
719 [out] ULONG
*pcbRead
);
723 [out, size_is(cb
), length_is(*pcbRead
)]
726 [out] ULONG
*pcbRead
);
730 [in, size_is(cb
)] const void *pv
,
732 [out] ULONG
*pcbWritten
);
736 [in, size_is(cb
)] const byte *pv
,
738 [out] ULONG
*pcbWritten
);
743 uuid(0000000c
-0000-0000-C000
-000000000046),
744 pointer_default(unique)
746 interface IStream
: ISequentialStream
748 typedef [unique] IStream
*LPSTREAM
;
750 typedef struct tagSTATSTG
{
753 ULARGE_INTEGER cbSize
;
758 DWORD grfLocksSupported
;
764 typedef enum tagSTGTY
{
771 typedef enum tagSTREAM_SEEK
{
777 /* these are defined in Linux's fcntl.h,
778 * undefine them to avoid conflicts */
779 cpp_quote
("#undef LOCK_MAND")
780 cpp_quote
("#undef LOCK_READ")
781 cpp_quote
("#undef LOCK_WRITE")
782 cpp_quote
("#undef LOCK_RW")
784 typedef enum tagLOCKTYPE
{
792 [in] LARGE_INTEGER dlibMove
,
794 [out] ULARGE_INTEGER
*plibNewPosition
);
798 [in] LARGE_INTEGER dlibMove
,
800 [out] ULARGE_INTEGER
*plibNewPosition
);
803 [in] ULARGE_INTEGER libNewSize
);
807 [in, unique] IStream
*pstm
,
808 [in] ULARGE_INTEGER cb
,
809 [out] ULARGE_INTEGER
*pcbRead
,
810 [out] ULARGE_INTEGER
*pcbWritten
);
813 HRESULT RemoteCopyTo
(
814 [in, unique] IStream
*pstm
,
815 [in] ULARGE_INTEGER cb
,
816 [out] ULARGE_INTEGER
*pcbRead
,
817 [out] ULARGE_INTEGER
*pcbWritten
);
820 [in] DWORD grfCommitFlags
);
825 [in] ULARGE_INTEGER libOffset
,
826 [in] ULARGE_INTEGER cb
,
827 [in] DWORD dwLockType
);
829 HRESULT UnlockRegion
(
830 [in] ULARGE_INTEGER libOffset
,
831 [in] ULARGE_INTEGER cb
,
832 [in] DWORD dwLockType
);
835 [out] STATSTG
*pstatstg
,
836 [in] DWORD grfStatFlag
);
839 [out] IStream
**ppstm
);
844 uuid(0000000d
-0000-0000-C000
-000000000046),
845 pointer_default(unique)
847 interface IEnumSTATSTG
: IUnknown
849 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
854 [out, size_is(celt
), length_is(*pceltFetched
)]
856 [out] ULONG
*pceltFetched
);
861 [out, size_is(celt
), length_is(*pceltFetched
)]
863 [out] ULONG
*pceltFetched
);
871 [out] IEnumSTATSTG
**ppenum
);
876 uuid(0000000b
-0000-0000-C000
-000000000046),
877 pointer_default(unique)
879 interface IStorage
: IUnknown
881 typedef [unique] IStorage
*LPSTORAGE
;
883 typedef struct tagRemSNB
{
884 unsigned long ulCntStr
;
885 unsigned long ulCntChar
;
886 [size_is(ulCntChar
)] OLECHAR rgString
[];
889 typedef [unique] RemSNB
*wireSNB
;
890 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
892 HRESULT CreateStream
(
893 [in] LPCOLESTR pwcsName
,
895 [in] DWORD reserved1
,
896 [in] DWORD reserved2
,
897 [out] IStream
**ppstm
);
901 [in] LPCOLESTR pwcsName
,
902 [in, unique] void *reserved1
,
904 [in] DWORD reserved2
,
905 [out] IStream
**ppstm
);
907 [call_as
(OpenStream
)]
908 HRESULT RemoteOpenStream
(
909 [in] LPCOLESTR pwcsName
,
910 [in] unsigned long cbReserved1
,
911 [in, unique, size_is(cbReserved1
)] byte *reserved1
,
913 [in] DWORD reserved2
,
914 [out] IStream
**ppstm
);
916 HRESULT CreateStorage
(
917 [in] LPCOLESTR pwcsName
,
920 [in] DWORD reserved2
,
921 [out] IStorage
**ppstg
);
924 [in, unique] LPCOLESTR pwcsName
,
925 [in, unique] IStorage
*pstgPriority
,
927 [in, unique] SNB snbExclude
,
929 [out] IStorage
**ppstg
);
932 [in] DWORD ciidExclude
,
933 [in, unique, size_is(ciidExclude
)] const IID
*rgiidExclude
,
934 [in, unique] SNB snbExclude
,
935 [in, unique] IStorage
*pstgDest
);
937 HRESULT MoveElementTo
(
938 [in] LPCOLESTR pwcsName
,
939 [in, unique] IStorage
*pstgDest
,
940 [in] LPCOLESTR pwcsNewName
,
941 [in] DWORD grfFlags
);
944 [in] DWORD grfCommitFlags
);
949 HRESULT EnumElements
(
950 [in] DWORD reserved1
,
951 [in, unique, size_is(1)] void *reserved2
,
952 [in] DWORD reserved3
,
953 [out] IEnumSTATSTG
**ppenum
);
955 [call_as
(EnumElements
)]
956 HRESULT RemoteEnumElements
(
957 [in] DWORD reserved1
,
958 [in] unsigned long cbReserved2
,
959 [in, unique, size_is(cbReserved2
)] byte *reserved2
,
960 [in] DWORD reserved3
,
961 [out] IEnumSTATSTG
**ppenum
);
963 HRESULT DestroyElement
(
964 [in] LPCOLESTR pwcsName
);
966 HRESULT RenameElement
(
967 [in] LPCOLESTR pwcsOldName
,
968 [in] LPCOLESTR pwcsNewName
);
970 HRESULT SetElementTimes
(
971 [in, unique] LPCOLESTR pwcsName
,
972 [in, unique] const FILETIME
*pctime
,
973 [in, unique] const FILETIME
*patime
,
974 [in, unique] const FILETIME
*pmtime
);
977 [in] REFCLSID clsid
);
979 HRESULT SetStateBits
(
980 [in] DWORD grfStateBits
,
984 [out] STATSTG
*pstatstg
,
985 [in] DWORD grfStatFlag
);
990 uuid(0000010b
-0000-0000-C000
-000000000046),
991 pointer_default(unique)
993 interface IPersistFile
: IPersist
995 typedef [unique] IPersistFile
*LPPERSISTFILE
;
1000 [in] LPCOLESTR pszFileName
,
1004 [in, unique] LPCOLESTR pszFileName
,
1005 [in] BOOL fRemember
);
1007 HRESULT SaveCompleted
(
1008 [in, unique] LPCOLESTR pszFileName
);
1011 [out] LPOLESTR
*ppszFileName
);
1016 uuid(0000010a
-0000-0000-C000
-000000000046),
1017 pointer_default(unique)
1019 interface IPersistStorage
: IPersist
1021 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
1026 [in, unique] IStorage
*pStg
);
1029 [in, unique] IStorage
*pStg
);
1032 [in, unique] IStorage
*pStgSave
,
1033 [in] BOOL fSameAsLoad
);
1035 HRESULT SaveCompleted
(
1036 [in, unique] IStorage
*pStgNew
);
1038 HRESULT HandsOffStorage
();
1043 uuid(00000012-0000-0000-C000
-000000000046),
1044 pointer_default(unique)
1046 interface IRootStorage
: IUnknown
1048 typedef [unique] IRootStorage
*LPROOTSTORAGE
;
1050 HRESULT SwitchToFile
(
1051 [in] LPOLESTR pszFile
);
1056 uuid(0000000a
-0000-0000-C000
-000000000046),
1057 pointer_default(unique)
1059 interface ILockBytes
: IUnknown
1061 typedef [unique] ILockBytes
*LPLOCKBYTES
;
1065 [in] ULARGE_INTEGER ulOffset
,
1066 [out, size_is(cb
), length_is(*pcbRead
)]
1069 [out] ULONG
*pcbRead
);
1072 HRESULT RemoteReadAt
(
1073 [in] ULARGE_INTEGER ulOffset
,
1074 [out, size_is(cb
), length_is(*pcbRead
)]
1077 [out] ULONG
*pcbRead
);
1081 [in] ULARGE_INTEGER ulOffset
,
1082 [in, size_is(cb
)] const void *pv
,
1084 [out] ULONG
*pcbWritten
);
1087 HRESULT RemoteWriteAt
(
1088 [in] ULARGE_INTEGER ulOffset
,
1089 [in, size_is(cb
)] const byte *pv
,
1091 [out] ULONG
*pcbWritten
);
1096 [in] ULARGE_INTEGER cb
);
1099 [in] ULARGE_INTEGER libOffset
,
1100 [in] ULARGE_INTEGER cb
,
1101 [in] DWORD dwLockType
);
1103 HRESULT UnlockRegion
(
1104 [in] ULARGE_INTEGER libOffset
,
1105 [in] ULARGE_INTEGER cb
,
1106 [in] DWORD dwLockType
);
1109 [out] STATSTG
*pstatstg
,
1110 [in] DWORD grfStatFlag
);
1115 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
1116 pointer_default(unique)
1118 interface IFillLockBytes
: IUnknown
1122 [in, size_is(cb
)] const void *pv
,
1124 [out] ULONG
*pcbWritten
);
1126 [call_as
(FillAppend
)]
1127 HRESULT RemoteFillAppend
(
1128 [in, size_is(cb
)] const byte *pv
,
1130 [out] ULONG
*pcbWritten
);
1134 [in] ULARGE_INTEGER ulOffset
,
1135 [in, size_is(cb
)] const void *pv
,
1137 [out] ULONG
*pcbWritten
);
1140 HRESULT RemoteFillAt
(
1141 [in] ULARGE_INTEGER ulOffset
,
1142 [in, size_is(cb
)] const byte *pv
,
1144 [out] ULONG
*pcbWritten
);
1146 HRESULT SetFillSize
(
1147 [in] ULARGE_INTEGER ulSize
);
1150 [in] BOOL bCanceled
);
1155 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
1156 pointer_default(unique)
1158 interface IProgressNotify
: IUnknown
1161 [in] DWORD dwProgressCurrent
,
1162 [in] DWORD dwProgressMaximum
,
1163 [in] BOOL fAccurate
,
1170 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
1171 pointer_default(unique)
1173 interface ILayoutStorage
: IUnknown
1175 typedef struct tagStorageLayout
{
1177 OLECHAR
*pwcsElementName
;
1178 LARGE_INTEGER cOffset
;
1179 LARGE_INTEGER cBytes
;
1182 HRESULT LayoutScript
(
1183 [in] StorageLayout
*pStorageLayout
,
1184 [in] DWORD nEntries
,
1185 [in] DWORD glfInterleavedFlag
);
1187 HRESULT BeginMonitor
();
1189 HRESULT EndMonitor
();
1191 HRESULT ReLayoutDocfile
(
1192 [in] OLECHAR
*pwcsNewDfName
);
1194 HRESULT ReLayoutDocfileOnILockBytes
(
1195 [in] ILockBytes
*pILockBytes
);
1200 uuid(30f3d47a
-6447-11d1
-8e3c
-00c04fb9386d
)
1202 interface IBlockingLock
: IUnknown
1205 [in] DWORD dwTimeout
);
1213 uuid(bc0bf6ae
-8878-11d1
-83e9
-00c04fc2c6d4
)
1215 interface ITimeAndNoticeControl
: IUnknown
1217 HRESULT SuppressChanges
(
1227 uuid(8d19c834
-8879-11d1
-83e9
-00c04fc2c6d4
)
1229 interface IOplockStorage
: IUnknown
1231 HRESULT CreateStorageEx
(
1232 [in] LPCWSTR pwcsName
,
1235 [in] DWORD grfAttrs
,
1237 [out, iid_is(riid
)] void **ppstgOpen
);
1239 HRESULT OpenStorageEx
(
1240 [in] LPCWSTR pwcsName
,
1243 [in] DWORD grfAttrs
,
1245 [out, iid_is(riid
)] void **ppstgOpen
);
1248 /******************** Data Object ********************/
1252 uuid(00000103-0000-0000-C000
-000000000046),
1253 pointer_default(unique)
1255 interface IEnumFORMATETC
: IUnknown
1257 typedef [unique] IEnumFORMATETC
*LPENUMFORMATETC
;
1259 typedef struct tagDVTARGETDEVICE
{
1261 WORD tdDriverNameOffset
;
1262 WORD tdDeviceNameOffset
;
1263 WORD tdPortNameOffset
;
1264 WORD tdExtDevmodeOffset
;
1265 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
1269 typedef CLIPFORMAT
*LPCLIPFORMAT
;
1271 typedef struct tagFORMATETC
{
1272 CLIPFORMAT cfFormat
;
1273 [unique] DVTARGETDEVICE
*ptd
;
1277 } FORMATETC
, *LPFORMATETC
;
1282 [out, size_is(celt
), length_is(*pceltFetched
)]
1284 [out] ULONG
*pceltFetched
);
1289 [out, size_is(celt
), length_is(*pceltFetched
)]
1291 [out] ULONG
*pceltFetched
);
1299 [out] IEnumFORMATETC
**ppenum
);
1304 uuid(00000105-0000-0000-C000
-000000000046),
1305 pointer_default(unique)
1307 interface IEnumSTATDATA
: IUnknown
1309 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
1311 typedef enum tagADVF
{
1313 ADVF_PRIMEFIRST
= 2,
1315 ADVF_DATAONSTOP
= 64,
1316 ADVFCACHE_NOHANDLER
= 8,
1317 ADVFCACHE_FORCEBUILTIN
= 16,
1318 ADVFCACHE_ONSAVE
= 32
1321 typedef struct tagSTATDATA
1323 FORMATETC formatetc
;
1325 [unique] IAdviseSink
*pAdvSink
;
1327 } STATDATA
, *LPSTATDATA
;
1332 [out, size_is(celt
), length_is(*pceltFetched
)]
1334 [out] ULONG
*pceltFetched
);
1339 [out, size_is(celt
), length_is(*pceltFetched
)]
1341 [out] ULONG
*pceltFetched
);
1349 [out] IEnumSTATDATA
**ppenum
);
1354 uuid(0000010f
-0000-0000-C000
-000000000046),
1355 pointer_default(unique)
1357 interface IAdviseSink
: IUnknown
1359 typedef IAdviseSink
*LPADVISESINK
;
1361 typedef [v1_enum] enum tagTYMED
{
1372 typedef struct tagRemSTGMEDIUM
{
1375 unsigned long pData
;
1376 unsigned long pUnkForRelease
;
1377 unsigned long cbData
;
1378 [size_is(cbData
)] byte data
[];
1381 typedef struct tagSTGMEDIUM
{
1383 [switch_is(tymed
)] union {
1384 [case(TYMED_GDI
)] HBITMAP hBitmap;
1385 [case(TYMED_MFPICT
)] HMETAFILEPICT hMetaFilePict
;
1386 [case(TYMED_ENHMF
)] HENHMETAFILE hEnhMetaFile;
1387 [case(TYMED_HGLOBAL
)] HGLOBAL hGlobal;
1388 [case(TYMED_FILE
)] LPOLESTR lpszFileName
;
1389 [case(TYMED_ISTREAM
)] IStream
*pstm
;
1390 [case(TYMED_ISTORAGE
)] IStorage
*pstg
;
1393 [unique] IUnknown
*pUnkForRelease
;
1396 /* copied from wingdi.h */
1400 #define OBJ_METADC
4
1403 #define OBJ_BITMAP
7
1404 #define OBJ_REGION
8
1405 #define OBJ_METAFILE
9
1406 #define OBJ_MEMDC
10
1407 #define OBJ_EXTPEN
11
1408 #define OBJ_ENHMETADC
12
1409 #define OBJ_ENHMETAFILE
13
1411 typedef union _GDI_OBJECT
switch(DWORD ObjectType
) u
{
1412 case OBJ_BITMAP
: wireHBITMAP
hBitmap;
1413 case OBJ_PAL
: wireHPALETTE
hPalette;
1414 default: wireHGLOBAL hGeneric
;
1417 typedef struct _userSTGMEDIUM
{
1418 union switch(DWORD tymed
) u
{
1420 case TYMED_MFPICT
: wireHMETAFILEPICT hMetaFilePict
;
1421 case TYMED_ENHMF
: wireHENHMETAFILE hHEnhMetaFile
;
1422 case TYMED_GDI
: GDI_OBJECT
*hGdiHandle
;
1423 case TYMED_HGLOBAL
: wireHGLOBAL
hGlobal;
1424 case TYMED_FILE
: LPOLESTR lpszFileName
;
1425 case TYMED_ISTREAM
: BYTE_BLOB
*pstm
;
1426 case TYMED_ISTORAGE
: BYTE_BLOB
*pstg
;
1428 IUnknown
*pUnkForRelease
;
1431 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1432 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1434 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1435 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1437 typedef STGMEDIUM
*LPSTGMEDIUM
;
1439 typedef struct _userFLAG_STGMEDIUM
{
1441 long fPassOwnership
;
1442 userSTGMEDIUM Stgmed
;
1443 } userFLAG_STGMEDIUM
;
1445 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1447 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1449 long fPassOwnership
;
1455 [in, unique] FORMATETC
*pFormatetc
,
1456 [in, unique] STGMEDIUM
*pStgmed
);
1458 [call_as
(OnDataChange
)]
1459 HRESULT RemoteOnDataChange
(
1460 [in, unique] FORMATETC
*pFormatetc
,
1461 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1465 [in] DWORD dwAspect
,
1468 [call_as
(OnViewChange
)]
1469 HRESULT RemoteOnViewChange
(
1470 [in] DWORD dwAspect
,
1475 [in] IMoniker
*pmk
);
1478 HRESULT RemoteOnRename
(
1479 [in] IMoniker
*pmk
);
1485 HRESULT RemoteOnSave
();
1491 HRESULT RemoteOnClose
();
1496 uuid(00000125-0000-0000-C000
-000000000046),
1497 pointer_default(unique)
1499 interface IAdviseSink2
: IAdviseSink
1501 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1504 void OnLinkSrcChange
(
1505 [in, unique] IMoniker
*pmk
);
1507 [call_as
(OnLinkSrcChange
)]
1508 HRESULT RemoteOnLinkSrcChange
(
1509 [in, unique] IMoniker
*pmk
);
1514 uuid(0000010e-0000-0000-C000
-000000000046),
1515 pointer_default(unique)
1517 interface IDataObject
: IUnknown
1519 typedef [unique] IDataObject
*LPDATAOBJECT
;
1521 typedef enum tagDATADIR
{
1528 [in, unique] FORMATETC
*pformatetcIn
,
1529 [out] STGMEDIUM
*pmedium
);
1532 HRESULT RemoteGetData
(
1533 [in, unique] FORMATETC
*pformatetcIn
,
1534 [out] STGMEDIUM
*pRemoteMedium
);
1537 HRESULT GetDataHere
(
1538 [in, unique] FORMATETC
*pformatetc
,
1539 [in, out] STGMEDIUM
*pmedium
);
1541 [call_as
(GetDataHere
)]
1542 HRESULT RemoteGetDataHere
(
1543 [in, unique] FORMATETC
*pformatetc
,
1544 [in, out] STGMEDIUM
*pRemoteMedium
);
1546 HRESULT QueryGetData
(
1547 [in, unique] FORMATETC
*pformatetc
);
1549 HRESULT GetCanonicalFormatEtc
(
1550 [in, unique] FORMATETC
*pformatectIn
,
1551 [out] FORMATETC
*pformatetcOut
);
1555 [in, unique] FORMATETC
*pformatetc
,
1556 [in, unique] STGMEDIUM
*pmedium
,
1557 [in] BOOL fRelease
);
1560 HRESULT RemoteSetData
(
1561 [in, unique] FORMATETC
*pformatetc
,
1562 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1563 [in] BOOL fRelease
);
1565 HRESULT EnumFormatEtc
(
1566 [in] DWORD dwDirection
,
1567 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1570 [in] FORMATETC
*pformatetc
,
1572 [in, unique] IAdviseSink
*pAdvSink
,
1573 [out] DWORD
*pdwConnection
);
1576 [in] DWORD dwConnection
);
1578 HRESULT EnumDAdvise
(
1579 [out] IEnumSTATDATA
**ppenumAdvise
);
1585 uuid(00000110-0000-0000-C000
-000000000046)
1587 interface IDataAdviseHolder
: IUnknown
1589 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1592 [in, unique] IDataObject
*pDataObject
,
1593 [in, unique] FORMATETC
*pFetc
,
1595 [in, unique] IAdviseSink
*pAdvise
,
1596 [out] DWORD
*pdwConnection
);
1599 [in] DWORD dwConnection
);
1602 [out] IEnumSTATDATA
**ppenumAdvise
);
1604 HRESULT SendOnDataChange
(
1605 [in, unique] IDataObject
*pDataObject
,
1606 [in] DWORD dwReserved
,
1610 /******************** Remoting ********************/
1615 uuid(00000016-0000-0000-C000
-000000000046)
1617 interface IMessageFilter
: IUnknown
1619 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1621 typedef enum tagCALLTYPE
{
1622 CALLTYPE_TOPLEVEL
= 1,
1623 CALLTYPE_NESTED
= 2,
1625 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1626 CALLTYPE_ASYNC_CALLPENDING
= 5
1629 typedef enum tagSERVERCALL
{
1630 SERVERCALL_ISHANDLED
= 0,
1631 SERVERCALL_REJECTED
= 1,
1632 SERVERCALL_RETRYLATER
= 2
1635 typedef enum tagPENDINGTYPE
{
1636 PENDINGTYPE_TOPLEVEL
= 1,
1637 PENDINGTYPE_NESTED
= 2
1640 typedef enum tagPENDINGMSG
{
1641 PENDINGMSG_CANCELCALL
= 0,
1642 PENDINGMSG_WAITNOPROCESS
= 1,
1643 PENDINGMSG_WAITDEFPROCESS
= 2
1646 typedef struct tagINTERFACEINFO
{
1650 } INTERFACEINFO
, *LPINTERFACEINFO
;
1652 DWORD HandleInComingCall
(
1653 [in] DWORD dwCallType
,
1654 [in] HTASK htaskCaller
,
1655 [in] DWORD dwTickCount
,
1656 [in] LPINTERFACEINFO lpInterfaceInfo
);
1658 DWORD RetryRejectedCall
(
1659 [in] HTASK htaskCallee
,
1660 [in] DWORD dwTickCount
,
1661 [in] DWORD dwRejectType
);
1663 DWORD MessagePending
(
1664 [in] HTASK htaskCallee
,
1665 [in] DWORD dwTickCount
,
1666 [in] DWORD dwPendingType
);
1672 uuid(D5F56B60
-593B
-101A
-B569
-08002B2DBF7A
)
1674 interface IRpcChannelBuffer
: IUnknown
1676 typedef [unique] IRpcChannelBuffer
*LPRPCCHANNELBUFFER
;
1678 typedef unsigned long RPCOLEDATAREP
;
1680 typedef struct tagRPCOLEMESSAGE
{
1682 RPCOLEDATAREP dataRepresentation
;
1690 typedef RPCOLEMESSAGE
*PRPCOLEMESSAGE
;
1693 [in] RPCOLEMESSAGE
*pMessage
,
1696 HRESULT SendReceive
(
1697 [in,out] RPCOLEMESSAGE
*pMessage
,
1698 [out] ULONG
*pStatus
);
1701 [in] RPCOLEMESSAGE
*pMessage
);
1704 [out] DWORD
*pdwDestContext
,
1705 [out] void **ppvDestContext
);
1707 HRESULT IsConnected
();
1713 uuid(594f31d0
-7f19
-11d0
-b194
-00a0c90dc8bf
)
1715 interface IRpcChannelBuffer2
: IRpcChannelBuffer
1717 typedef [unique] IRpcChannelBuffer2
*LPRPCCHANNELBUFFER2
;
1719 HRESULT GetProtocolVersion
(
1720 [in,out] DWORD
*pdwVersion
);
1726 uuid(25B15600
-0115-11d0
-BF0D
-00AA00B8DFD2
)
1728 interface IRpcChannelBuffer3
: IRpcChannelBuffer2
1730 typedef [unique] IRpcChannelBuffer3
*LPRPCCHANNELBUFFER3
;
1733 [in,out] RPCOLEMESSAGE
*pMsg
,
1734 [out] ULONG
*pulStatus
);
1737 [in,out] RPCOLEMESSAGE
*pMsg
,
1739 [out] ULONG
*pulStatus
);
1742 [in] RPCOLEMESSAGE
*pMsg
);
1744 HRESULT GetCallContext
(
1745 [in] RPCOLEMESSAGE
*pMsg
,
1747 [out] void **pInterface
);
1749 HRESULT GetDestCtxEx
(
1750 [in] RPCOLEMESSAGE
*pMsg
,
1751 [out] DWORD
*pdwDestContext
,
1752 [out] void **ppvDestContext
);
1755 [in] RPCOLEMESSAGE
*pMsg
,
1756 [out] DWORD
*pState
);
1758 HRESULT RegisterAsync
(
1759 [in] RPCOLEMESSAGE
*pMsg
,
1760 [in] IAsyncManager
*pAsyncMgr
);
1766 uuid(a5029fb6
-3c34
-11d1
-9c99
-00c04fb998aa
),
1767 pointer_default(unique)
1769 interface IAsyncRpcChannelBuffer
: IRpcChannelBuffer2
1772 [in, out] RPCOLEMESSAGE
*pMsg
,
1773 [in] ISynchronize
*pSync
,
1774 [out] ULONG
*pulStatus
);
1777 [in, out] RPCOLEMESSAGE
*pMsg
,
1778 [out] ULONG
*pulStatus
);
1780 HRESULT GetDestCtxEx
(
1781 [in] RPCOLEMESSAGE
*pMsg
,
1782 [out] DWORD
*pdwDestContext
,
1783 [out] void **ppvDestContext
);
1789 uuid(58a08519
-24c8
-4935-b482
-3fd823333a4f
)
1791 interface IRpcSyntaxNegotiate
: IUnknown
1793 HRESULT NegotiateSyntax
(
1794 [in, out] RPCOLEMESSAGE
*pMsg
);
1800 uuid(D5F56A34
-593B
-101A
-B569
-08002B2DBF7A
)
1802 interface IRpcProxyBuffer
: IUnknown
1804 typedef [unique] IRpcProxyBuffer
*LPRPCPROXYBUFFER
;
1807 [in, unique] IRpcChannelBuffer
*pRpcChannelBuffer
);
1815 uuid(D5F56AFC
-593B
-101A
-B569
-08002B2DBF7A
)
1817 interface IRpcStubBuffer
: IUnknown
1819 typedef [unique] IRpcStubBuffer
*LPRPCSTUBBUFFER
;
1822 [in] IUnknown
*pUnkServer
);
1827 [in] RPCOLEMESSAGE
*_prpcmsg
,
1828 [in] IRpcChannelBuffer
*_pRpcChannelBuffer
);
1830 IRpcStubBuffer
*IsIIDSupported
(
1835 HRESULT DebugServerQueryInterface
(
1838 void DebugServerRelease
(
1845 uuid(D5F569D0
-593B
-101A
-B569
-08002B2DBF7A
)
1847 interface IPSFactoryBuffer
: IUnknown
1849 typedef [unique] IPSFactoryBuffer
*LPPSFACTORYBUFFER
;
1851 HRESULT CreateProxy
(
1852 [in] IUnknown
*pUnkOuter
,
1854 [out] IRpcProxyBuffer
**ppProxy
,
1859 [in, unique] IUnknown
*pUnkServer
,
1860 [out] IRpcStubBuffer
**ppStub
);
1866 uuid(1008c4a0
-7613-11cf
-9af1
-0020af6e72f4
)
1868 interface IChannelHook
: IUnknown
1870 typedef [unique] IChannelHook
*LPCHANNELHOOK
;
1872 typedef struct SChannelHookCallInfo
{
1879 } SChannelHookCallInfo
;
1882 [in] REFGUID uExtent
,
1884 [out] ULONG
*pDataSize
);
1886 void ClientFillBuffer
(
1887 [in] REFGUID uExtent
,
1889 [in, out] ULONG
*pDataSize
,
1890 [in] void *pDataBuffer
);
1893 [in] REFGUID uExtent
,
1895 [in] ULONG cbDataSize
,
1896 [in] void *pDataBuffer
,
1897 [in] DWORD lDataRep
,
1898 [in] HRESULT hrFault
);
1901 [in] REFGUID uExtent
,
1903 [in] ULONG cbDataSize
,
1904 [in] void *pDataBuffer
,
1905 [in] DWORD lDataRep
);
1908 [in] REFGUID uExtent
,
1910 [in] HRESULT hrFault
,
1911 [out] ULONG
*pDataSize
);
1913 void ServerFillBuffer
(
1914 [in] REFGUID uExtent
,
1916 [in, out] ULONG
*pDataSize
,
1917 [in] void *pDataBuffer
,
1918 [in] HRESULT hrFault
);
1921 extern
const FMTID FMTID_SummaryInformation
;
1922 extern
const FMTID FMTID_DocSummaryInformation
;
1923 extern
const FMTID FMTID_UserDefinedProperties
;
1926 /******************** Connection Points ********************/
1929 /******************** DCOM ********************/
1934 uuid(0000013D
-0000-0000-C000
-000000000046)
1936 interface IClientSecurity
: IUnknown
1938 typedef struct tagSOLE_AUTHENTICATION_SERVICE
{
1941 OLECHAR
*pPrincipalName
;
1943 } SOLE_AUTHENTICATION_SERVICE
;
1945 typedef SOLE_AUTHENTICATION_SERVICE
*PSOLE_AUTHENTICATION_SERVICE
;
1947 typedef struct tagSOLE_AUTHENTICATION_INFO
{
1951 } SOLE_AUTHENTICATION_INFO
;
1953 const OLECHAR
*COLE_DEFAULT_PRINCIPAL
= (OLECHAR
*) -1;
1954 const void *COLE_DEFAULT_AUTHINFO
= (void*) -1;
1956 typedef struct tagSOLE_AUTHENTICATION_LIST
{
1958 SOLE_AUTHENTICATION_INFO
*aAuthInfo
;
1959 } SOLE_AUTHENTICATION_LIST
;
1961 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
1963 EOAC_MUTUAL_AUTH
= 0x1,
1964 EOAC_SECURE_REFS
= 0x2, /* CoInitializeSecurity only */
1965 EOAC_ACCESS_CONTROL
= 0x4, /* CoInitializeSecurity only */
1966 EOAC_APPID
= 0x8, /* CoInitializeSecurity only */
1967 EOAC_DYNAMIC
= 0x10, /* CoInitializeSecurity only */
1968 EOAC_STATIC_CLOAKING
= 0x20,
1969 EOAC_DYNAMIC_CLOAKING
= 0x40,
1970 EOAC_ANY_AUTHORITY
= 0x80,
1971 EOAC_MAKE_FULLSIC
= 0x100,
1972 EOAC_REQUIRE_FULLSIC
= 0x200, /* CoInitializeSecurity only */
1973 EOAC_AUTO_IMPERSONATE
= 0x400, /* CoInitializeSecurity only */
1974 EOAC_DEFAULT
= 0x800,
1975 EOAC_DISABLE_AAA
= 0x1000, /* CoInitializeSecurity only */
1976 EOAC_NO_CUSTOM_MARSHAL
= 0x2000, /* CoInitializeSecurity only */
1977 } EOLE_AUTHENTICATION_CAPABILITIES
;
1979 HRESULT QueryBlanket
(
1980 [in] IUnknown
*pProxy
,
1981 [out] DWORD
*pAuthnSvc
,
1982 [out] DWORD
*pAuthzSvc
,
1983 [out] OLECHAR
**pServerPrincName
,
1984 [out] DWORD
*pAuthnLevel
,
1985 [out] DWORD
*pImpLevel
,
1986 [out] void **pAuthInfo
,
1987 [out] DWORD
*pCapabilities
);
1990 [in] IUnknown
*pProxy
,
1991 [in] DWORD AuthnSvc
,
1992 [in] DWORD AuthzSvc
,
1993 [in] OLECHAR
*pServerPrincName
,
1994 [in] DWORD AuthnLevel
,
1995 [in] DWORD ImpLevel
,
1996 [in] void *pAuthInfo
,
1997 [in] DWORD Capabilities
);
2000 [in] IUnknown
*pProxy
,
2001 [out] IUnknown
**ppCopy
);
2007 uuid(0000013E-0000-0000-C000
-000000000046)
2009 interface IServerSecurity
: IUnknown
2011 HRESULT QueryBlanket
(
2012 [out] DWORD
*pAuthnSvc
,
2013 [out] DWORD
*pAuthzSvc
,
2014 [out] OLECHAR
**pServerPrincName
,
2015 [out] DWORD
*pAuthnLevel
,
2016 [out] DWORD
*pImpLevel
,
2017 [out] void **pPrivs
,
2018 [out] DWORD
*pCapabilities
);
2020 HRESULT ImpersonateClient
();
2022 HRESULT RevertToSelf
();
2024 BOOL IsImpersonating
();
2030 uuid(00000024-0000-0000-C000
-000000000046)
2032 interface IAsyncSetup
: IUnknown
2034 HRESULT GetAsyncManager
(
2036 [in] IUnknown
*pOuter
,
2038 [out] IUnknown
**ppInner
,
2039 [out] IAsyncManager
**ppAsyncMgr
);
2044 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
2046 interface IDirectWriterLock
: IUnknown
2048 HRESULT WaitForWriteAccess
(
2049 [in] DWORD dwTimeout
);
2051 HRESULT ReleaseWriteAccess
();
2053 HRESULT HaveWriteAccess
();
2058 uuid(00000030-0000-0000-C000
-000000000046)
2061 interface ISynchronize
: IUnknown
2065 [in] DWORD dwMilliseconds
);
2076 uuid(00000031-0000-0000-C000
-000000000046)
2078 interface ISynchronizeHandle
: IUnknown
2088 uuid(00000032-0000-0000-C000
-000000000046)
2090 interface ISynchronizeEvent
: ISynchronizeHandle
2092 HRESULT SetEventHandle
(
2100 uuid(00000033-0000-0000-C000
-000000000046)
2102 interface ISynchronizeContainer
: IUnknown
2104 HRESULT AddSynchronize
(
2105 [in] ISynchronize
*pSync
);
2107 HRESULT WaitMultiple
(
2109 [in] DWORD dwTimeOut
,
2110 [out] ISynchronize
**ppSync
);
2116 uuid(00000025-0000-0000-C000
-000000000046)
2118 interface ISynchronizeMutex
: ISynchronize
2120 HRESULT ReleaseMutex
();
2126 uuid(00000029-0000-0000-C000
-000000000046)
2129 interface ICancelMethodCalls
: IUnknown
2131 typedef [unique] ICancelMethodCalls
*LPCANCELMETHODCALLS
;
2134 [in] ULONG ulSeconds
);
2136 HRESULT TestCancel
();
2142 uuid(0000002A
-0000-0000-C000
-000000000046)
2144 interface IAsyncManager
: IUnknown
2146 typedef enum tagDCOM_CALL_STATE
{
2148 DCOM_CALL_COMPLETE
= 1,
2149 DCOM_CALL_CANCELED
= 2
2152 HRESULT CompleteCall
(
2153 [in] HRESULT Result
);
2155 HRESULT GetCallContext
(
2157 [out] void **pInterface
);
2160 [out] ULONG
*pulStateFlags
);
2166 uuid(1c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
2167 pointer_default(unique)
2169 interface ICallFactory
: IUnknown
2173 [in] IUnknown
*pCtrlUnk
,
2175 [out, iid_is(riid2
)] IUnknown
**ppv
);
2181 uuid(00000144-0000-0000-C000
-000000000046)
2183 interface IRpcOptions
: IUnknown
2186 [in] IUnknown
*pPrx
,
2187 [in] DWORD dwProperty
,
2188 [in] ULONG_PTR dwValue
);
2191 [in] IUnknown
*pPrx
,
2192 [in] DWORD dwProperty
,
2193 [out] ULONG_PTR
*pdwValue
);
2197 COMBND_RPCTIMEOUT
= 1,
2198 COMBND_SERVER_LOCALITY
= 2
2202 SERVER_LOCALITY_PROCESS_LOCAL
= 0,
2203 SERVER_LOCALITY_MACHINE_LOCAL
= 1,
2204 SERVER_LOCALITY_REMOTE
= 2
2210 uuid(00000149-0000-0000-C000
-000000000046),
2211 pointer_default(unique)
2213 interface IRpcHelper
: IUnknown
2215 HRESULT GetDCOMProtocolVersion
(
2216 [out] DWORD
*pComVersion
);
2218 HRESULT GetIIDFromOBJREF
(
2226 uuid(eb0cb9e8
-7996-11d2
-872e-0000f8080859
)
2228 interface IReleaseMarshalBuffers
: IUnknown
2230 HRESULT ReleaseMarshalBuffer
(
2231 [in] RPCOLEMESSAGE
*pMsg
,
2233 [in, unique] IUnknown
*pChnl
);
2239 uuid(0000002B
-0000-0000-C000
-000000000046)
2241 interface IWaitMultiple
: IUnknown
2243 HRESULT WaitMultiple
(
2245 [out] ISynchronize
**pSync
);
2246 HRESULT AddSynchronize
(
2247 [in] ISynchronize
*pSync
);
2253 uuid(00000026-0000-0000-C000
-000000000046)
2255 interface IUrlMon
: IUnknown
2257 HRESULT AsyncGetClassBits
(
2258 [in] REFCLSID rclsid
,
2259 [in, unique] LPCWSTR pszTYPE
,
2260 [in, unique] LPCWSTR pszExt
,
2261 [in] DWORD dwFileVersionMS
,
2262 [in] DWORD dwFileVersionLS
,
2263 [in, unique] LPCWSTR pszCodeBase
,
2265 [in] DWORD dwClassContext
,
2273 uuid(00000145-0000-0000-C000
-000000000046)
2275 interface IForegroundTransfer
: IUnknown
2277 HRESULT AllowForegroundTransfer
(
2278 [in] void *lpvReserved
);
2284 uuid(00000147-0000-0000-C000
-000000000046)
2286 interface IAddrTrackingControl
: IUnknown
2288 typedef [unique] IAddrTrackingControl
*LPADDRTRACKINGCONTROL
;
2290 HRESULT EnableCOMDynamicAddrTracking
();
2291 HRESULT DisableCOMDynamicAddrTracking
();
2297 uuid(00000148-0000-0000-C000
-000000000046)
2299 interface IAddrExclusionControl
: IUnknown
2301 typedef [unique] IAddrExclusionControl
*LPADDREXCLUSIONCONTROL
;
2303 HRESULT GetCurrentAddrExclusionList
(
2305 [out, iid_is(riid
)] void **ppEnumerator
);
2306 HRESULT UpdateAddrExclusionList
(
2307 [in] IUnknown
*pEnumerator
);
2310 typedef enum _APTTYPE
{
2311 APTTYPE_CURRENT
= -1,
2318 typedef enum _THDTYPE
{
2319 THDTYPE_BLOCKMESSAGES
= 0,
2320 THDTYPE_PROCESSMESSAGES
= 1
2326 uuid(000001ce
-0000-0000-C000
-000000000046),
2327 pointer_default(unique)
2329 interface IComThreadingInfo
: IUnknown
2331 HRESULT GetCurrentApartmentType
(
2332 [out] APTTYPE
*pAptType
);
2333 HRESULT GetCurrentThreadType
(
2334 [out] THDTYPE
*pThreadType
);
2335 HRESULT GetCurrentLogicalThreadId
(
2336 [out] GUID
*pguidLogicalThreadId
);
2337 HRESULT SetCurrentLogicalThreadId
(
2338 [in] REFGUID rguid
);
2344 pointer_default(unique),
2345 uuid(72380d55
-8d2b
-43a3
-8513-2b6ef31434e9
)
2347 interface IProcessInitControl
: IUnknown
2349 HRESULT ResetInitializerTimeout
(
2350 [in] DWORD dwSecondsRemaining
);
2356 uuid(00000034-0000-0000-C000
-000000000046),
2357 pointer_default(unique)
2359 interface IInitializeSpy
: IUnknown
2361 typedef [unique] IInitializeSpy
*LPINITIALIZESPY
;
2363 HRESULT PreInitialize
(
2364 [in] DWORD dwCoInit
,
2365 [in] DWORD dwCurThreadAptRefs
);
2367 HRESULT PostInitialize
(
2368 [in] HRESULT hrCoInit
,
2369 [in] DWORD dwCoInit
,
2370 [in] DWORD dwNewThreadAptRefs
);
2372 HRESULT PreUninitialize
(
2373 [in] DWORD dwCurThreadAptRefs
);
2375 HRESULT PostUninitialize
(
2376 [in] DWORD dwNewThreadAptRefs
);
2381 uuid(969dc708
-5c76
-11d1
-8d86
-0000f804b057
)
2383 interface IThumbnailExtractor
: IUnknown
2385 HRESULT ExtractThumbnail
(
2386 [in] IStorage
*pStg
,
2387 [in] ULONG ulLength
,
2388 [in] ULONG ulHeight
,
2389 [out] ULONG
*pulOutputLength
,
2390 [out] ULONG
*pulOutputHeight
,
2391 [out] HBITMAP *phOutputBitmap
);
2394 HRESULT OnFileUpdated
(
2395 [in] IStorage
*pStg
);
2399 cpp_quote
("#ifdef USE_COM_CONTEXT_DEF")
2401 typedef DWORD CPFLAGS
;
2403 typedef struct tagContextProperty
2407 [unique] IUnknown
*pUnk
;
2413 uuid(000001c1
-0000-0000-C000
-000000000046)
2415 interface IEnumContextProps
: IUnknown
2417 typedef [unique] IEnumContextProps
*LPENUMCONTEXTPROPS
;
2421 [out, size_is(celt
), length_is(*pceltFetched
)] ContextProperty
*pContextProperties
,
2422 [out] ULONG
*pceltFetched
);
2430 [out] IEnumContextProps
**ppEnumContextProps
);
2433 [out] ULONG
*pcelt
);
2439 uuid(000001c0
-0000-0000-C000
-000000000046)
2441 interface IContext
: IUnknown
2443 HRESULT SetProperty
(
2444 [in] REFGUID policyId
,
2446 [in] IUnknown
*pUnk
);
2448 HRESULT RemoveProperty
(
2449 [in] REFGUID policyId
);
2451 HRESULT GetProperty
(
2453 [out] CPFLAGS
*pFlags
,
2454 [out] IUnknown
**ppUnk
);
2456 HRESULT EnumContextProps
(
2457 [out] IEnumContextProps
**ppEnumContextProps
);
2463 uuid(000001c6
-0000-0000-c000
-000000000046),
2464 pointer_default(unique)
2466 interface IObjContext
: IContext
2477 cpp_quote
("#endif /* defined USE_COM_CONTEXT_DEF */")