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] SIZE_T cbRequest
);
195 [in] LPVOID pActual
);
198 [in] LPVOID pRequest
,
205 [in] LPVOID pRequest
,
206 [in] SIZE_T cbRequest
,
207 [out] LPVOID
*ppNewRequest
,
215 [in] LPVOID pRequest
,
219 [in] SIZE_T cbActual
,
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 struct tagBIND_OPTS3
{
352 DWORD dwTickCountDeadline
;
354 DWORD dwClassContext
;
356 COSERVERINFO
*pServerInfo
;
358 } BIND_OPTS3
, *LPBIND_OPTS3
;
360 typedef enum tagBIND_FLAGS
{
361 BIND_MAYBOTHERUSER
= 1,
362 BIND_JUSTTESTEXISTENCE
= 2
365 HRESULT RegisterObjectBound
(
366 [in, unique] IUnknown
*punk
);
368 HRESULT RevokeObjectBound
(
369 [in, unique] IUnknown
*punk
);
371 HRESULT ReleaseBoundObjects
();
374 HRESULT SetBindOptions
(
375 [in] BIND_OPTS
*pbindopts
);
377 [call_as
(SetBindOptions
)]
378 HRESULT RemoteSetBindOptions
(
379 [in] BIND_OPTS2
*pbindopts
);
382 HRESULT GetBindOptions
(
383 [in, out] BIND_OPTS
*pbindopts
);
385 [call_as
(GetBindOptions
)]
386 HRESULT RemoteGetBindOptions
(
387 [in, out] BIND_OPTS2
*pbindopts
);
389 HRESULT GetRunningObjectTable
(
390 [out] IRunningObjectTable
**pprot
);
392 HRESULT RegisterObjectParam
(
393 [in] LPOLESTR pszKey
,
394 [in, unique] IUnknown
*punk
);
396 HRESULT GetObjectParam
(
397 [in] LPOLESTR pszKey
,
398 [out] IUnknown
**ppunk
);
400 HRESULT EnumObjectParam
(
401 [out] IEnumString
**ppenum
);
403 HRESULT RevokeObjectParam
(
404 [in] LPOLESTR pszKey
);
409 uuid(00000102-0000-0000-C000
-000000000046),
410 pointer_default(unique)
412 interface IEnumMoniker
: IUnknown
414 typedef [unique] IEnumMoniker
*LPENUMMONIKER
;
419 [out, size_is(celt
), length_is(*pceltFetched
)]
421 [out] ULONG
*pceltFetched
);
426 [out, size_is(celt
), length_is(*pceltFetched
)]
428 [out] ULONG
*pceltFetched
);
436 [out] IEnumMoniker
**ppenum
);
441 uuid(00000126-0000-0000-C000
-000000000046)
443 interface IRunnableObject
: IUnknown
445 typedef [unique] IRunnableObject
*LPRUNNABLEOBJECT
;
447 HRESULT GetRunningClass
(
448 [out] LPCLSID lpClsid
);
457 HRESULT RemoteIsRunning
();
461 [in] BOOL fLastUnlockCloses
);
463 HRESULT SetContainedObject
(
464 [in] BOOL fContained
);
467 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
468 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
469 * but GetObject is used as a valid method name below, so we have
470 * to undefine it in that case */
471 cpp_quote
("#ifdef WINE_NO_UNICODE_MACROS")
472 cpp_quote
("#undef GetObject")
477 uuid(00000010-0000-0000-C000
-000000000046)
479 interface IRunningObjectTable
: IUnknown
481 typedef [unique] IRunningObjectTable
*LPRUNNINGOBJECTTABLE
;
485 [in, unique] IUnknown
*punkObject
,
486 [in, unique] IMoniker
*pmkObjectName
,
487 [out] DWORD
*pdwRegister
);
490 [in] DWORD dwRegister
);
493 [in, unique] IMoniker
*pmkObjectName
);
496 [in, unique] IMoniker
*pmkObjectName
,
497 [out] IUnknown
**ppunkObject
);
499 HRESULT NoteChangeTime
(
500 [in] DWORD dwRegister
,
501 [in] FILETIME
*pfiletime
);
503 HRESULT GetTimeOfLastChange
(
504 [in, unique] IMoniker
*pmkObjectName
,
505 [out] FILETIME
*pfiletime
);
508 [out] IEnumMoniker
**ppenumMoniker
);
513 uuid(0000010c
-0000-0000-C000
-000000000046)
515 interface IPersist
: IUnknown
517 typedef [unique] IPersist
*LPPERSIST
;
520 [out] CLSID
*pClassID
);
525 uuid(00000109-0000-0000-C000
-000000000046),
526 pointer_default(unique)
528 interface IPersistStream
: IPersist
530 typedef [unique] IPersistStream
*LPPERSISTSTREAM
;
535 [in, unique] IStream
*pStm
);
538 [in, unique] IStream
*pStm
,
539 [in] BOOL fClearDirty
);
542 [out] ULARGE_INTEGER
*pcbSize
);
547 uuid(0000000f
-0000-0000-C000
-000000000046),
548 pointer_default(unique)
550 interface IMoniker
: IPersistStream
552 typedef [unique] IMoniker
*LPMONIKER
;
554 typedef enum tagMKSYS
{
556 MKSYS_GENERICCOMPOSITE
= 1,
557 MKSYS_FILEMONIKER
= 2,
558 MKSYS_ANTIMONIKER
= 3,
559 MKSYS_ITEMMONIKER
= 4,
560 MKSYS_POINTERMONIKER
= 5,
561 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
562 MKSYS_CLASSMONIKER
= 7
565 typedef [v1_enum] enum tagMKREDUCE
{
566 MKRREDUCE_ONE
= 3 << 16,
567 MKRREDUCE_TOUSER
= 2 << 16,
568 MKRREDUCE_THROUGHUSER
= 1 << 16,
573 HRESULT BindToObject
(
574 [in, unique] IBindCtx
*pbc
,
575 [in, unique] IMoniker
*pmkToLeft
,
576 [in] REFIID riidResult
,
577 [out, iid_is(riidResult
)] void **ppvResult
);
579 [call_as
(BindToObject
)]
580 HRESULT RemoteBindToObject
(
581 [in, unique] IBindCtx
*pbc
,
582 [in, unique] IMoniker
*pmkToLeft
,
583 [in] REFIID riidResult
,
584 [out, iid_is(riidResult
)] IUnknown
**ppvResult
);
587 HRESULT BindToStorage
(
588 [in, unique] IBindCtx
*pbc
,
589 [in, unique] IMoniker
*pmkToLeft
,
591 [out, iid_is(riid
)] void **ppvObj
);
593 [call_as
(BindToStorage
)]
594 HRESULT RemoteBindToStorage
(
595 [in, unique] IBindCtx
*pbc
,
596 [in, unique] IMoniker
*pmkToLeft
,
598 [out, iid_is(riid
)] IUnknown
**ppvObj
);
601 [in, unique] IBindCtx
*pbc
,
602 [in] DWORD dwReduceHowFar
,
603 [in, out, unique] IMoniker
**ppmkToLeft
,
604 [out] IMoniker
**ppmkReduced
);
607 [in, unique] IMoniker
*pmkRight
,
608 [in] BOOL fOnlyIfNotGeneric
,
609 [out] IMoniker
**ppmkComposite
);
613 [out] IEnumMoniker
**ppenumMoniker
);
616 [in, unique] IMoniker
*pmkOtherMoniker
);
619 [out] DWORD
*pdwHash
);
622 [in, unique] IBindCtx
*pbc
,
623 [in, unique] IMoniker
*pmkToLeft
,
624 [in, unique] IMoniker
*pmkNewlyRunning
);
626 HRESULT GetTimeOfLastChange
(
627 [in, unique] IBindCtx
*pbc
,
628 [in, unique] IMoniker
*pmkToLeft
,
629 [out] FILETIME
*pFileTime
);
632 [out] IMoniker
**ppmk
);
634 HRESULT CommonPrefixWith
(
635 [in, unique] IMoniker
*pmkOther
,
636 [out] IMoniker
**ppmkPrefix
);
638 HRESULT RelativePathTo
(
639 [in, unique] IMoniker
*pmkOther
,
640 [out] IMoniker
**ppmkRelPath
);
642 HRESULT GetDisplayName
(
643 [in, unique] IBindCtx
*pbc
,
644 [in, unique] IMoniker
*pmkToLeft
,
645 [out] LPOLESTR
*ppszDisplayName
);
647 HRESULT ParseDisplayName
(
648 [in, unique] IBindCtx
*pbc
,
649 [in, unique] IMoniker
*pmkToLeft
,
650 [in] LPOLESTR pszDisplayName
,
651 [out] ULONG
*pchEaten
,
652 [out] IMoniker
**ppmkOut
);
654 HRESULT IsSystemMoniker
(
655 [out] DWORD
*pdwMksys
);
660 uuid(f29f6bc0
-5021-11ce
-aa15
-00006901293f
),
661 pointer_default(unique)
663 interface IROTData
: IUnknown
665 HRESULT GetComparisonData
(
666 [out, size_is(cbMax
)] byte *pbData
,
668 [out] ULONG
*pcbData
);
673 uuid(00000101-0000-0000-C000
-000000000046),
674 pointer_default(unique)
676 interface IEnumString
: IUnknown
678 typedef [unique] IEnumString
*LPENUMSTRING
;
683 [out, size_is(celt
), length_is(*pceltFetched
)]
685 [out] ULONG
*pceltFetched
);
690 [out, size_is(celt
), length_is(*pceltFetched
)]
692 [out] ULONG
*pceltFetched
);
700 [out] IEnumString
**ppenum
);
705 uuid(00000140-0000-0000-C000
-000000000046)
707 interface IClassActivator
: IUnknown
709 HRESULT GetClassObject
(
710 [in] REFCLSID rclsid
,
711 [in] DWORD dwClassContext
,
714 [out, iid_is(riid
)] void **ppv
);
717 /******************** Storage ********************/
721 uuid(0c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
722 pointer_default(unique)
724 interface ISequentialStream
: IUnknown
728 [out, size_is(cb
), length_is(*pcbRead
)]
731 [out] ULONG
*pcbRead
);
735 [out, size_is(cb
), length_is(*pcbRead
)]
738 [out] ULONG
*pcbRead
);
742 [in, size_is(cb
)] const void *pv
,
744 [out] ULONG
*pcbWritten
);
748 [in, size_is(cb
)] const byte *pv
,
750 [out] ULONG
*pcbWritten
);
755 uuid(0000000c
-0000-0000-C000
-000000000046),
756 pointer_default(unique)
758 interface IStream
: ISequentialStream
760 typedef [unique] IStream
*LPSTREAM
;
762 typedef struct tagSTATSTG
{
765 ULARGE_INTEGER cbSize
;
770 DWORD grfLocksSupported
;
776 typedef enum tagSTGTY
{
783 typedef enum tagSTREAM_SEEK
{
789 /* these are defined in Linux's fcntl.h,
790 * undefine them to avoid conflicts */
791 cpp_quote
("#undef LOCK_MAND")
792 cpp_quote
("#undef LOCK_READ")
793 cpp_quote
("#undef LOCK_WRITE")
794 cpp_quote
("#undef LOCK_RW")
796 typedef enum tagLOCKTYPE
{
804 [in] LARGE_INTEGER dlibMove
,
806 [out] ULARGE_INTEGER
*plibNewPosition
);
810 [in] LARGE_INTEGER dlibMove
,
812 [out] ULARGE_INTEGER
*plibNewPosition
);
815 [in] ULARGE_INTEGER libNewSize
);
819 [in, unique] IStream
*pstm
,
820 [in] ULARGE_INTEGER cb
,
821 [out] ULARGE_INTEGER
*pcbRead
,
822 [out] ULARGE_INTEGER
*pcbWritten
);
825 HRESULT RemoteCopyTo
(
826 [in, unique] IStream
*pstm
,
827 [in] ULARGE_INTEGER cb
,
828 [out] ULARGE_INTEGER
*pcbRead
,
829 [out] ULARGE_INTEGER
*pcbWritten
);
832 [in] DWORD grfCommitFlags
);
837 [in] ULARGE_INTEGER libOffset
,
838 [in] ULARGE_INTEGER cb
,
839 [in] DWORD dwLockType
);
841 HRESULT UnlockRegion
(
842 [in] ULARGE_INTEGER libOffset
,
843 [in] ULARGE_INTEGER cb
,
844 [in] DWORD dwLockType
);
847 [out] STATSTG
*pstatstg
,
848 [in] DWORD grfStatFlag
);
851 [out] IStream
**ppstm
);
856 uuid(0000000d
-0000-0000-C000
-000000000046),
857 pointer_default(unique)
859 interface IEnumSTATSTG
: IUnknown
861 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
866 [out, size_is(celt
), length_is(*pceltFetched
)]
868 [out] ULONG
*pceltFetched
);
873 [out, size_is(celt
), length_is(*pceltFetched
)]
875 [out] ULONG
*pceltFetched
);
883 [out] IEnumSTATSTG
**ppenum
);
888 uuid(0000000b
-0000-0000-C000
-000000000046),
889 pointer_default(unique)
891 interface IStorage
: IUnknown
893 typedef [unique] IStorage
*LPSTORAGE
;
895 typedef struct tagRemSNB
{
896 unsigned long ulCntStr
;
897 unsigned long ulCntChar
;
898 [size_is(ulCntChar
)] OLECHAR rgString
[];
901 typedef [unique] RemSNB
*wireSNB
;
902 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
904 HRESULT CreateStream
(
905 [in] LPCOLESTR pwcsName
,
907 [in] DWORD reserved1
,
908 [in] DWORD reserved2
,
909 [out] IStream
**ppstm
);
913 [in] LPCOLESTR pwcsName
,
914 [in, unique] void *reserved1
,
916 [in] DWORD reserved2
,
917 [out] IStream
**ppstm
);
919 [call_as
(OpenStream
)]
920 HRESULT RemoteOpenStream
(
921 [in] LPCOLESTR pwcsName
,
922 [in] unsigned long cbReserved1
,
923 [in, unique, size_is(cbReserved1
)] byte *reserved1
,
925 [in] DWORD reserved2
,
926 [out] IStream
**ppstm
);
928 HRESULT CreateStorage
(
929 [in] LPCOLESTR pwcsName
,
932 [in] DWORD reserved2
,
933 [out] IStorage
**ppstg
);
936 [in, unique] LPCOLESTR pwcsName
,
937 [in, unique] IStorage
*pstgPriority
,
939 [in, unique] SNB snbExclude
,
941 [out] IStorage
**ppstg
);
944 [in] DWORD ciidExclude
,
945 [in, unique, size_is(ciidExclude
)] const IID
*rgiidExclude
,
946 [in, unique] SNB snbExclude
,
947 [in, unique] IStorage
*pstgDest
);
949 HRESULT MoveElementTo
(
950 [in] LPCOLESTR pwcsName
,
951 [in, unique] IStorage
*pstgDest
,
952 [in] LPCOLESTR pwcsNewName
,
953 [in] DWORD grfFlags
);
956 [in] DWORD grfCommitFlags
);
961 HRESULT EnumElements
(
962 [in] DWORD reserved1
,
963 [in, unique, size_is(1)] void *reserved2
,
964 [in] DWORD reserved3
,
965 [out] IEnumSTATSTG
**ppenum
);
967 [call_as
(EnumElements
)]
968 HRESULT RemoteEnumElements
(
969 [in] DWORD reserved1
,
970 [in] unsigned long cbReserved2
,
971 [in, unique, size_is(cbReserved2
)] byte *reserved2
,
972 [in] DWORD reserved3
,
973 [out] IEnumSTATSTG
**ppenum
);
975 HRESULT DestroyElement
(
976 [in] LPCOLESTR pwcsName
);
978 HRESULT RenameElement
(
979 [in] LPCOLESTR pwcsOldName
,
980 [in] LPCOLESTR pwcsNewName
);
982 HRESULT SetElementTimes
(
983 [in, unique] LPCOLESTR pwcsName
,
984 [in, unique] const FILETIME
*pctime
,
985 [in, unique] const FILETIME
*patime
,
986 [in, unique] const FILETIME
*pmtime
);
989 [in] REFCLSID clsid
);
991 HRESULT SetStateBits
(
992 [in] DWORD grfStateBits
,
996 [out] STATSTG
*pstatstg
,
997 [in] DWORD grfStatFlag
);
1002 uuid(0000010b
-0000-0000-C000
-000000000046),
1003 pointer_default(unique)
1005 interface IPersistFile
: IPersist
1007 typedef [unique] IPersistFile
*LPPERSISTFILE
;
1012 [in] LPCOLESTR pszFileName
,
1016 [in, unique] LPCOLESTR pszFileName
,
1017 [in] BOOL fRemember
);
1019 HRESULT SaveCompleted
(
1020 [in, unique] LPCOLESTR pszFileName
);
1023 [out] LPOLESTR
*ppszFileName
);
1028 uuid(0000010a
-0000-0000-C000
-000000000046),
1029 pointer_default(unique)
1031 interface IPersistStorage
: IPersist
1033 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
1038 [in, unique] IStorage
*pStg
);
1041 [in, unique] IStorage
*pStg
);
1044 [in, unique] IStorage
*pStgSave
,
1045 [in] BOOL fSameAsLoad
);
1047 HRESULT SaveCompleted
(
1048 [in, unique] IStorage
*pStgNew
);
1050 HRESULT HandsOffStorage
();
1055 uuid(00000012-0000-0000-C000
-000000000046),
1056 pointer_default(unique)
1058 interface IRootStorage
: IUnknown
1060 typedef [unique] IRootStorage
*LPROOTSTORAGE
;
1062 HRESULT SwitchToFile
(
1063 [in] LPOLESTR pszFile
);
1068 uuid(0000000a
-0000-0000-C000
-000000000046),
1069 pointer_default(unique)
1071 interface ILockBytes
: IUnknown
1073 typedef [unique] ILockBytes
*LPLOCKBYTES
;
1077 [in] ULARGE_INTEGER ulOffset
,
1078 [out, size_is(cb
), length_is(*pcbRead
)]
1081 [out] ULONG
*pcbRead
);
1084 HRESULT RemoteReadAt
(
1085 [in] ULARGE_INTEGER ulOffset
,
1086 [out, size_is(cb
), length_is(*pcbRead
)]
1089 [out] ULONG
*pcbRead
);
1093 [in] ULARGE_INTEGER ulOffset
,
1094 [in, size_is(cb
)] const void *pv
,
1096 [out] ULONG
*pcbWritten
);
1099 HRESULT RemoteWriteAt
(
1100 [in] ULARGE_INTEGER ulOffset
,
1101 [in, size_is(cb
)] const byte *pv
,
1103 [out] ULONG
*pcbWritten
);
1108 [in] ULARGE_INTEGER cb
);
1111 [in] ULARGE_INTEGER libOffset
,
1112 [in] ULARGE_INTEGER cb
,
1113 [in] DWORD dwLockType
);
1115 HRESULT UnlockRegion
(
1116 [in] ULARGE_INTEGER libOffset
,
1117 [in] ULARGE_INTEGER cb
,
1118 [in] DWORD dwLockType
);
1121 [out] STATSTG
*pstatstg
,
1122 [in] DWORD grfStatFlag
);
1127 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
1128 pointer_default(unique)
1130 interface IFillLockBytes
: IUnknown
1134 [in, size_is(cb
)] const void *pv
,
1136 [out] ULONG
*pcbWritten
);
1138 [call_as
(FillAppend
)]
1139 HRESULT RemoteFillAppend
(
1140 [in, size_is(cb
)] const byte *pv
,
1142 [out] ULONG
*pcbWritten
);
1146 [in] ULARGE_INTEGER ulOffset
,
1147 [in, size_is(cb
)] const void *pv
,
1149 [out] ULONG
*pcbWritten
);
1152 HRESULT RemoteFillAt
(
1153 [in] ULARGE_INTEGER ulOffset
,
1154 [in, size_is(cb
)] const byte *pv
,
1156 [out] ULONG
*pcbWritten
);
1158 HRESULT SetFillSize
(
1159 [in] ULARGE_INTEGER ulSize
);
1162 [in] BOOL bCanceled
);
1167 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
1168 pointer_default(unique)
1170 interface IProgressNotify
: IUnknown
1173 [in] DWORD dwProgressCurrent
,
1174 [in] DWORD dwProgressMaximum
,
1175 [in] BOOL fAccurate
,
1182 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
1183 pointer_default(unique)
1185 interface ILayoutStorage
: IUnknown
1187 typedef struct tagStorageLayout
{
1189 OLECHAR
*pwcsElementName
;
1190 LARGE_INTEGER cOffset
;
1191 LARGE_INTEGER cBytes
;
1194 HRESULT LayoutScript
(
1195 [in] StorageLayout
*pStorageLayout
,
1196 [in] DWORD nEntries
,
1197 [in] DWORD glfInterleavedFlag
);
1199 HRESULT BeginMonitor
();
1201 HRESULT EndMonitor
();
1203 HRESULT ReLayoutDocfile
(
1204 [in] OLECHAR
*pwcsNewDfName
);
1206 HRESULT ReLayoutDocfileOnILockBytes
(
1207 [in] ILockBytes
*pILockBytes
);
1212 uuid(30f3d47a
-6447-11d1
-8e3c
-00c04fb9386d
)
1214 interface IBlockingLock
: IUnknown
1217 [in] DWORD dwTimeout
);
1225 uuid(bc0bf6ae
-8878-11d1
-83e9
-00c04fc2c6d4
)
1227 interface ITimeAndNoticeControl
: IUnknown
1229 HRESULT SuppressChanges
(
1239 uuid(8d19c834
-8879-11d1
-83e9
-00c04fc2c6d4
)
1241 interface IOplockStorage
: IUnknown
1243 HRESULT CreateStorageEx
(
1244 [in] LPCWSTR pwcsName
,
1247 [in] DWORD grfAttrs
,
1249 [out, iid_is(riid
)] void **ppstgOpen
);
1251 HRESULT OpenStorageEx
(
1252 [in] LPCWSTR pwcsName
,
1255 [in] DWORD grfAttrs
,
1257 [out, iid_is(riid
)] void **ppstgOpen
);
1260 /******************** Data Object ********************/
1264 uuid(00000103-0000-0000-C000
-000000000046),
1265 pointer_default(unique)
1267 interface IEnumFORMATETC
: IUnknown
1269 typedef [unique] IEnumFORMATETC
*LPENUMFORMATETC
;
1271 typedef struct tagDVTARGETDEVICE
{
1273 WORD tdDriverNameOffset
;
1274 WORD tdDeviceNameOffset
;
1275 WORD tdPortNameOffset
;
1276 WORD tdExtDevmodeOffset
;
1277 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
1281 typedef CLIPFORMAT
*LPCLIPFORMAT
;
1283 typedef struct tagFORMATETC
{
1284 CLIPFORMAT cfFormat
;
1285 [unique] DVTARGETDEVICE
*ptd
;
1289 } FORMATETC
, *LPFORMATETC
;
1294 [out, size_is(celt
), length_is(*pceltFetched
)]
1296 [out] ULONG
*pceltFetched
);
1301 [out, size_is(celt
), length_is(*pceltFetched
)]
1303 [out] ULONG
*pceltFetched
);
1311 [out] IEnumFORMATETC
**ppenum
);
1316 uuid(00000105-0000-0000-C000
-000000000046),
1317 pointer_default(unique)
1319 interface IEnumSTATDATA
: IUnknown
1321 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
1323 typedef enum tagADVF
{
1325 ADVF_PRIMEFIRST
= 2,
1327 ADVF_DATAONSTOP
= 64,
1328 ADVFCACHE_NOHANDLER
= 8,
1329 ADVFCACHE_FORCEBUILTIN
= 16,
1330 ADVFCACHE_ONSAVE
= 32
1333 typedef struct tagSTATDATA
1335 FORMATETC formatetc
;
1337 [unique] IAdviseSink
*pAdvSink
;
1339 } STATDATA
, *LPSTATDATA
;
1344 [out, size_is(celt
), length_is(*pceltFetched
)]
1346 [out] ULONG
*pceltFetched
);
1351 [out, size_is(celt
), length_is(*pceltFetched
)]
1353 [out] ULONG
*pceltFetched
);
1361 [out] IEnumSTATDATA
**ppenum
);
1366 uuid(0000010f
-0000-0000-C000
-000000000046),
1367 pointer_default(unique)
1369 interface IAdviseSink
: IUnknown
1371 typedef IAdviseSink
*LPADVISESINK
;
1373 typedef [v1_enum] enum tagTYMED
{
1384 typedef struct tagRemSTGMEDIUM
{
1387 unsigned long pData
;
1388 unsigned long pUnkForRelease
;
1389 unsigned long cbData
;
1390 [size_is(cbData
)] byte data
[];
1393 typedef struct tagSTGMEDIUM
{
1395 [switch_is(tymed
)] union {
1396 [case(TYMED_GDI
)] HBITMAP hBitmap;
1397 [case(TYMED_MFPICT
)] HMETAFILEPICT hMetaFilePict
;
1398 [case(TYMED_ENHMF
)] HENHMETAFILE hEnhMetaFile;
1399 [case(TYMED_HGLOBAL
)] HGLOBAL hGlobal;
1400 [case(TYMED_FILE
)] LPOLESTR lpszFileName
;
1401 [case(TYMED_ISTREAM
)] IStream
*pstm
;
1402 [case(TYMED_ISTORAGE
)] IStorage
*pstg
;
1405 [unique] IUnknown
*pUnkForRelease
;
1408 /* copied from wingdi.h */
1412 #define OBJ_METADC
4
1415 #define OBJ_BITMAP
7
1416 #define OBJ_REGION
8
1417 #define OBJ_METAFILE
9
1418 #define OBJ_MEMDC
10
1419 #define OBJ_EXTPEN
11
1420 #define OBJ_ENHMETADC
12
1421 #define OBJ_ENHMETAFILE
13
1423 typedef union _GDI_OBJECT
switch(DWORD ObjectType
) u
{
1424 case OBJ_BITMAP
: wireHBITMAP
hBitmap;
1425 case OBJ_PAL
: wireHPALETTE
hPalette;
1426 default: wireHGLOBAL hGeneric
;
1429 /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION
1430 * violates the C spec, but is necessary for C++. Avoid C spec violation. */
1431 cpp_quote
("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1432 cpp_quote
("#define _STGMEDIUM_UNION")
1435 typedef struct _userSTGMEDIUM
{
1436 union _STGMEDIUM_UNION
switch(DWORD tymed
) u
{
1438 case TYMED_MFPICT
: wireHMETAFILEPICT hMetaFilePict
;
1439 case TYMED_ENHMF
: wireHENHMETAFILE hHEnhMetaFile
;
1440 case TYMED_GDI
: GDI_OBJECT
*hGdiHandle
;
1441 case TYMED_HGLOBAL
: wireHGLOBAL
hGlobal;
1442 case TYMED_FILE
: LPOLESTR lpszFileName
;
1443 case TYMED_ISTREAM
: BYTE_BLOB
*pstm
;
1444 case TYMED_ISTORAGE
: BYTE_BLOB
*pstg
;
1446 IUnknown
*pUnkForRelease
;
1449 cpp_quote
("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)")
1450 cpp_quote
("#undef _STGMEDIUM_UNION")
1453 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1454 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1456 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1457 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1459 typedef STGMEDIUM
*LPSTGMEDIUM
;
1461 typedef struct _userFLAG_STGMEDIUM
{
1463 long fPassOwnership
;
1464 userSTGMEDIUM Stgmed
;
1465 } userFLAG_STGMEDIUM
;
1467 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1469 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1471 long fPassOwnership
;
1477 [in, unique] FORMATETC
*pFormatetc
,
1478 [in, unique] STGMEDIUM
*pStgmed
);
1480 [call_as
(OnDataChange
)]
1481 HRESULT RemoteOnDataChange
(
1482 [in, unique] FORMATETC
*pFormatetc
,
1483 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1487 [in] DWORD dwAspect
,
1490 [call_as
(OnViewChange
)]
1491 HRESULT RemoteOnViewChange
(
1492 [in] DWORD dwAspect
,
1497 [in] IMoniker
*pmk
);
1500 HRESULT RemoteOnRename
(
1501 [in] IMoniker
*pmk
);
1507 HRESULT RemoteOnSave
();
1513 HRESULT RemoteOnClose
();
1518 uuid(00000125-0000-0000-C000
-000000000046),
1519 pointer_default(unique)
1521 interface IAdviseSink2
: IAdviseSink
1523 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1526 void OnLinkSrcChange
(
1527 [in, unique] IMoniker
*pmk
);
1529 [call_as
(OnLinkSrcChange
)]
1530 HRESULT RemoteOnLinkSrcChange
(
1531 [in, unique] IMoniker
*pmk
);
1536 uuid(0000010e-0000-0000-C000
-000000000046),
1537 pointer_default(unique)
1539 interface IDataObject
: IUnknown
1541 typedef [unique] IDataObject
*LPDATAOBJECT
;
1543 typedef enum tagDATADIR
{
1550 [in, unique] FORMATETC
*pformatetcIn
,
1551 [out] STGMEDIUM
*pmedium
);
1554 HRESULT RemoteGetData
(
1555 [in, unique] FORMATETC
*pformatetcIn
,
1556 [out] STGMEDIUM
*pRemoteMedium
);
1559 HRESULT GetDataHere
(
1560 [in, unique] FORMATETC
*pformatetc
,
1561 [in, out] STGMEDIUM
*pmedium
);
1563 [call_as
(GetDataHere
)]
1564 HRESULT RemoteGetDataHere
(
1565 [in, unique] FORMATETC
*pformatetc
,
1566 [in, out] STGMEDIUM
*pRemoteMedium
);
1568 HRESULT QueryGetData
(
1569 [in, unique] FORMATETC
*pformatetc
);
1571 HRESULT GetCanonicalFormatEtc
(
1572 [in, unique] FORMATETC
*pformatectIn
,
1573 [out] FORMATETC
*pformatetcOut
);
1577 [in, unique] FORMATETC
*pformatetc
,
1578 [in, unique] STGMEDIUM
*pmedium
,
1579 [in] BOOL fRelease
);
1582 HRESULT RemoteSetData
(
1583 [in, unique] FORMATETC
*pformatetc
,
1584 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1585 [in] BOOL fRelease
);
1587 HRESULT EnumFormatEtc
(
1588 [in] DWORD dwDirection
,
1589 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1592 [in] FORMATETC
*pformatetc
,
1594 [in, unique] IAdviseSink
*pAdvSink
,
1595 [out] DWORD
*pdwConnection
);
1598 [in] DWORD dwConnection
);
1600 HRESULT EnumDAdvise
(
1601 [out] IEnumSTATDATA
**ppenumAdvise
);
1607 uuid(00000110-0000-0000-C000
-000000000046)
1609 interface IDataAdviseHolder
: IUnknown
1611 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1614 [in, unique] IDataObject
*pDataObject
,
1615 [in, unique] FORMATETC
*pFetc
,
1617 [in, unique] IAdviseSink
*pAdvise
,
1618 [out] DWORD
*pdwConnection
);
1621 [in] DWORD dwConnection
);
1624 [out] IEnumSTATDATA
**ppenumAdvise
);
1626 HRESULT SendOnDataChange
(
1627 [in, unique] IDataObject
*pDataObject
,
1628 [in] DWORD dwReserved
,
1632 /******************** Remoting ********************/
1637 uuid(00000016-0000-0000-C000
-000000000046)
1639 interface IMessageFilter
: IUnknown
1641 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1643 typedef enum tagCALLTYPE
{
1644 CALLTYPE_TOPLEVEL
= 1,
1645 CALLTYPE_NESTED
= 2,
1647 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1648 CALLTYPE_ASYNC_CALLPENDING
= 5
1651 typedef enum tagSERVERCALL
{
1652 SERVERCALL_ISHANDLED
= 0,
1653 SERVERCALL_REJECTED
= 1,
1654 SERVERCALL_RETRYLATER
= 2
1657 typedef enum tagPENDINGTYPE
{
1658 PENDINGTYPE_TOPLEVEL
= 1,
1659 PENDINGTYPE_NESTED
= 2
1662 typedef enum tagPENDINGMSG
{
1663 PENDINGMSG_CANCELCALL
= 0,
1664 PENDINGMSG_WAITNOPROCESS
= 1,
1665 PENDINGMSG_WAITDEFPROCESS
= 2
1668 typedef struct tagINTERFACEINFO
{
1672 } INTERFACEINFO
, *LPINTERFACEINFO
;
1674 DWORD HandleInComingCall
(
1675 [in] DWORD dwCallType
,
1676 [in] HTASK htaskCaller
,
1677 [in] DWORD dwTickCount
,
1678 [in] LPINTERFACEINFO lpInterfaceInfo
);
1680 DWORD RetryRejectedCall
(
1681 [in] HTASK htaskCallee
,
1682 [in] DWORD dwTickCount
,
1683 [in] DWORD dwRejectType
);
1685 DWORD MessagePending
(
1686 [in] HTASK htaskCallee
,
1687 [in] DWORD dwTickCount
,
1688 [in] DWORD dwPendingType
);
1694 uuid(D5F56B60
-593B
-101A
-B569
-08002B2DBF7A
)
1696 interface IRpcChannelBuffer
: IUnknown
1698 typedef [unique] IRpcChannelBuffer
*LPRPCCHANNELBUFFER
;
1700 typedef unsigned long RPCOLEDATAREP
;
1702 typedef struct tagRPCOLEMESSAGE
{
1704 RPCOLEDATAREP dataRepresentation
;
1712 typedef RPCOLEMESSAGE
*PRPCOLEMESSAGE
;
1715 [in] RPCOLEMESSAGE
*pMessage
,
1718 HRESULT SendReceive
(
1719 [in,out] RPCOLEMESSAGE
*pMessage
,
1720 [out] ULONG
*pStatus
);
1723 [in] RPCOLEMESSAGE
*pMessage
);
1726 [out] DWORD
*pdwDestContext
,
1727 [out] void **ppvDestContext
);
1729 HRESULT IsConnected
();
1735 uuid(594f31d0
-7f19
-11d0
-b194
-00a0c90dc8bf
)
1737 interface IRpcChannelBuffer2
: IRpcChannelBuffer
1739 typedef [unique] IRpcChannelBuffer2
*LPRPCCHANNELBUFFER2
;
1741 HRESULT GetProtocolVersion
(
1742 [in,out] DWORD
*pdwVersion
);
1748 uuid(25B15600
-0115-11d0
-BF0D
-00AA00B8DFD2
)
1750 interface IRpcChannelBuffer3
: IRpcChannelBuffer2
1752 typedef [unique] IRpcChannelBuffer3
*LPRPCCHANNELBUFFER3
;
1755 [in,out] RPCOLEMESSAGE
*pMsg
,
1756 [out] ULONG
*pulStatus
);
1759 [in,out] RPCOLEMESSAGE
*pMsg
,
1761 [out] ULONG
*pulStatus
);
1764 [in] RPCOLEMESSAGE
*pMsg
);
1766 HRESULT GetCallContext
(
1767 [in] RPCOLEMESSAGE
*pMsg
,
1769 [out] void **pInterface
);
1771 HRESULT GetDestCtxEx
(
1772 [in] RPCOLEMESSAGE
*pMsg
,
1773 [out] DWORD
*pdwDestContext
,
1774 [out] void **ppvDestContext
);
1777 [in] RPCOLEMESSAGE
*pMsg
,
1778 [out] DWORD
*pState
);
1780 HRESULT RegisterAsync
(
1781 [in] RPCOLEMESSAGE
*pMsg
,
1782 [in] IAsyncManager
*pAsyncMgr
);
1788 uuid(a5029fb6
-3c34
-11d1
-9c99
-00c04fb998aa
),
1789 pointer_default(unique)
1791 interface IAsyncRpcChannelBuffer
: IRpcChannelBuffer2
1794 [in, out] RPCOLEMESSAGE
*pMsg
,
1795 [in] ISynchronize
*pSync
,
1796 [out] ULONG
*pulStatus
);
1799 [in, out] RPCOLEMESSAGE
*pMsg
,
1800 [out] ULONG
*pulStatus
);
1802 HRESULT GetDestCtxEx
(
1803 [in] RPCOLEMESSAGE
*pMsg
,
1804 [out] DWORD
*pdwDestContext
,
1805 [out] void **ppvDestContext
);
1811 uuid(58a08519
-24c8
-4935-b482
-3fd823333a4f
)
1813 interface IRpcSyntaxNegotiate
: IUnknown
1815 HRESULT NegotiateSyntax
(
1816 [in, out] RPCOLEMESSAGE
*pMsg
);
1822 uuid(D5F56A34
-593B
-101A
-B569
-08002B2DBF7A
)
1824 interface IRpcProxyBuffer
: IUnknown
1826 typedef [unique] IRpcProxyBuffer
*LPRPCPROXYBUFFER
;
1829 [in, unique] IRpcChannelBuffer
*pRpcChannelBuffer
);
1837 uuid(D5F56AFC
-593B
-101A
-B569
-08002B2DBF7A
)
1839 interface IRpcStubBuffer
: IUnknown
1841 typedef [unique] IRpcStubBuffer
*LPRPCSTUBBUFFER
;
1844 [in] IUnknown
*pUnkServer
);
1849 [in] RPCOLEMESSAGE
*_prpcmsg
,
1850 [in] IRpcChannelBuffer
*_pRpcChannelBuffer
);
1852 IRpcStubBuffer
*IsIIDSupported
(
1857 HRESULT DebugServerQueryInterface
(
1860 void DebugServerRelease
(
1867 uuid(D5F569D0
-593B
-101A
-B569
-08002B2DBF7A
)
1869 interface IPSFactoryBuffer
: IUnknown
1871 typedef [unique] IPSFactoryBuffer
*LPPSFACTORYBUFFER
;
1873 HRESULT CreateProxy
(
1874 [in] IUnknown
*pUnkOuter
,
1876 [out] IRpcProxyBuffer
**ppProxy
,
1881 [in, unique] IUnknown
*pUnkServer
,
1882 [out] IRpcStubBuffer
**ppStub
);
1888 uuid(1008c4a0
-7613-11cf
-9af1
-0020af6e72f4
)
1890 interface IChannelHook
: IUnknown
1892 typedef [unique] IChannelHook
*LPCHANNELHOOK
;
1894 typedef struct SChannelHookCallInfo
{
1901 } SChannelHookCallInfo
;
1904 [in] REFGUID uExtent
,
1906 [out] ULONG
*pDataSize
);
1908 void ClientFillBuffer
(
1909 [in] REFGUID uExtent
,
1911 [in, out] ULONG
*pDataSize
,
1912 [in] void *pDataBuffer
);
1915 [in] REFGUID uExtent
,
1917 [in] ULONG cbDataSize
,
1918 [in] void *pDataBuffer
,
1919 [in] DWORD lDataRep
,
1920 [in] HRESULT hrFault
);
1923 [in] REFGUID uExtent
,
1925 [in] ULONG cbDataSize
,
1926 [in] void *pDataBuffer
,
1927 [in] DWORD lDataRep
);
1930 [in] REFGUID uExtent
,
1932 [in] HRESULT hrFault
,
1933 [out] ULONG
*pDataSize
);
1935 void ServerFillBuffer
(
1936 [in] REFGUID uExtent
,
1938 [in, out] ULONG
*pDataSize
,
1939 [in] void *pDataBuffer
,
1940 [in] HRESULT hrFault
);
1943 extern
const FMTID FMTID_SummaryInformation
;
1944 extern
const FMTID FMTID_DocSummaryInformation
;
1945 extern
const FMTID FMTID_UserDefinedProperties
;
1948 /******************** Connection Points ********************/
1951 /******************** DCOM ********************/
1956 uuid(0000013D
-0000-0000-C000
-000000000046)
1958 interface IClientSecurity
: IUnknown
1960 typedef struct tagSOLE_AUTHENTICATION_SERVICE
{
1963 OLECHAR
*pPrincipalName
;
1965 } SOLE_AUTHENTICATION_SERVICE
;
1967 typedef SOLE_AUTHENTICATION_SERVICE
*PSOLE_AUTHENTICATION_SERVICE
;
1969 typedef struct tagSOLE_AUTHENTICATION_INFO
{
1973 } SOLE_AUTHENTICATION_INFO
;
1975 const OLECHAR
*COLE_DEFAULT_PRINCIPAL
= (OLECHAR
*) -1;
1976 const void *COLE_DEFAULT_AUTHINFO
= (void*) -1;
1978 typedef struct tagSOLE_AUTHENTICATION_LIST
{
1980 SOLE_AUTHENTICATION_INFO
*aAuthInfo
;
1981 } SOLE_AUTHENTICATION_LIST
;
1983 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
1985 EOAC_MUTUAL_AUTH
= 0x1,
1986 EOAC_SECURE_REFS
= 0x2, /* CoInitializeSecurity only */
1987 EOAC_ACCESS_CONTROL
= 0x4, /* CoInitializeSecurity only */
1988 EOAC_APPID
= 0x8, /* CoInitializeSecurity only */
1989 EOAC_DYNAMIC
= 0x10, /* CoInitializeSecurity only */
1990 EOAC_STATIC_CLOAKING
= 0x20,
1991 EOAC_DYNAMIC_CLOAKING
= 0x40,
1992 EOAC_ANY_AUTHORITY
= 0x80,
1993 EOAC_MAKE_FULLSIC
= 0x100,
1994 EOAC_REQUIRE_FULLSIC
= 0x200, /* CoInitializeSecurity only */
1995 EOAC_AUTO_IMPERSONATE
= 0x400, /* CoInitializeSecurity only */
1996 EOAC_DEFAULT
= 0x800,
1997 EOAC_DISABLE_AAA
= 0x1000, /* CoInitializeSecurity only */
1998 EOAC_NO_CUSTOM_MARSHAL
= 0x2000, /* CoInitializeSecurity only */
1999 } EOLE_AUTHENTICATION_CAPABILITIES
;
2001 HRESULT QueryBlanket
(
2002 [in] IUnknown
*pProxy
,
2003 [out] DWORD
*pAuthnSvc
,
2004 [out] DWORD
*pAuthzSvc
,
2005 [out] OLECHAR
**pServerPrincName
,
2006 [out] DWORD
*pAuthnLevel
,
2007 [out] DWORD
*pImpLevel
,
2008 [out] void **pAuthInfo
,
2009 [out] DWORD
*pCapabilities
);
2012 [in] IUnknown
*pProxy
,
2013 [in] DWORD AuthnSvc
,
2014 [in] DWORD AuthzSvc
,
2015 [in] OLECHAR
*pServerPrincName
,
2016 [in] DWORD AuthnLevel
,
2017 [in] DWORD ImpLevel
,
2018 [in] void *pAuthInfo
,
2019 [in] DWORD Capabilities
);
2022 [in] IUnknown
*pProxy
,
2023 [out] IUnknown
**ppCopy
);
2029 uuid(0000013E-0000-0000-C000
-000000000046)
2031 interface IServerSecurity
: IUnknown
2033 HRESULT QueryBlanket
(
2034 [out] DWORD
*pAuthnSvc
,
2035 [out] DWORD
*pAuthzSvc
,
2036 [out] OLECHAR
**pServerPrincName
,
2037 [out] DWORD
*pAuthnLevel
,
2038 [out] DWORD
*pImpLevel
,
2039 [out] void **pPrivs
,
2040 [out] DWORD
*pCapabilities
);
2042 HRESULT ImpersonateClient
();
2044 HRESULT RevertToSelf
();
2046 BOOL IsImpersonating
();
2052 uuid(00000024-0000-0000-C000
-000000000046)
2054 interface IAsyncSetup
: IUnknown
2056 HRESULT GetAsyncManager
(
2058 [in] IUnknown
*pOuter
,
2060 [out] IUnknown
**ppInner
,
2061 [out] IAsyncManager
**ppAsyncMgr
);
2066 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
2068 interface IDirectWriterLock
: IUnknown
2070 HRESULT WaitForWriteAccess
(
2071 [in] DWORD dwTimeout
);
2073 HRESULT ReleaseWriteAccess
();
2075 HRESULT HaveWriteAccess
();
2080 uuid(00000030-0000-0000-C000
-000000000046)
2083 interface ISynchronize
: IUnknown
2087 [in] DWORD dwMilliseconds
);
2098 uuid(00000031-0000-0000-C000
-000000000046)
2100 interface ISynchronizeHandle
: IUnknown
2110 uuid(00000032-0000-0000-C000
-000000000046)
2112 interface ISynchronizeEvent
: ISynchronizeHandle
2114 HRESULT SetEventHandle
(
2122 uuid(00000033-0000-0000-C000
-000000000046)
2124 interface ISynchronizeContainer
: IUnknown
2126 HRESULT AddSynchronize
(
2127 [in] ISynchronize
*pSync
);
2129 HRESULT WaitMultiple
(
2131 [in] DWORD dwTimeOut
,
2132 [out] ISynchronize
**ppSync
);
2138 uuid(00000025-0000-0000-C000
-000000000046)
2140 interface ISynchronizeMutex
: ISynchronize
2142 HRESULT ReleaseMutex
();
2148 uuid(00000029-0000-0000-C000
-000000000046)
2151 interface ICancelMethodCalls
: IUnknown
2153 typedef [unique] ICancelMethodCalls
*LPCANCELMETHODCALLS
;
2156 [in] ULONG ulSeconds
);
2158 HRESULT TestCancel
();
2164 uuid(0000002A
-0000-0000-C000
-000000000046)
2166 interface IAsyncManager
: IUnknown
2168 typedef enum tagDCOM_CALL_STATE
{
2170 DCOM_CALL_COMPLETE
= 1,
2171 DCOM_CALL_CANCELED
= 2
2174 HRESULT CompleteCall
(
2175 [in] HRESULT Result
);
2177 HRESULT GetCallContext
(
2179 [out] void **pInterface
);
2182 [out] ULONG
*pulStateFlags
);
2188 uuid(1c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
2189 pointer_default(unique)
2191 interface ICallFactory
: IUnknown
2195 [in] IUnknown
*pCtrlUnk
,
2197 [out, iid_is(riid2
)] IUnknown
**ppv
);
2203 uuid(00000144-0000-0000-C000
-000000000046)
2205 interface IRpcOptions
: IUnknown
2208 [in] IUnknown
*pPrx
,
2209 [in] DWORD dwProperty
,
2210 [in] ULONG_PTR dwValue
);
2213 [in] IUnknown
*pPrx
,
2214 [in] DWORD dwProperty
,
2215 [out] ULONG_PTR
*pdwValue
);
2219 COMBND_RPCTIMEOUT
= 1,
2220 COMBND_SERVER_LOCALITY
= 2
2224 SERVER_LOCALITY_PROCESS_LOCAL
= 0,
2225 SERVER_LOCALITY_MACHINE_LOCAL
= 1,
2226 SERVER_LOCALITY_REMOTE
= 2
2232 uuid(00000149-0000-0000-C000
-000000000046),
2233 pointer_default(unique)
2235 interface IRpcHelper
: IUnknown
2237 HRESULT GetDCOMProtocolVersion
(
2238 [out] DWORD
*pComVersion
);
2240 HRESULT GetIIDFromOBJREF
(
2248 uuid(eb0cb9e8
-7996-11d2
-872e-0000f8080859
)
2250 interface IReleaseMarshalBuffers
: IUnknown
2252 HRESULT ReleaseMarshalBuffer
(
2253 [in] RPCOLEMESSAGE
*pMsg
,
2255 [in, unique] IUnknown
*pChnl
);
2261 uuid(0000002B
-0000-0000-C000
-000000000046)
2263 interface IWaitMultiple
: IUnknown
2265 HRESULT WaitMultiple
(
2267 [out] ISynchronize
**pSync
);
2268 HRESULT AddSynchronize
(
2269 [in] ISynchronize
*pSync
);
2275 uuid(00000026-0000-0000-C000
-000000000046)
2277 interface IUrlMon
: IUnknown
2279 HRESULT AsyncGetClassBits
(
2280 [in] REFCLSID rclsid
,
2281 [in, unique] LPCWSTR pszTYPE
,
2282 [in, unique] LPCWSTR pszExt
,
2283 [in] DWORD dwFileVersionMS
,
2284 [in] DWORD dwFileVersionLS
,
2285 [in, unique] LPCWSTR pszCodeBase
,
2287 [in] DWORD dwClassContext
,
2295 uuid(00000145-0000-0000-C000
-000000000046)
2297 interface IForegroundTransfer
: IUnknown
2299 HRESULT AllowForegroundTransfer
(
2300 [in] void *lpvReserved
);
2306 uuid(00000147-0000-0000-C000
-000000000046)
2308 interface IAddrTrackingControl
: IUnknown
2310 typedef [unique] IAddrTrackingControl
*LPADDRTRACKINGCONTROL
;
2312 HRESULT EnableCOMDynamicAddrTracking
();
2313 HRESULT DisableCOMDynamicAddrTracking
();
2319 uuid(00000148-0000-0000-C000
-000000000046)
2321 interface IAddrExclusionControl
: IUnknown
2323 typedef [unique] IAddrExclusionControl
*LPADDREXCLUSIONCONTROL
;
2325 HRESULT GetCurrentAddrExclusionList
(
2327 [out, iid_is(riid
)] void **ppEnumerator
);
2328 HRESULT UpdateAddrExclusionList
(
2329 [in] IUnknown
*pEnumerator
);
2332 typedef enum _APTTYPE
{
2333 APTTYPE_CURRENT
= -1,
2340 typedef enum _APTTYPEQUALIFIER
{
2341 APTTYPEQUALIFIER_NONE
,
2342 APTTYPEQUALIFIER_IMPLICIT_MTA
,
2343 APTTYPEQUALIFIER_NA_ON_MTA
,
2344 APTTYPEQUALIFIER_NA_ON_STA
,
2345 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA
,
2346 APTTYPEQUALIFIER_NA_ON_MAINSTA
2349 typedef enum _THDTYPE
{
2350 THDTYPE_BLOCKMESSAGES
= 0,
2351 THDTYPE_PROCESSMESSAGES
= 1
2357 uuid(000001ce
-0000-0000-C000
-000000000046),
2358 pointer_default(unique)
2360 interface IComThreadingInfo
: IUnknown
2362 HRESULT GetCurrentApartmentType
(
2363 [out] APTTYPE
*pAptType
);
2364 HRESULT GetCurrentThreadType
(
2365 [out] THDTYPE
*pThreadType
);
2366 HRESULT GetCurrentLogicalThreadId
(
2367 [out] GUID
*pguidLogicalThreadId
);
2368 HRESULT SetCurrentLogicalThreadId
(
2369 [in] REFGUID rguid
);
2375 pointer_default(unique),
2376 uuid(72380d55
-8d2b
-43a3
-8513-2b6ef31434e9
)
2378 interface IProcessInitControl
: IUnknown
2380 HRESULT ResetInitializerTimeout
(
2381 [in] DWORD dwSecondsRemaining
);
2387 uuid(00000034-0000-0000-C000
-000000000046),
2388 pointer_default(unique)
2390 interface IInitializeSpy
: IUnknown
2392 typedef [unique] IInitializeSpy
*LPINITIALIZESPY
;
2394 HRESULT PreInitialize
(
2395 [in] DWORD dwCoInit
,
2396 [in] DWORD dwCurThreadAptRefs
);
2398 HRESULT PostInitialize
(
2399 [in] HRESULT hrCoInit
,
2400 [in] DWORD dwCoInit
,
2401 [in] DWORD dwNewThreadAptRefs
);
2403 HRESULT PreUninitialize
(
2404 [in] DWORD dwCurThreadAptRefs
);
2406 HRESULT PostUninitialize
(
2407 [in] DWORD dwNewThreadAptRefs
);
2412 uuid(969dc708
-5c76
-11d1
-8d86
-0000f804b057
)
2414 interface IThumbnailExtractor
: IUnknown
2416 HRESULT ExtractThumbnail
(
2417 [in] IStorage
*pStg
,
2418 [in] ULONG ulLength
,
2419 [in] ULONG ulHeight
,
2420 [out] ULONG
*pulOutputLength
,
2421 [out] ULONG
*pulOutputHeight
,
2422 [out] HBITMAP *phOutputBitmap
);
2425 HRESULT OnFileUpdated
(
2426 [in] IStorage
*pStg
);
2429 typedef enum tagGLOBALOPT_PROPERTIES
2431 COMGLB_EXCEPTION_HANDLING
= 1,
2433 COMGLB_RPC_THREADPOOL_SETTING
= 3
2434 } GLOBALOPT_PROPERTIES
;
2436 typedef enum tagGLOBALOPT_EH_VALUES
2438 COMGLB_EXCEPTION_HANDLE
= 0,
2439 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
= 1,
2440 COMGLB_EXCEPTION_DONOT_HANDLE
= COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
,
2441 COMGLB_EXCEPTION_DONOT_HANDLE_ANY
= 2
2442 } GLOBALOPT_EH_VALUES
;
2444 typedef enum tagGLOBALOPT_RPCTP_VALUES
2446 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL
= 0,
2447 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL
= 1
2448 } GLOBALOPT_RPCTP_VALUES
;
2454 pointer_default(unique),
2455 uuid(0000015B
-0000-0000-C000
-000000000046)
2457 interface IGlobalOptions
: IUnknown
2459 HRESULT Set
([in] GLOBALOPT_PROPERTIES property
, [in] ULONG_PTR value
);
2460 HRESULT Query
([in] GLOBALOPT_PROPERTIES property
, [out ] ULONG_PTR
*value
);
2465 pointer_default(unique),
2466 uuid(947990de
-cc28
-11d2
-a0f7
-00805f858fb1
)
2468 interface IDummyHICONIncluder
: IUnknown
2470 HRESULT Dummy
([in] HICON hIcon
, [in] HDC hdc
);
2476 pointer_default(unique),
2477 uuid(a2f05a09
-27a2
-42b5
-bc0e
-ac163ef49d9b
)
2479 interface IApartmentShutdown
: IUnknown
2481 void OnUninitialize
([in] UINT64 identifier
);
2484 cpp_quote
("#ifdef USE_COM_CONTEXT_DEF")
2486 typedef DWORD CPFLAGS
;
2488 typedef struct tagContextProperty
2492 [unique] IUnknown
*pUnk
;
2498 uuid(000001c1
-0000-0000-C000
-000000000046)
2500 interface IEnumContextProps
: IUnknown
2502 typedef [unique] IEnumContextProps
*LPENUMCONTEXTPROPS
;
2506 [out, size_is(celt
), length_is(*pceltFetched
)] ContextProperty
*pContextProperties
,
2507 [out] ULONG
*pceltFetched
);
2515 [out] IEnumContextProps
**ppEnumContextProps
);
2518 [out] ULONG
*pcelt
);
2524 uuid(000001c0
-0000-0000-C000
-000000000046)
2526 interface IContext
: IUnknown
2528 HRESULT SetProperty
(
2529 [in] REFGUID policyId
,
2531 [in] IUnknown
*pUnk
);
2533 HRESULT RemoveProperty
(
2534 [in] REFGUID policyId
);
2536 HRESULT GetProperty
(
2538 [out] CPFLAGS
*pFlags
,
2539 [out] IUnknown
**ppUnk
);
2541 HRESULT EnumContextProps
(
2542 [out] IEnumContextProps
**ppEnumContextProps
);
2548 uuid(000001c6
-0000-0000-c000
-000000000046),
2549 pointer_default(unique)
2551 interface IObjContext
: IContext
2562 cpp_quote
("#endif /* defined USE_COM_CONTEXT_DEF */")