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 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 typedef struct _userSTGMEDIUM
{
1430 union switch(DWORD tymed
) u
{
1432 case TYMED_MFPICT
: wireHMETAFILEPICT hMetaFilePict
;
1433 case TYMED_ENHMF
: wireHENHMETAFILE hHEnhMetaFile
;
1434 case TYMED_GDI
: GDI_OBJECT
*hGdiHandle
;
1435 case TYMED_HGLOBAL
: wireHGLOBAL
hGlobal;
1436 case TYMED_FILE
: LPOLESTR lpszFileName
;
1437 case TYMED_ISTREAM
: BYTE_BLOB
*pstm
;
1438 case TYMED_ISTORAGE
: BYTE_BLOB
*pstg
;
1440 IUnknown
*pUnkForRelease
;
1443 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1444 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1446 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1447 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1449 typedef STGMEDIUM
*LPSTGMEDIUM
;
1451 typedef struct _userFLAG_STGMEDIUM
{
1453 long fPassOwnership
;
1454 userSTGMEDIUM Stgmed
;
1455 } userFLAG_STGMEDIUM
;
1457 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1459 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1461 long fPassOwnership
;
1467 [in, unique] FORMATETC
*pFormatetc
,
1468 [in, unique] STGMEDIUM
*pStgmed
);
1470 [call_as
(OnDataChange
)]
1471 HRESULT RemoteOnDataChange
(
1472 [in, unique] FORMATETC
*pFormatetc
,
1473 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1477 [in] DWORD dwAspect
,
1480 [call_as
(OnViewChange
)]
1481 HRESULT RemoteOnViewChange
(
1482 [in] DWORD dwAspect
,
1487 [in] IMoniker
*pmk
);
1490 HRESULT RemoteOnRename
(
1491 [in] IMoniker
*pmk
);
1497 HRESULT RemoteOnSave
();
1503 HRESULT RemoteOnClose
();
1508 uuid(00000125-0000-0000-C000
-000000000046),
1509 pointer_default(unique)
1511 interface IAdviseSink2
: IAdviseSink
1513 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1516 void OnLinkSrcChange
(
1517 [in, unique] IMoniker
*pmk
);
1519 [call_as
(OnLinkSrcChange
)]
1520 HRESULT RemoteOnLinkSrcChange
(
1521 [in, unique] IMoniker
*pmk
);
1526 uuid(0000010e-0000-0000-C000
-000000000046),
1527 pointer_default(unique)
1529 interface IDataObject
: IUnknown
1531 typedef [unique] IDataObject
*LPDATAOBJECT
;
1533 typedef enum tagDATADIR
{
1540 [in, unique] FORMATETC
*pformatetcIn
,
1541 [out] STGMEDIUM
*pmedium
);
1544 HRESULT RemoteGetData
(
1545 [in, unique] FORMATETC
*pformatetcIn
,
1546 [out] STGMEDIUM
*pRemoteMedium
);
1549 HRESULT GetDataHere
(
1550 [in, unique] FORMATETC
*pformatetc
,
1551 [in, out] STGMEDIUM
*pmedium
);
1553 [call_as
(GetDataHere
)]
1554 HRESULT RemoteGetDataHere
(
1555 [in, unique] FORMATETC
*pformatetc
,
1556 [in, out] STGMEDIUM
*pRemoteMedium
);
1558 HRESULT QueryGetData
(
1559 [in, unique] FORMATETC
*pformatetc
);
1561 HRESULT GetCanonicalFormatEtc
(
1562 [in, unique] FORMATETC
*pformatectIn
,
1563 [out] FORMATETC
*pformatetcOut
);
1567 [in, unique] FORMATETC
*pformatetc
,
1568 [in, unique] STGMEDIUM
*pmedium
,
1569 [in] BOOL fRelease
);
1572 HRESULT RemoteSetData
(
1573 [in, unique] FORMATETC
*pformatetc
,
1574 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1575 [in] BOOL fRelease
);
1577 HRESULT EnumFormatEtc
(
1578 [in] DWORD dwDirection
,
1579 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1582 [in] FORMATETC
*pformatetc
,
1584 [in, unique] IAdviseSink
*pAdvSink
,
1585 [out] DWORD
*pdwConnection
);
1588 [in] DWORD dwConnection
);
1590 HRESULT EnumDAdvise
(
1591 [out] IEnumSTATDATA
**ppenumAdvise
);
1597 uuid(00000110-0000-0000-C000
-000000000046)
1599 interface IDataAdviseHolder
: IUnknown
1601 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1604 [in, unique] IDataObject
*pDataObject
,
1605 [in, unique] FORMATETC
*pFetc
,
1607 [in, unique] IAdviseSink
*pAdvise
,
1608 [out] DWORD
*pdwConnection
);
1611 [in] DWORD dwConnection
);
1614 [out] IEnumSTATDATA
**ppenumAdvise
);
1616 HRESULT SendOnDataChange
(
1617 [in, unique] IDataObject
*pDataObject
,
1618 [in] DWORD dwReserved
,
1622 /******************** Remoting ********************/
1627 uuid(00000016-0000-0000-C000
-000000000046)
1629 interface IMessageFilter
: IUnknown
1631 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1633 typedef enum tagCALLTYPE
{
1634 CALLTYPE_TOPLEVEL
= 1,
1635 CALLTYPE_NESTED
= 2,
1637 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1638 CALLTYPE_ASYNC_CALLPENDING
= 5
1641 typedef enum tagSERVERCALL
{
1642 SERVERCALL_ISHANDLED
= 0,
1643 SERVERCALL_REJECTED
= 1,
1644 SERVERCALL_RETRYLATER
= 2
1647 typedef enum tagPENDINGTYPE
{
1648 PENDINGTYPE_TOPLEVEL
= 1,
1649 PENDINGTYPE_NESTED
= 2
1652 typedef enum tagPENDINGMSG
{
1653 PENDINGMSG_CANCELCALL
= 0,
1654 PENDINGMSG_WAITNOPROCESS
= 1,
1655 PENDINGMSG_WAITDEFPROCESS
= 2
1658 typedef struct tagINTERFACEINFO
{
1662 } INTERFACEINFO
, *LPINTERFACEINFO
;
1664 DWORD HandleInComingCall
(
1665 [in] DWORD dwCallType
,
1666 [in] HTASK htaskCaller
,
1667 [in] DWORD dwTickCount
,
1668 [in] LPINTERFACEINFO lpInterfaceInfo
);
1670 DWORD RetryRejectedCall
(
1671 [in] HTASK htaskCallee
,
1672 [in] DWORD dwTickCount
,
1673 [in] DWORD dwRejectType
);
1675 DWORD MessagePending
(
1676 [in] HTASK htaskCallee
,
1677 [in] DWORD dwTickCount
,
1678 [in] DWORD dwPendingType
);
1684 uuid(D5F56B60
-593B
-101A
-B569
-08002B2DBF7A
)
1686 interface IRpcChannelBuffer
: IUnknown
1688 typedef [unique] IRpcChannelBuffer
*LPRPCCHANNELBUFFER
;
1690 typedef unsigned long RPCOLEDATAREP
;
1692 typedef struct tagRPCOLEMESSAGE
{
1694 RPCOLEDATAREP dataRepresentation
;
1702 typedef RPCOLEMESSAGE
*PRPCOLEMESSAGE
;
1705 [in] RPCOLEMESSAGE
*pMessage
,
1708 HRESULT SendReceive
(
1709 [in,out] RPCOLEMESSAGE
*pMessage
,
1710 [out] ULONG
*pStatus
);
1713 [in] RPCOLEMESSAGE
*pMessage
);
1716 [out] DWORD
*pdwDestContext
,
1717 [out] void **ppvDestContext
);
1719 HRESULT IsConnected
();
1725 uuid(594f31d0
-7f19
-11d0
-b194
-00a0c90dc8bf
)
1727 interface IRpcChannelBuffer2
: IRpcChannelBuffer
1729 typedef [unique] IRpcChannelBuffer2
*LPRPCCHANNELBUFFER2
;
1731 HRESULT GetProtocolVersion
(
1732 [in,out] DWORD
*pdwVersion
);
1738 uuid(25B15600
-0115-11d0
-BF0D
-00AA00B8DFD2
)
1740 interface IRpcChannelBuffer3
: IRpcChannelBuffer2
1742 typedef [unique] IRpcChannelBuffer3
*LPRPCCHANNELBUFFER3
;
1745 [in,out] RPCOLEMESSAGE
*pMsg
,
1746 [out] ULONG
*pulStatus
);
1749 [in,out] RPCOLEMESSAGE
*pMsg
,
1751 [out] ULONG
*pulStatus
);
1754 [in] RPCOLEMESSAGE
*pMsg
);
1756 HRESULT GetCallContext
(
1757 [in] RPCOLEMESSAGE
*pMsg
,
1759 [out] void **pInterface
);
1761 HRESULT GetDestCtxEx
(
1762 [in] RPCOLEMESSAGE
*pMsg
,
1763 [out] DWORD
*pdwDestContext
,
1764 [out] void **ppvDestContext
);
1767 [in] RPCOLEMESSAGE
*pMsg
,
1768 [out] DWORD
*pState
);
1770 HRESULT RegisterAsync
(
1771 [in] RPCOLEMESSAGE
*pMsg
,
1772 [in] IAsyncManager
*pAsyncMgr
);
1778 uuid(a5029fb6
-3c34
-11d1
-9c99
-00c04fb998aa
),
1779 pointer_default(unique)
1781 interface IAsyncRpcChannelBuffer
: IRpcChannelBuffer2
1784 [in, out] RPCOLEMESSAGE
*pMsg
,
1785 [in] ISynchronize
*pSync
,
1786 [out] ULONG
*pulStatus
);
1789 [in, out] RPCOLEMESSAGE
*pMsg
,
1790 [out] ULONG
*pulStatus
);
1792 HRESULT GetDestCtxEx
(
1793 [in] RPCOLEMESSAGE
*pMsg
,
1794 [out] DWORD
*pdwDestContext
,
1795 [out] void **ppvDestContext
);
1801 uuid(58a08519
-24c8
-4935-b482
-3fd823333a4f
)
1803 interface IRpcSyntaxNegotiate
: IUnknown
1805 HRESULT NegotiateSyntax
(
1806 [in, out] RPCOLEMESSAGE
*pMsg
);
1812 uuid(D5F56A34
-593B
-101A
-B569
-08002B2DBF7A
)
1814 interface IRpcProxyBuffer
: IUnknown
1816 typedef [unique] IRpcProxyBuffer
*LPRPCPROXYBUFFER
;
1819 [in, unique] IRpcChannelBuffer
*pRpcChannelBuffer
);
1827 uuid(D5F56AFC
-593B
-101A
-B569
-08002B2DBF7A
)
1829 interface IRpcStubBuffer
: IUnknown
1831 typedef [unique] IRpcStubBuffer
*LPRPCSTUBBUFFER
;
1834 [in] IUnknown
*pUnkServer
);
1839 [in] RPCOLEMESSAGE
*_prpcmsg
,
1840 [in] IRpcChannelBuffer
*_pRpcChannelBuffer
);
1842 IRpcStubBuffer
*IsIIDSupported
(
1847 HRESULT DebugServerQueryInterface
(
1850 void DebugServerRelease
(
1857 uuid(D5F569D0
-593B
-101A
-B569
-08002B2DBF7A
)
1859 interface IPSFactoryBuffer
: IUnknown
1861 typedef [unique] IPSFactoryBuffer
*LPPSFACTORYBUFFER
;
1863 HRESULT CreateProxy
(
1864 [in] IUnknown
*pUnkOuter
,
1866 [out] IRpcProxyBuffer
**ppProxy
,
1871 [in, unique] IUnknown
*pUnkServer
,
1872 [out] IRpcStubBuffer
**ppStub
);
1878 uuid(1008c4a0
-7613-11cf
-9af1
-0020af6e72f4
)
1880 interface IChannelHook
: IUnknown
1882 typedef [unique] IChannelHook
*LPCHANNELHOOK
;
1884 typedef struct SChannelHookCallInfo
{
1891 } SChannelHookCallInfo
;
1894 [in] REFGUID uExtent
,
1896 [out] ULONG
*pDataSize
);
1898 void ClientFillBuffer
(
1899 [in] REFGUID uExtent
,
1901 [in, out] ULONG
*pDataSize
,
1902 [in] void *pDataBuffer
);
1905 [in] REFGUID uExtent
,
1907 [in] ULONG cbDataSize
,
1908 [in] void *pDataBuffer
,
1909 [in] DWORD lDataRep
,
1910 [in] HRESULT hrFault
);
1913 [in] REFGUID uExtent
,
1915 [in] ULONG cbDataSize
,
1916 [in] void *pDataBuffer
,
1917 [in] DWORD lDataRep
);
1920 [in] REFGUID uExtent
,
1922 [in] HRESULT hrFault
,
1923 [out] ULONG
*pDataSize
);
1925 void ServerFillBuffer
(
1926 [in] REFGUID uExtent
,
1928 [in, out] ULONG
*pDataSize
,
1929 [in] void *pDataBuffer
,
1930 [in] HRESULT hrFault
);
1933 extern
const FMTID FMTID_SummaryInformation
;
1934 extern
const FMTID FMTID_DocSummaryInformation
;
1935 extern
const FMTID FMTID_UserDefinedProperties
;
1938 /******************** Connection Points ********************/
1941 /******************** DCOM ********************/
1946 uuid(0000013D
-0000-0000-C000
-000000000046)
1948 interface IClientSecurity
: IUnknown
1950 typedef struct tagSOLE_AUTHENTICATION_SERVICE
{
1953 OLECHAR
*pPrincipalName
;
1955 } SOLE_AUTHENTICATION_SERVICE
;
1957 typedef SOLE_AUTHENTICATION_SERVICE
*PSOLE_AUTHENTICATION_SERVICE
;
1959 typedef struct tagSOLE_AUTHENTICATION_INFO
{
1963 } SOLE_AUTHENTICATION_INFO
;
1965 const OLECHAR
*COLE_DEFAULT_PRINCIPAL
= (OLECHAR
*) -1;
1966 const void *COLE_DEFAULT_AUTHINFO
= (void*) -1;
1968 typedef struct tagSOLE_AUTHENTICATION_LIST
{
1970 SOLE_AUTHENTICATION_INFO
*aAuthInfo
;
1971 } SOLE_AUTHENTICATION_LIST
;
1973 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
1975 EOAC_MUTUAL_AUTH
= 0x1,
1976 EOAC_SECURE_REFS
= 0x2, /* CoInitializeSecurity only */
1977 EOAC_ACCESS_CONTROL
= 0x4, /* CoInitializeSecurity only */
1978 EOAC_APPID
= 0x8, /* CoInitializeSecurity only */
1979 EOAC_DYNAMIC
= 0x10, /* CoInitializeSecurity only */
1980 EOAC_STATIC_CLOAKING
= 0x20,
1981 EOAC_DYNAMIC_CLOAKING
= 0x40,
1982 EOAC_ANY_AUTHORITY
= 0x80,
1983 EOAC_MAKE_FULLSIC
= 0x100,
1984 EOAC_REQUIRE_FULLSIC
= 0x200, /* CoInitializeSecurity only */
1985 EOAC_AUTO_IMPERSONATE
= 0x400, /* CoInitializeSecurity only */
1986 EOAC_DEFAULT
= 0x800,
1987 EOAC_DISABLE_AAA
= 0x1000, /* CoInitializeSecurity only */
1988 EOAC_NO_CUSTOM_MARSHAL
= 0x2000, /* CoInitializeSecurity only */
1989 } EOLE_AUTHENTICATION_CAPABILITIES
;
1991 HRESULT QueryBlanket
(
1992 [in] IUnknown
*pProxy
,
1993 [out] DWORD
*pAuthnSvc
,
1994 [out] DWORD
*pAuthzSvc
,
1995 [out] OLECHAR
**pServerPrincName
,
1996 [out] DWORD
*pAuthnLevel
,
1997 [out] DWORD
*pImpLevel
,
1998 [out] void **pAuthInfo
,
1999 [out] DWORD
*pCapabilities
);
2002 [in] IUnknown
*pProxy
,
2003 [in] DWORD AuthnSvc
,
2004 [in] DWORD AuthzSvc
,
2005 [in] OLECHAR
*pServerPrincName
,
2006 [in] DWORD AuthnLevel
,
2007 [in] DWORD ImpLevel
,
2008 [in] void *pAuthInfo
,
2009 [in] DWORD Capabilities
);
2012 [in] IUnknown
*pProxy
,
2013 [out] IUnknown
**ppCopy
);
2019 uuid(0000013E-0000-0000-C000
-000000000046)
2021 interface IServerSecurity
: IUnknown
2023 HRESULT QueryBlanket
(
2024 [out] DWORD
*pAuthnSvc
,
2025 [out] DWORD
*pAuthzSvc
,
2026 [out] OLECHAR
**pServerPrincName
,
2027 [out] DWORD
*pAuthnLevel
,
2028 [out] DWORD
*pImpLevel
,
2029 [out] void **pPrivs
,
2030 [out] DWORD
*pCapabilities
);
2032 HRESULT ImpersonateClient
();
2034 HRESULT RevertToSelf
();
2036 BOOL IsImpersonating
();
2042 uuid(00000024-0000-0000-C000
-000000000046)
2044 interface IAsyncSetup
: IUnknown
2046 HRESULT GetAsyncManager
(
2048 [in] IUnknown
*pOuter
,
2050 [out] IUnknown
**ppInner
,
2051 [out] IAsyncManager
**ppAsyncMgr
);
2056 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
2058 interface IDirectWriterLock
: IUnknown
2060 HRESULT WaitForWriteAccess
(
2061 [in] DWORD dwTimeout
);
2063 HRESULT ReleaseWriteAccess
();
2065 HRESULT HaveWriteAccess
();
2070 uuid(00000030-0000-0000-C000
-000000000046)
2073 interface ISynchronize
: IUnknown
2077 [in] DWORD dwMilliseconds
);
2088 uuid(00000031-0000-0000-C000
-000000000046)
2090 interface ISynchronizeHandle
: IUnknown
2100 uuid(00000032-0000-0000-C000
-000000000046)
2102 interface ISynchronizeEvent
: ISynchronizeHandle
2104 HRESULT SetEventHandle
(
2112 uuid(00000033-0000-0000-C000
-000000000046)
2114 interface ISynchronizeContainer
: IUnknown
2116 HRESULT AddSynchronize
(
2117 [in] ISynchronize
*pSync
);
2119 HRESULT WaitMultiple
(
2121 [in] DWORD dwTimeOut
,
2122 [out] ISynchronize
**ppSync
);
2128 uuid(00000025-0000-0000-C000
-000000000046)
2130 interface ISynchronizeMutex
: ISynchronize
2132 HRESULT ReleaseMutex
();
2138 uuid(00000029-0000-0000-C000
-000000000046)
2141 interface ICancelMethodCalls
: IUnknown
2143 typedef [unique] ICancelMethodCalls
*LPCANCELMETHODCALLS
;
2146 [in] ULONG ulSeconds
);
2148 HRESULT TestCancel
();
2154 uuid(0000002A
-0000-0000-C000
-000000000046)
2156 interface IAsyncManager
: IUnknown
2158 typedef enum tagDCOM_CALL_STATE
{
2160 DCOM_CALL_COMPLETE
= 1,
2161 DCOM_CALL_CANCELED
= 2
2164 HRESULT CompleteCall
(
2165 [in] HRESULT Result
);
2167 HRESULT GetCallContext
(
2169 [out] void **pInterface
);
2172 [out] ULONG
*pulStateFlags
);
2178 uuid(1c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
2179 pointer_default(unique)
2181 interface ICallFactory
: IUnknown
2185 [in] IUnknown
*pCtrlUnk
,
2187 [out, iid_is(riid2
)] IUnknown
**ppv
);
2193 uuid(00000144-0000-0000-C000
-000000000046)
2195 interface IRpcOptions
: IUnknown
2198 [in] IUnknown
*pPrx
,
2199 [in] DWORD dwProperty
,
2200 [in] ULONG_PTR dwValue
);
2203 [in] IUnknown
*pPrx
,
2204 [in] DWORD dwProperty
,
2205 [out] ULONG_PTR
*pdwValue
);
2209 COMBND_RPCTIMEOUT
= 1,
2210 COMBND_SERVER_LOCALITY
= 2
2214 SERVER_LOCALITY_PROCESS_LOCAL
= 0,
2215 SERVER_LOCALITY_MACHINE_LOCAL
= 1,
2216 SERVER_LOCALITY_REMOTE
= 2
2222 uuid(00000149-0000-0000-C000
-000000000046),
2223 pointer_default(unique)
2225 interface IRpcHelper
: IUnknown
2227 HRESULT GetDCOMProtocolVersion
(
2228 [out] DWORD
*pComVersion
);
2230 HRESULT GetIIDFromOBJREF
(
2238 uuid(eb0cb9e8
-7996-11d2
-872e-0000f8080859
)
2240 interface IReleaseMarshalBuffers
: IUnknown
2242 HRESULT ReleaseMarshalBuffer
(
2243 [in] RPCOLEMESSAGE
*pMsg
,
2245 [in, unique] IUnknown
*pChnl
);
2251 uuid(0000002B
-0000-0000-C000
-000000000046)
2253 interface IWaitMultiple
: IUnknown
2255 HRESULT WaitMultiple
(
2257 [out] ISynchronize
**pSync
);
2258 HRESULT AddSynchronize
(
2259 [in] ISynchronize
*pSync
);
2265 uuid(00000026-0000-0000-C000
-000000000046)
2267 interface IUrlMon
: IUnknown
2269 HRESULT AsyncGetClassBits
(
2270 [in] REFCLSID rclsid
,
2271 [in, unique] LPCWSTR pszTYPE
,
2272 [in, unique] LPCWSTR pszExt
,
2273 [in] DWORD dwFileVersionMS
,
2274 [in] DWORD dwFileVersionLS
,
2275 [in, unique] LPCWSTR pszCodeBase
,
2277 [in] DWORD dwClassContext
,
2285 uuid(00000145-0000-0000-C000
-000000000046)
2287 interface IForegroundTransfer
: IUnknown
2289 HRESULT AllowForegroundTransfer
(
2290 [in] void *lpvReserved
);
2296 uuid(00000147-0000-0000-C000
-000000000046)
2298 interface IAddrTrackingControl
: IUnknown
2300 typedef [unique] IAddrTrackingControl
*LPADDRTRACKINGCONTROL
;
2302 HRESULT EnableCOMDynamicAddrTracking
();
2303 HRESULT DisableCOMDynamicAddrTracking
();
2309 uuid(00000148-0000-0000-C000
-000000000046)
2311 interface IAddrExclusionControl
: IUnknown
2313 typedef [unique] IAddrExclusionControl
*LPADDREXCLUSIONCONTROL
;
2315 HRESULT GetCurrentAddrExclusionList
(
2317 [out, iid_is(riid
)] void **ppEnumerator
);
2318 HRESULT UpdateAddrExclusionList
(
2319 [in] IUnknown
*pEnumerator
);
2322 typedef enum _APTTYPE
{
2323 APTTYPE_CURRENT
= -1,
2330 typedef enum _THDTYPE
{
2331 THDTYPE_BLOCKMESSAGES
= 0,
2332 THDTYPE_PROCESSMESSAGES
= 1
2338 uuid(000001ce
-0000-0000-C000
-000000000046),
2339 pointer_default(unique)
2341 interface IComThreadingInfo
: IUnknown
2343 HRESULT GetCurrentApartmentType
(
2344 [out] APTTYPE
*pAptType
);
2345 HRESULT GetCurrentThreadType
(
2346 [out] THDTYPE
*pThreadType
);
2347 HRESULT GetCurrentLogicalThreadId
(
2348 [out] GUID
*pguidLogicalThreadId
);
2349 HRESULT SetCurrentLogicalThreadId
(
2350 [in] REFGUID rguid
);
2356 pointer_default(unique),
2357 uuid(72380d55
-8d2b
-43a3
-8513-2b6ef31434e9
)
2359 interface IProcessInitControl
: IUnknown
2361 HRESULT ResetInitializerTimeout
(
2362 [in] DWORD dwSecondsRemaining
);
2368 uuid(00000034-0000-0000-C000
-000000000046),
2369 pointer_default(unique)
2371 interface IInitializeSpy
: IUnknown
2373 typedef [unique] IInitializeSpy
*LPINITIALIZESPY
;
2375 HRESULT PreInitialize
(
2376 [in] DWORD dwCoInit
,
2377 [in] DWORD dwCurThreadAptRefs
);
2379 HRESULT PostInitialize
(
2380 [in] HRESULT hrCoInit
,
2381 [in] DWORD dwCoInit
,
2382 [in] DWORD dwNewThreadAptRefs
);
2384 HRESULT PreUninitialize
(
2385 [in] DWORD dwCurThreadAptRefs
);
2387 HRESULT PostUninitialize
(
2388 [in] DWORD dwNewThreadAptRefs
);
2393 uuid(969dc708
-5c76
-11d1
-8d86
-0000f804b057
)
2395 interface IThumbnailExtractor
: IUnknown
2397 HRESULT ExtractThumbnail
(
2398 [in] IStorage
*pStg
,
2399 [in] ULONG ulLength
,
2400 [in] ULONG ulHeight
,
2401 [out] ULONG
*pulOutputLength
,
2402 [out] ULONG
*pulOutputHeight
,
2403 [out] HBITMAP *phOutputBitmap
);
2406 HRESULT OnFileUpdated
(
2407 [in] IStorage
*pStg
);
2411 cpp_quote
("#ifdef USE_COM_CONTEXT_DEF")
2413 typedef DWORD CPFLAGS
;
2415 typedef struct tagContextProperty
2419 [unique] IUnknown
*pUnk
;
2425 uuid(000001c1
-0000-0000-C000
-000000000046)
2427 interface IEnumContextProps
: IUnknown
2429 typedef [unique] IEnumContextProps
*LPENUMCONTEXTPROPS
;
2433 [out, size_is(celt
), length_is(*pceltFetched
)] ContextProperty
*pContextProperties
,
2434 [out] ULONG
*pceltFetched
);
2442 [out] IEnumContextProps
**ppEnumContextProps
);
2445 [out] ULONG
*pcelt
);
2451 uuid(000001c0
-0000-0000-C000
-000000000046)
2453 interface IContext
: IUnknown
2455 HRESULT SetProperty
(
2456 [in] REFGUID policyId
,
2458 [in] IUnknown
*pUnk
);
2460 HRESULT RemoveProperty
(
2461 [in] REFGUID policyId
);
2463 HRESULT GetProperty
(
2465 [out] CPFLAGS
*pFlags
,
2466 [out] IUnknown
**ppUnk
);
2468 HRESULT EnumContextProps
(
2469 [out] IEnumContextProps
**ppEnumContextProps
);
2475 uuid(000001c6
-0000-0000-c000
-000000000046),
2476 pointer_default(unique)
2478 interface IObjContext
: IContext
2489 cpp_quote
("#endif /* defined USE_COM_CONTEXT_DEF */")