2 * Copyright 2002 Ove Kaaven
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 interface IEnumString
;
23 interface IRunningObjectTable
;
25 interface IAdviseSink
;
26 interface IAsyncManager
;
27 interface ISynchronize
;
29 typedef struct _COSERVERINFO
{
32 COAUTHINFO
*pAuthInfo
;
36 /******************** Fundamentals ********************/
41 uuid(00000003-0000-0000-C000
-000000000046)
43 interface IMarshal
: IUnknown
45 typedef [unique] IMarshal
*LPMARSHAL
;
47 HRESULT GetUnmarshalClass
(
49 [in, unique] void *pv
,
50 [in] DWORD dwDestContext
,
51 [in, unique] void *pvDestContext
,
55 HRESULT GetMarshalSizeMax
(
57 [in, unique] void *pv
,
58 [in] DWORD dwDestContext
,
59 [in, unique] void *pvDestContext
,
63 HRESULT MarshalInterface
(
64 [in, unique] IStream
*pStm
,
66 [in, unique] void *pv
,
67 [in] DWORD dwDestContext
,
68 [in, unique] void *pvDestContext
,
69 [in] DWORD mshlflags
);
71 HRESULT UnmarshalInterface
(
72 [in, unique] IStream
*pStm
,
76 HRESULT ReleaseMarshalData
(
77 [in, unique] IStream
*pStm
);
79 HRESULT DisconnectObject
(
80 [in] DWORD dwReserved
);
86 uuid(000001cf
-0000-0000-C000
-000000000046)
88 interface IMarshal2
: IMarshal
90 typedef [unique] IMarshal2
*LPMARSHAL2
;
96 uuid(00000018-0000-0000-C000
-000000000046)
98 interface IStdMarshalInfo
: IUnknown
100 typedef [unique] IStdMarshalInfo
*LPSTDMARSHALINFO
;
102 HRESULT GetClassForHandler
(
103 [in] DWORD dwDestContext
,
104 [in, unique] void *pvDestContext
,
105 [out] CLSID
*pClsid
);
111 uuid(00000019-0000-0000-C000
-000000000046)
113 interface IExternalConnection
: IUnknown
115 typedef [unique] IExternalConnection
*LPEXTERNALCONNECTION
;
117 typedef enum tagEXTCONN
{
118 EXTCONN_STRONG
= 0x0001,
119 EXTCONN_WEAK
= 0x0002,
120 EXTCONN_CALLABLE
= 0x0004
125 [in] DWORD reserved
);
127 DWORD ReleaseConnection
(
130 [in] BOOL fLastReleaseCloses
);
136 uuid(00000020-0000-0000-C000
-000000000046)
138 interface IMultiQI
: IUnknown
140 typedef [unique] IMultiQI
*LPMULTIQI
;
142 typedef struct tagMULTI_QI
{
148 HRESULT QueryMultipleInterfaces
(
150 [in, out] MULTI_QI
*pMQIs
);
156 uuid(00000002-0000-0000-C000
-000000000046)
158 interface IMalloc
: IUnknown
160 typedef [unique] IMalloc
*LPMALLOC
;
175 int DidAlloc
(LPVOID pv
);
183 uuid(0000001d
-0000-0000-C000
-000000000046)
185 interface IMallocSpy
: IUnknown
187 typedef [unique] IMallocSpy
*LPMALLOCSPY
;
190 [in] ULONG cbRequest
);
193 [in] LPVOID pActual
);
196 [in] LPVOID pRequest
,
203 [in] LPVOID pRequest
,
204 [in] ULONG cbRequest
,
205 [out] LPVOID
*ppNewRequest
,
213 [in] LPVOID pRequest
,
221 [in] LPVOID pRequest
,
225 [in] LPVOID pRequest
,
229 void PreHeapMinimize
();
231 void PostHeapMinimize
();
237 uuid(00000021-0000-0000-C000
-000000000046)
239 interface IInternalUnknown
: IUnknown
241 HRESULT QueryInternalInterface
(
248 uuid(00000100-0000-0000-C000
-000000000046),
249 pointer_default(unique)
251 interface IEnumUnknown
: IUnknown
253 typedef [unique] IEnumUnknown
*LPENUMUNKNOWN
;
258 [out] IUnknown
**rgelt
,
259 [out] ULONG
*pceltFetched
);
264 [out, size_is(celt
), length_is(*pceltFetched
)]
266 [out] ULONG
*pceltFetched
);
274 [out] IEnumUnknown
**ppenum
);
279 uuid(00000022-0000-0000-C000
-000000000046),
281 pointer_default(unique)
283 interface ISurrogate
: IUnknown
285 typedef [unique] ISurrogate
*LPSURROGATE
;
287 HRESULT LoadDllServer
(
288 [in] REFCLSID Clsid
);
289 HRESULT FreeSurrogate
();
295 uuid(00000146-0000-0000-C000
-000000000046)
297 interface IGlobalInterfaceTable
: IUnknown
299 typedef [unique] IGlobalInterfaceTable
*LPGLOBALINTERFACETABLE
;
301 HRESULT RegisterInterfaceInGlobal
(
304 [out] DWORD
*pdwCookie
);
306 HRESULT RevokeInterfaceFromGlobal
(
307 [in] DWORD dwCookie
);
309 HRESULT GetInterfaceFromGlobal
(
312 [out, iid_is(riid
)] void **ppv
);
315 /******************** Monikers ********************/
319 uuid(0000000e-0000-0000-C000
-000000000046),
320 pointer_default(unique)
322 interface IBindCtx
: IUnknown
324 typedef [unique] IBindCtx
*LPBINDCTX
;
325 typedef [unique] IBindCtx
*LPBC
;
327 typedef struct tagBIND_OPTS
{
331 DWORD dwTickCountDeadline
;
332 } BIND_OPTS
, *LPBIND_OPTS
;
334 /* FIXME: C++ crap */
335 typedef struct tagBIND_OPTS2
{
339 DWORD dwTickCountDeadline
;
341 DWORD dwClassContext
;
343 COSERVERINFO
*pServerInfo
;
344 } BIND_OPTS2
, *LPBIND_OPTS2
;
346 typedef enum tagBIND_FLAGS
{
347 BIND_MAYBOTHERUSER
= 1,
348 BIND_JUSTTESTEXISTENCE
= 2
351 HRESULT RegisterObjectBound
(
352 [in, unique] IUnknown
*punk
);
354 HRESULT RevokeObjectBound
(
355 [in, unique] IUnknown
*punk
);
357 HRESULT ReleaseBoundObjects
();
360 HRESULT SetBindOptions
(
361 [in] BIND_OPTS
*pbindopts
);
363 [call_as
(SetBindOptions
)]
364 HRESULT RemoteSetBindOptions
(
365 [in] BIND_OPTS2
*pbindopts
);
368 HRESULT GetBindOptions
(
369 [in, out] BIND_OPTS
*pbindopts
);
371 [call_as
(GetBindOptions
)]
372 HRESULT RemoteGetBindOptions
(
373 [in, out] BIND_OPTS2
*pbindopts
);
375 HRESULT GetRunningObjectTable
(
376 [out] IRunningObjectTable
**pprot
);
378 HRESULT RegisterObjectParam
(
379 [in] LPOLESTR pszKey
,
380 [in, unique] IUnknown
*punk
);
382 HRESULT GetObjectParam
(
383 [in] LPOLESTR pszKey
,
384 [out] IUnknown
**ppunk
);
386 HRESULT EnumObjectParam
(
387 [out] IEnumString
**ppenum
);
389 HRESULT RevokeObjectParam
(
390 [in] LPOLESTR pszKey
);
395 uuid(00000102-0000-0000-C000
-000000000046),
396 pointer_default(unique)
398 interface IEnumMoniker
: IUnknown
400 typedef [unique] IEnumMoniker
*LPENUMMONIKER
;
405 [out, size_is(celt
), length_is(*pceltFetched
)]
407 [out] ULONG
*pceltFetched
);
412 [out, size_is(celt
), length_is(*pceltFetched
)]
414 [out] ULONG
*pceltFetched
);
422 [out] IEnumMoniker
**ppenum
);
427 uuid(00000126-0000-0000-C000
-000000000046)
429 interface IRunnableObject
: IUnknown
431 typedef [unique] IRunnableObject
*LPRUNNABLEOBJECT
;
433 HRESULT GetRunningClass
(
434 [out] LPCLSID lpClsid
);
443 HRESULT RemoteIsRunning
();
447 [in] BOOL fLastUnlockCloses
);
449 HRESULT SetContainedObject
(
450 [in] BOOL fContained
);
453 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
454 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
455 * but GetObject is used as a valid method name below, so we have
456 * to undefine it in that case */
457 cpp_quote
("#ifdef WINE_NO_UNICODE_MACROS")
458 cpp_quote
("#undef GetObject")
463 uuid(00000010-0000-0000-C000
-000000000046)
465 interface IRunningObjectTable
: IUnknown
467 typedef [unique] IRunningObjectTable
*LPRUNNINGOBJECTTABLE
;
471 [in, unique] IUnknown
*punkObject
,
472 [in, unique] IMoniker
*pmkObjectName
,
473 [out] DWORD
*pdwRegister
);
476 [in] DWORD dwRegister
);
479 [in, unique] IMoniker
*pmkObjectName
);
482 [in, unique] IMoniker
*pmkObjectName
,
483 [out] IUnknown
**ppunkObject
);
485 HRESULT NoteChangeTime
(
486 [in] DWORD dwRegister
,
487 [in] FILETIME
*pfiletime
);
489 HRESULT GetTimeOfLastChange
(
490 [in, unique] IMoniker
*pmkObjectName
,
491 [out] FILETIME
*pfiletime
);
494 [out] IEnumMoniker
**ppenumMoniker
);
499 uuid(0000010c
-0000-0000-C000
-000000000046)
501 interface IPersist
: IUnknown
503 typedef [unique] IPersist
*LPPERSIST
;
506 [out] CLSID
*pClassID
);
511 uuid(00000109-0000-0000-C000
-000000000046),
512 pointer_default(unique)
514 interface IPersistStream
: IPersist
516 typedef [unique] IPersistStream
*LPPERSISTSTREAM
;
521 [in, unique] IStream
*pStm
);
524 [in, unique] IStream
*pStm
,
525 [in] BOOL fClearDirty
);
528 [out] ULARGE_INTEGER
*pcbSize
);
533 uuid(0000000f
-0000-0000-C000
-000000000046),
534 pointer_default(unique)
536 interface IMoniker
: IPersistStream
538 typedef [unique] IMoniker
*LPMONIKER
;
540 typedef enum tagMKSYS
{
542 MKSYS_GENERICCOMPOSITE
= 1,
543 MKSYS_FILEMONIKER
= 2,
544 MKSYS_ANTIMONIKER
= 3,
545 MKSYS_ITEMMONIKER
= 4,
546 MKSYS_POINTERMONIKER
= 5,
547 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */
548 MKSYS_CLASSMONIKER
= 7
551 typedef [v1_enum] enum tagMKREDUCE
{
552 MKRREDUCE_ONE
= 3 << 16,
553 MKRREDUCE_TOUSER
= 2 << 16,
554 MKRREDUCE_THROUGHUSER
= 1 << 16,
559 HRESULT BindToObject
(
560 [in, unique] IBindCtx
*pbc
,
561 [in, unique] IMoniker
*pmkToLeft
,
562 [in] REFIID riidResult
,
563 [out, iid_is(riidResult
)] void **ppvResult
);
565 [call_as
(BindToObject
)]
566 HRESULT RemoteBindToObject
(
567 [in, unique] IBindCtx
*pbc
,
568 [in, unique] IMoniker
*pmkToLeft
,
569 [in] REFIID riidResult
,
570 [out, iid_is(riidResult
)] IUnknown
**ppvResult
);
573 HRESULT BindToStorage
(
574 [in, unique] IBindCtx
*pbc
,
575 [in, unique] IMoniker
*pmkToLeft
,
577 [out, iid_is(riid
)] void **ppvObj
);
579 [call_as
(BindToStorage
)]
580 HRESULT RemoteBindToStorage
(
581 [in, unique] IBindCtx
*pbc
,
582 [in, unique] IMoniker
*pmkToLeft
,
584 [out, iid_is(riid
)] IUnknown
**ppvObj
);
587 [in, unique] IBindCtx
*pbc
,
588 [in] DWORD dwReduceHowFar
,
589 [in, out, unique] IMoniker
**ppmkToLeft
,
590 [out] IMoniker
**ppmkReduced
);
593 [in, unique] IMoniker
*pmkRight
,
594 [in] BOOL fOnlyIfNotGeneric
,
595 [out] IMoniker
**ppmkComposite
);
599 [out] IEnumMoniker
**ppenumMoniker
);
602 [in, unique] IMoniker
*pmkOtherMoniker
);
605 [out] DWORD
*pdwHash
);
608 [in, unique] IBindCtx
*pbc
,
609 [in, unique] IMoniker
*pmkToLeft
,
610 [in, unique] IMoniker
*pmkNewlyRunning
);
612 HRESULT GetTimeOfLastChange
(
613 [in, unique] IBindCtx
*pbc
,
614 [in, unique] IMoniker
*pmkToLeft
,
615 [out] FILETIME
*pFileTime
);
618 [out] IMoniker
**ppmk
);
620 HRESULT CommonPrefixWith
(
621 [in, unique] IMoniker
*pmkOther
,
622 [out] IMoniker
**ppmkPrefix
);
624 HRESULT RelativePathTo
(
625 [in, unique] IMoniker
*pmkOther
,
626 [out] IMoniker
**ppmkRelPath
);
628 HRESULT GetDisplayName
(
629 [in, unique] IBindCtx
*pbc
,
630 [in, unique] IMoniker
*pmkToLeft
,
631 [out] LPOLESTR
*ppszDisplayName
);
633 HRESULT ParseDisplayName
(
634 [in, unique] IBindCtx
*pbc
,
635 [in, unique] IMoniker
*pmkToLeft
,
636 [in] LPOLESTR pszDisplayName
,
637 [out] ULONG
*pchEaten
,
638 [out] IMoniker
**ppmkOut
);
640 HRESULT IsSystemMoniker
(
641 [out] DWORD
*pdwMksys
);
646 uuid(f29f6bc0
-5021-11ce
-aa15
-00006901293f
),
647 pointer_default(unique)
649 interface IROTData
: IUnknown
651 HRESULT GetComparisonData
(
652 [out, size_is(cbMax
)] byte *pbData
,
654 [out] ULONG
*pcbData
);
659 uuid(00000101-0000-0000-C000
-000000000046),
660 pointer_default(unique)
662 interface IEnumString
: IUnknown
664 typedef [unique] IEnumString
*LPENUMSTRING
;
669 [out, size_is(celt
), length_is(*pceltFetched
)]
671 [out] ULONG
*pceltFetched
);
676 [out, size_is(celt
), length_is(*pceltFetched
)]
678 [out] ULONG
*pceltFetched
);
686 [out] IEnumString
**ppenum
);
691 uuid(00000140-0000-0000-C000
-000000000046)
693 interface IClassActivator
: IUnknown
695 HRESULT GetClassObject
(
696 [in] REFCLSID rclsid
,
697 [in] DWORD dwClassContext
,
700 [out, iid_is(riid
)] void **ppv
);
703 /******************** Storage ********************/
707 uuid(0c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
708 pointer_default(unique)
710 interface ISequentialStream
: IUnknown
714 [out, size_is(cb
), length_is(*pcbRead
)]
717 [out] ULONG
*pcbRead
);
721 [out, size_is(cb
), length_is(*pcbRead
)]
724 [out] ULONG
*pcbRead
);
728 [in, size_is(cb
)] const void *pv
,
730 [out] ULONG
*pcbWritten
);
734 [in, size_is(cb
)] const byte *pv
,
736 [out] ULONG
*pcbWritten
);
741 uuid(0000000c
-0000-0000-C000
-000000000046),
742 pointer_default(unique)
744 interface IStream
: ISequentialStream
746 typedef [unique] IStream
*LPSTREAM
;
748 typedef struct tagSTATSTG
{
751 ULARGE_INTEGER cbSize
;
756 DWORD grfLocksSupported
;
762 typedef enum tagSTGTY
{
769 typedef enum tagSTREAM_SEEK
{
775 /* these are defined in Linux's fcntl.h,
776 * undefine them to avoid conflicts */
777 cpp_quote
("#undef LOCK_MAND")
778 cpp_quote
("#undef LOCK_READ")
779 cpp_quote
("#undef LOCK_WRITE")
780 cpp_quote
("#undef LOCK_RW")
782 typedef enum tagLOCKTYPE
{
790 [in] LARGE_INTEGER dlibMove
,
792 [out] ULARGE_INTEGER
*plibNewPosition
);
796 [in] LARGE_INTEGER dlibMove
,
798 [out] ULARGE_INTEGER
*plibNewPosition
);
801 [in] ULARGE_INTEGER libNewSize
);
805 [in, unique] IStream
*pstm
,
806 [in] ULARGE_INTEGER cb
,
807 [out] ULARGE_INTEGER
*pcbRead
,
808 [out] ULARGE_INTEGER
*pcbWritten
);
811 HRESULT RemoteCopyTo
(
812 [in, unique] IStream
*pstm
,
813 [in] ULARGE_INTEGER cb
,
814 [out] ULARGE_INTEGER
*pcbRead
,
815 [out] ULARGE_INTEGER
*pcbWritten
);
818 [in] DWORD grfCommitFlags
);
823 [in] ULARGE_INTEGER libOffset
,
824 [in] ULARGE_INTEGER cb
,
825 [in] DWORD dwLockType
);
827 HRESULT UnlockRegion
(
828 [in] ULARGE_INTEGER libOffset
,
829 [in] ULARGE_INTEGER cb
,
830 [in] DWORD dwLockType
);
833 [out] STATSTG
*pstatstg
,
834 [in] DWORD grfStatFlag
);
837 [out] IStream
**ppstm
);
842 uuid(0000000d
-0000-0000-C000
-000000000046),
843 pointer_default(unique)
845 interface IEnumSTATSTG
: IUnknown
847 typedef [unique] IEnumSTATSTG
*LPENUMSTATSTG
;
852 [out, size_is(celt
), length_is(*pceltFetched
)]
854 [out] ULONG
*pceltFetched
);
859 [out, size_is(celt
), length_is(*pceltFetched
)]
861 [out] ULONG
*pceltFetched
);
869 [out] IEnumSTATSTG
**ppenum
);
874 uuid(0000000b
-0000-0000-C000
-000000000046),
875 pointer_default(unique)
877 interface IStorage
: IUnknown
879 typedef [unique] IStorage
*LPSTORAGE
;
881 typedef struct tagRemSNB
{
882 unsigned long ulCntStr
;
883 unsigned long ulCntChar
;
884 [size_is(ulCntChar
)] OLECHAR rgString
[];
887 typedef [unique] RemSNB
*wireSNB
;
888 typedef [wire_marshal(wireSNB
)] OLECHAR
**SNB
;
890 HRESULT CreateStream
(
891 [in] LPCOLESTR pwcsName
,
893 [in] DWORD reserved1
,
894 [in] DWORD reserved2
,
895 [out] IStream
**ppstm
);
899 [in] LPCOLESTR pwcsName
,
900 [in, unique] void *reserved1
,
902 [in] DWORD reserved2
,
903 [out] IStream
**ppstm
);
905 [call_as
(OpenStream
)]
906 HRESULT RemoteOpenStream
(
907 [in] LPCOLESTR pwcsName
,
908 [in] unsigned long cbReserved1
,
909 [in, unique, size_is(cbReserved1
)] byte *reserved1
,
911 [in] DWORD reserved2
,
912 [out] IStream
**ppstm
);
914 HRESULT CreateStorage
(
915 [in] LPCOLESTR pwcsName
,
918 [in] DWORD reserved2
,
919 [out] IStorage
**ppstg
);
922 [in, unique] LPCOLESTR pwcsName
,
923 [in, unique] IStorage
*pstgPriority
,
925 [in, unique] SNB snbExclude
,
927 [out] IStorage
**ppstg
);
930 [in] DWORD ciidExclude
,
931 [in, unique, size_is(ciidExclude
)] const IID
*rgiidExclude
,
932 [in, unique] SNB snbExclude
,
933 [in, unique] IStorage
*pstgDest
);
935 HRESULT MoveElementTo
(
936 [in] LPCOLESTR pwcsName
,
937 [in, unique] IStorage
*pstgDest
,
938 [in] LPCOLESTR pwcsNewName
,
939 [in] DWORD grfFlags
);
942 [in] DWORD grfCommitFlags
);
947 HRESULT EnumElements
(
948 [in] DWORD reserved1
,
949 [in, unique, size_is(1)] void *reserved2
,
950 [in] DWORD reserved3
,
951 [out] IEnumSTATSTG
**ppenum
);
953 [call_as
(EnumElements
)]
954 HRESULT RemoteEnumElements
(
955 [in] DWORD reserved1
,
956 [in] unsigned long cbReserved2
,
957 [in, unique, size_is(cbReserved2
)] byte *reserved2
,
958 [in] DWORD reserved3
,
959 [out] IEnumSTATSTG
**ppenum
);
961 HRESULT DestroyElement
(
962 [in] LPCOLESTR pwcsName
);
964 HRESULT RenameElement
(
965 [in] LPCOLESTR pwcsOldName
,
966 [in] LPCOLESTR pwcsNewName
);
968 HRESULT SetElementTimes
(
969 [in, unique] LPCOLESTR pwcsName
,
970 [in, unique] const FILETIME
*pctime
,
971 [in, unique] const FILETIME
*patime
,
972 [in, unique] const FILETIME
*pmtime
);
975 [in] REFCLSID clsid
);
977 HRESULT SetStateBits
(
978 [in] DWORD grfStateBits
,
982 [out] STATSTG
*pstatstg
,
983 [in] DWORD grfStatFlag
);
988 uuid(0000010b
-0000-0000-C000
-000000000046),
989 pointer_default(unique)
991 interface IPersistFile
: IPersist
993 typedef [unique] IPersistFile
*LPPERSISTFILE
;
998 [in] LPCOLESTR pszFileName
,
1002 [in, unique] LPCOLESTR pszFileName
,
1003 [in] BOOL fRemember
);
1005 HRESULT SaveCompleted
(
1006 [in, unique] LPCOLESTR pszFileName
);
1009 [out] LPOLESTR
*ppszFileName
);
1014 uuid(0000010a
-0000-0000-C000
-000000000046),
1015 pointer_default(unique)
1017 interface IPersistStorage
: IPersist
1019 typedef [unique] IPersistStorage
*LPPERSISTSTORAGE
;
1024 [in, unique] IStorage
*pStg
);
1027 [in, unique] IStorage
*pStg
);
1030 [in, unique] IStorage
*pStgSave
,
1031 [in] BOOL fSameAsLoad
);
1033 HRESULT SaveCompleted
(
1034 [in, unique] IStorage
*pStgNew
);
1036 HRESULT HandsOffStorage
();
1041 uuid(00000012-0000-0000-C000
-000000000046),
1042 pointer_default(unique)
1044 interface IRootStorage
: IUnknown
1046 typedef [unique] IRootStorage
*LPROOTSTORAGE
;
1048 HRESULT SwitchToFile
(
1049 [in] LPOLESTR pszFile
);
1054 uuid(0000000a
-0000-0000-C000
-000000000046),
1055 pointer_default(unique)
1057 interface ILockBytes
: IUnknown
1059 typedef [unique] ILockBytes
*LPLOCKBYTES
;
1063 [in] ULARGE_INTEGER ulOffset
,
1064 [out, size_is(cb
), length_is(*pcbRead
)]
1067 [out] ULONG
*pcbRead
);
1070 HRESULT RemoteReadAt
(
1071 [in] ULARGE_INTEGER ulOffset
,
1072 [out, size_is(cb
), length_is(*pcbRead
)]
1075 [out] ULONG
*pcbRead
);
1079 [in] ULARGE_INTEGER ulOffset
,
1080 [in, size_is(cb
)] const void *pv
,
1082 [out] ULONG
*pcbWritten
);
1085 HRESULT RemoteWriteAt
(
1086 [in] ULARGE_INTEGER ulOffset
,
1087 [in, size_is(cb
)] const byte *pv
,
1089 [out] ULONG
*pcbWritten
);
1094 [in] ULARGE_INTEGER cb
);
1097 [in] ULARGE_INTEGER libOffset
,
1098 [in] ULARGE_INTEGER cb
,
1099 [in] DWORD dwLockType
);
1101 HRESULT UnlockRegion
(
1102 [in] ULARGE_INTEGER libOffset
,
1103 [in] ULARGE_INTEGER cb
,
1104 [in] DWORD dwLockType
);
1107 [out] STATSTG
*pstatstg
,
1108 [in] DWORD grfStatFlag
);
1113 uuid(99caf010
-415e-11cf
-8814-00aa00b569f5
),
1114 pointer_default(unique)
1116 interface IFillLockBytes
: IUnknown
1120 [in, size_is(cb
)] const void *pv
,
1122 [out] ULONG
*pcbWritten
);
1124 [call_as
(FillAppend
)]
1125 HRESULT RemoteFillAppend
(
1126 [in, size_is(cb
)] const byte *pv
,
1128 [out] ULONG
*pcbWritten
);
1132 [in] ULARGE_INTEGER ulOffset
,
1133 [in, size_is(cb
)] const void *pv
,
1135 [out] ULONG
*pcbWritten
);
1138 HRESULT RemoteFillAt
(
1139 [in] ULARGE_INTEGER ulOffset
,
1140 [in, size_is(cb
)] const byte *pv
,
1142 [out] ULONG
*pcbWritten
);
1144 HRESULT SetFillSize
(
1145 [in] ULARGE_INTEGER ulSize
);
1148 [in] BOOL bCanceled
);
1153 uuid(a9d758a0
-4617-11cf
-95fc
-00aa00680db4
),
1154 pointer_default(unique)
1156 interface IProgressNotify
: IUnknown
1159 [in] DWORD dwProgressCurrent
,
1160 [in] DWORD dwProgressMaximum
,
1161 [in] BOOL fAccurate
,
1168 uuid(0e6d4d90
-6738-11cf
-9608-00aa00680db4
),
1169 pointer_default(unique)
1171 interface ILayoutStorage
: IUnknown
1173 typedef struct tagStorageLayout
{
1175 OLECHAR
*pwcsElementName
;
1176 LARGE_INTEGER cOffset
;
1177 LARGE_INTEGER cBytes
;
1180 HRESULT LayoutScript
(
1181 [in] StorageLayout
*pStorageLayout
,
1182 [in] DWORD nEntries
,
1183 [in] DWORD glfInterleavedFlag
);
1185 HRESULT BeginMonitor
();
1187 HRESULT EndMonitor
();
1189 HRESULT ReLayoutDocfile
(
1190 [in] OLECHAR
*pwcsNewDfName
);
1192 HRESULT ReLayoutDocfileOnILockBytes
(
1193 [in] ILockBytes
*pILockBytes
);
1198 uuid(30f3d47a
-6447-11d1
-8e3c
-00c04fb9386d
)
1200 interface IBlockingLock
: IUnknown
1203 [in] DWORD dwTimeout
);
1211 uuid(bc0bf6ae
-8878-11d1
-83e9
-00c04fc2c6d4
)
1213 interface ITimeAndNoticeControl
: IUnknown
1215 HRESULT SuppressChanges
(
1225 uuid(8d19c834
-8879-11d1
-83e9
-00c04fc2c6d4
)
1227 interface IOplockStorage
: IUnknown
1229 HRESULT CreateStorageEx
(
1230 [in] LPCWSTR pwcsName
,
1233 [in] DWORD grfAttrs
,
1235 [out, iid_is(riid
)] void **ppstgOpen
);
1237 HRESULT OpenStorageEx
(
1238 [in] LPCWSTR pwcsName
,
1241 [in] DWORD grfAttrs
,
1243 [out, iid_is(riid
)] void **ppstgOpen
);
1246 /******************** Data Object ********************/
1250 uuid(00000103-0000-0000-C000
-000000000046),
1251 pointer_default(unique)
1253 interface IEnumFORMATETC
: IUnknown
1255 typedef [unique] IEnumFORMATETC
*LPENUMFORMATETC
;
1257 typedef struct tagDVTARGETDEVICE
{
1259 WORD tdDriverNameOffset
;
1260 WORD tdDeviceNameOffset
;
1261 WORD tdPortNameOffset
;
1262 WORD tdExtDevmodeOffset
;
1263 [size_is(tdSize
- sizeof
(DWORD
) - 4*sizeof
(WORD
))]
1267 typedef CLIPFORMAT
*LPCLIPFORMAT
;
1269 typedef struct tagFORMATETC
{
1270 CLIPFORMAT cfFormat
;
1271 [unique] DVTARGETDEVICE
*ptd
;
1275 } FORMATETC
, *LPFORMATETC
;
1280 [out, size_is(celt
), length_is(*pceltFetched
)]
1282 [out] ULONG
*pceltFetched
);
1287 [out, size_is(celt
), length_is(*pceltFetched
)]
1289 [out] ULONG
*pceltFetched
);
1297 [out] IEnumFORMATETC
**ppenum
);
1302 uuid(00000105-0000-0000-C000
-000000000046),
1303 pointer_default(unique)
1305 interface IEnumSTATDATA
: IUnknown
1307 typedef [unique] IEnumSTATDATA
*LPENUMSTATDATA
;
1309 typedef enum tagADVF
{
1311 ADVF_PRIMEFIRST
= 2,
1313 ADVF_DATAONSTOP
= 64,
1314 ADVFCACHE_NOHANDLER
= 8,
1315 ADVFCACHE_FORCEBUILTIN
= 16,
1316 ADVFCACHE_ONSAVE
= 32
1319 typedef struct tagSTATDATA
1321 FORMATETC formatetc
;
1323 [unique] IAdviseSink
*pAdvSink
;
1325 } STATDATA
, *LPSTATDATA
;
1330 [out, size_is(celt
), length_is(*pceltFetched
)]
1332 [out] ULONG
*pceltFetched
);
1337 [out, size_is(celt
), length_is(*pceltFetched
)]
1339 [out] ULONG
*pceltFetched
);
1347 [out] IEnumSTATDATA
**ppenum
);
1352 uuid(0000010f
-0000-0000-C000
-000000000046),
1353 pointer_default(unique)
1355 interface IAdviseSink
: IUnknown
1357 typedef IAdviseSink
*LPADVISESINK
;
1359 typedef [v1_enum] enum tagTYMED
{
1370 typedef struct tagRemSTGMEDIUM
{
1373 unsigned long pData
;
1374 unsigned long pUnkForRelease
;
1375 unsigned long cbData
;
1376 [size_is(cbData
)] byte data
[];
1379 /* FIXME: C/C++ nameless union version */
1380 typedef struct tagSTGMEDIUM
{
1382 [switch_is(tymed
)] union {
1383 [case(TYMED_GDI
)] HBITMAP hBitmap;
1384 [case(TYMED_MFPICT
)] HMETAFILEPICT hMetaFilePict
;
1385 [case(TYMED_ENHMF
)] HENHMETAFILE hEnhMetaFile;
1386 [case(TYMED_HGLOBAL
)] HGLOBAL hGlobal;
1387 [case(TYMED_FILE
)] LPOLESTR lpszFileName
;
1388 [case(TYMED_ISTREAM
)] IStream
*pstm
;
1389 [case(TYMED_ISTORAGE
)] IStorage
*pstg
;
1392 [unique] IUnknown
*pUnkForRelease
;
1395 /* copied from wingdi.h */
1399 #define OBJ_METADC
4
1402 #define OBJ_BITMAP
7
1403 #define OBJ_REGION
8
1404 #define OBJ_METAFILE
9
1405 #define OBJ_MEMDC
10
1406 #define OBJ_EXTPEN
11
1407 #define OBJ_ENHMETADC
12
1408 #define OBJ_ENHMETAFILE
13
1410 typedef union _GDI_OBJECT
switch(DWORD ObjectType
) u
{
1411 case OBJ_BITMAP
: wireHBITMAP
hBitmap;
1412 case OBJ_PAL
: wireHPALETTE
hPalette;
1413 default: wireHGLOBAL hGeneric
;
1416 typedef struct _userSTGMEDIUM
{
1417 union switch(DWORD tymed
) u
{
1419 case TYMED_MFPICT
: wireHMETAFILEPICT hMetaFilePict
;
1420 case TYMED_ENHMF
: wireHENHMETAFILE hHEnhMetaFile
;
1421 case TYMED_GDI
: GDI_OBJECT
*hGdiHandle
;
1422 case TYMED_HGLOBAL
: wireHGLOBAL
hGlobal;
1423 case TYMED_FILE
: LPOLESTR lpszFileName
;
1424 case TYMED_ISTREAM
: BYTE_BLOB
*pstm
;
1425 case TYMED_ISTORAGE
: BYTE_BLOB
*pstg
;
1427 IUnknown
*pUnkForRelease
;
1430 typedef [unique] userSTGMEDIUM
*wireSTGMEDIUM
;
1431 typedef [wire_marshal(wireSTGMEDIUM
)] uSTGMEDIUM STGMEDIUM
;
1433 typedef [unique] userSTGMEDIUM
*wireASYNC_STGMEDIUM
;
1434 typedef [wire_marshal(wireASYNC_STGMEDIUM
)] STGMEDIUM ASYNC_STGMEDIUM
;
1436 typedef STGMEDIUM
*LPSTGMEDIUM
;
1438 typedef struct _userFLAG_STGMEDIUM
{
1440 long fPassOwnership
;
1441 userSTGMEDIUM Stgmed
;
1442 } userFLAG_STGMEDIUM
;
1444 typedef [unique] userFLAG_STGMEDIUM
*wireFLAG_STGMEDIUM
;
1446 typedef [wire_marshal(wireFLAG_STGMEDIUM
)] struct _FLAG_STGMEDIUM
{
1448 long fPassOwnership
;
1454 [in, unique] FORMATETC
*pFormatetc
,
1455 [in, unique] STGMEDIUM
*pStgmed
);
1457 [call_as
(OnDataChange
)]
1458 HRESULT RemoteOnDataChange
(
1459 [in, unique] FORMATETC
*pFormatetc
,
1460 [in, unique] ASYNC_STGMEDIUM
*pStgmed
);
1464 [in] DWORD dwAspect
,
1467 [call_as
(OnViewChange
)]
1468 HRESULT RemoteOnViewChange
(
1469 [in] DWORD dwAspect
,
1474 [in] IMoniker
*pmk
);
1477 HRESULT RemoteOnRename
(
1478 [in] IMoniker
*pmk
);
1484 HRESULT RemoteOnSave
();
1490 HRESULT RemoteOnClose
();
1495 uuid(00000125-0000-0000-C000
-000000000046),
1496 pointer_default(unique)
1498 interface IAdviseSink2
: IAdviseSink
1500 typedef [unique] IAdviseSink2
*LPADVISESINK2
;
1503 void OnLinkSrcChange
(
1504 [in, unique] IMoniker
*pmk
);
1506 [call_as
(OnLinkSrcChange
)]
1507 HRESULT RemoteOnLinkSrcChange
(
1508 [in, unique] IMoniker
*pmk
);
1513 uuid(0000010e-0000-0000-C000
-000000000046),
1514 pointer_default(unique)
1516 interface IDataObject
: IUnknown
1518 typedef [unique] IDataObject
*LPDATAOBJECT
;
1520 typedef enum tagDATADIR
{
1527 [in, unique] FORMATETC
*pformatetcIn
,
1528 [out] STGMEDIUM
*pmedium
);
1531 HRESULT RemoteGetData
(
1532 [in, unique] FORMATETC
*pformatetcIn
,
1533 [out] STGMEDIUM
*pRemoteMedium
);
1536 HRESULT GetDataHere
(
1537 [in, unique] FORMATETC
*pformatetc
,
1538 [in, out] STGMEDIUM
*pmedium
);
1540 [call_as
(GetDataHere
)]
1541 HRESULT RemoteGetDataHere
(
1542 [in, unique] FORMATETC
*pformatetc
,
1543 [in, out] STGMEDIUM
*pRemoteMedium
);
1545 HRESULT QueryGetData
(
1546 [in, unique] FORMATETC
*pformatetc
);
1548 HRESULT GetCanonicalFormatEtc
(
1549 [in, unique] FORMATETC
*pformatectIn
,
1550 [out] FORMATETC
*pformatetcOut
);
1554 [in, unique] FORMATETC
*pformatetc
,
1555 [in, unique] STGMEDIUM
*pmedium
,
1556 [in] BOOL fRelease
);
1559 HRESULT RemoteSetData
(
1560 [in, unique] FORMATETC
*pformatetc
,
1561 [in, unique] FLAG_STGMEDIUM
*pmedium
,
1562 [in] BOOL fRelease
);
1564 HRESULT EnumFormatEtc
(
1565 [in] DWORD dwDirection
,
1566 [out] IEnumFORMATETC
**ppenumFormatEtc
);
1569 [in] FORMATETC
*pformatetc
,
1571 [in, unique] IAdviseSink
*pAdvSink
,
1572 [out] DWORD
*pdwConnection
);
1575 [in] DWORD dwConnection
);
1577 HRESULT EnumDAdvise
(
1578 [out] IEnumSTATDATA
**ppenumAdvise
);
1584 uuid(00000110-0000-0000-C000
-000000000046)
1586 interface IDataAdviseHolder
: IUnknown
1588 typedef [unique] IDataAdviseHolder
*LPDATAADVISEHOLDER
;
1591 [in, unique] IDataObject
*pDataObject
,
1592 [in, unique] FORMATETC
*pFetc
,
1594 [in, unique] IAdviseSink
*pAdvise
,
1595 [out] DWORD
*pdwConnection
);
1598 [in] DWORD dwConnection
);
1601 [out] IEnumSTATDATA
**ppenumAdvise
);
1603 HRESULT SendOnDataChange
(
1604 [in, unique] IDataObject
*pDataObject
,
1605 [in] DWORD dwReserved
,
1609 /******************** Remoting ********************/
1614 uuid(00000016-0000-0000-C000
-000000000046)
1616 interface IMessageFilter
: IUnknown
1618 typedef [unique] IMessageFilter
*LPMESSAGEFILTER
;
1620 typedef enum tagCALLTYPE
{
1621 CALLTYPE_TOPLEVEL
= 1,
1622 CALLTYPE_NESTED
= 2,
1624 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
1625 CALLTYPE_ASYNC_CALLPENDING
= 5
1628 typedef enum tagSERVERCALL
{
1629 SERVERCALL_ISHANDLED
= 0,
1630 SERVERCALL_REJECTED
= 1,
1631 SERVERCALL_RETRYLATER
= 2
1634 typedef enum tagPENDINGTYPE
{
1635 PENDINGTYPE_TOPLEVEL
= 1,
1636 PENDINGTYPE_NESTED
= 2
1639 typedef enum tagPENDINGMSG
{
1640 PENDINGMSG_CANCELCALL
= 0,
1641 PENDINGMSG_WAITNOPROCESS
= 1,
1642 PENDINGMSG_WAITDEFPROCESS
= 2
1645 typedef struct tagINTERFACEINFO
{
1649 } INTERFACEINFO
, *LPINTERFACEINFO
;
1651 DWORD HandleInComingCall
(
1652 [in] DWORD dwCallType
,
1653 [in] HTASK htaskCaller
,
1654 [in] DWORD dwTickCount
,
1655 [in] LPINTERFACEINFO lpInterfaceInfo
);
1657 DWORD RetryRejectedCall
(
1658 [in] HTASK htaskCallee
,
1659 [in] DWORD dwTickCount
,
1660 [in] DWORD dwRejectType
);
1662 DWORD MessagePending
(
1663 [in] HTASK htaskCallee
,
1664 [in] DWORD dwTickCount
,
1665 [in] DWORD dwPendingType
);
1671 uuid(D5F56B60
-593B
-101A
-B569
-08002B2DBF7A
)
1673 interface IRpcChannelBuffer
: IUnknown
1675 typedef [unique] IRpcChannelBuffer
*LPRPCCHANNELBUFFER
;
1677 typedef unsigned long RPCOLEDATAREP
;
1679 typedef struct tagRPCOLEMESSAGE
{
1681 RPCOLEDATAREP dataRepresentation
;
1689 typedef RPCOLEMESSAGE
*PRPCOLEMESSAGE
;
1692 [in] RPCOLEMESSAGE
*pMessage
,
1695 HRESULT SendReceive
(
1696 [in,out] RPCOLEMESSAGE
*pMessage
,
1697 [out] ULONG
*pStatus
);
1700 [in] RPCOLEMESSAGE
*pMessage
);
1703 [out] DWORD
*pdwDestContext
,
1704 [out] void **ppvDestContext
);
1706 HRESULT IsConnected
();
1712 uuid(594f31d0
-7f19
-11d0
-b194
-00a0c90dc8bf
)
1714 interface IRpcChannelBuffer2
: IRpcChannelBuffer
1716 typedef [unique] IRpcChannelBuffer2
*LPRPCCHANNELBUFFER2
;
1718 HRESULT GetProtocolVersion
(
1719 [in,out] DWORD
*pdwVersion
);
1725 uuid(25B15600
-0115-11d0
-BF0D
-00AA00B8DFD2
)
1727 interface IRpcChannelBuffer3
: IRpcChannelBuffer2
1729 typedef [unique] IRpcChannelBuffer3
*LPRPCCHANNELBUFFER3
;
1732 [in,out] RPCOLEMESSAGE
*pMsg
,
1733 [out] ULONG
*pulStatus
);
1736 [in,out] RPCOLEMESSAGE
*pMsg
,
1738 [out] ULONG
*pulStatus
);
1741 [in] RPCOLEMESSAGE
*pMsg
);
1743 HRESULT GetCallContext
(
1744 [in] RPCOLEMESSAGE
*pMsg
,
1746 [out] void **pInterface
);
1748 HRESULT GetDestCtxEx
(
1749 [in] RPCOLEMESSAGE
*pMsg
,
1750 [out] DWORD
*pdwDestContext
,
1751 [out] void **ppvDestContext
);
1754 [in] RPCOLEMESSAGE
*pMsg
,
1755 [out] DWORD
*pState
);
1757 HRESULT RegisterAsync
(
1758 [in] RPCOLEMESSAGE
*pMsg
,
1759 [in] IAsyncManager
*pAsyncMgr
);
1765 uuid(a5029fb6
-3c34
-11d1
-9c99
-00c04fb998aa
),
1766 pointer_default(unique)
1768 interface IAsyncRpcChannelBuffer
: IRpcChannelBuffer2
1771 [in, out] RPCOLEMESSAGE
*pMsg
,
1772 [in] ISynchronize
*pSync
,
1773 [out] ULONG
*pulStatus
);
1776 [in, out] RPCOLEMESSAGE
*pMsg
,
1777 [out] ULONG
*pulStatus
);
1779 HRESULT GetDestCtxEx
(
1780 [in] RPCOLEMESSAGE
*pMsg
,
1781 [out] DWORD
*pdwDestContext
,
1782 [out] void **ppvDestContext
);
1788 uuid(58a08519
-24c8
-4935-b482
-3fd823333a4f
)
1790 interface IRpcSyntaxNegotiate
: IUnknown
1792 HRESULT NegotiateSyntax
(
1793 [in, out] RPCOLEMESSAGE
*pMsg
);
1799 uuid(D5F56A34
-593B
-101A
-B569
-08002B2DBF7A
)
1801 interface IRpcProxyBuffer
: IUnknown
1803 typedef [unique] IRpcProxyBuffer
*LPRPCPROXYBUFFER
;
1806 [in, unique] IRpcChannelBuffer
*pRpcChannelBuffer
);
1814 uuid(D5F56AFC
-593B
-101A
-B569
-08002B2DBF7A
)
1816 interface IRpcStubBuffer
: IUnknown
1818 typedef [unique] IRpcStubBuffer
*LPRPCSTUBBUFFER
;
1821 [in] IUnknown
*pUnkServer
);
1826 [in] RPCOLEMESSAGE
*_prpcmsg
,
1827 [in] IRpcChannelBuffer
*_pRpcChannelBuffer
);
1829 IRpcStubBuffer
*IsIIDSupported
(
1834 HRESULT DebugServerQueryInterface
(
1837 void DebugServerRelease
(
1844 uuid(D5F569D0
-593B
-101A
-B569
-08002B2DBF7A
)
1846 interface IPSFactoryBuffer
: IUnknown
1848 typedef [unique] IPSFactoryBuffer
*LPPSFACTORYBUFFER
;
1850 HRESULT CreateProxy
(
1851 [in] IUnknown
*pUnkOuter
,
1853 [out] IRpcProxyBuffer
**ppProxy
,
1858 [in, unique] IUnknown
*pUnkServer
,
1859 [out] IRpcStubBuffer
**ppStub
);
1865 uuid(1008c4a0
-7613-11cf
-9af1
-0020af6e72f4
)
1867 interface IChannelHook
: IUnknown
1869 typedef [unique] IChannelHook
*LPCHANNELHOOK
;
1871 typedef struct SChannelHookCallInfo
{
1878 } SChannelHookCallInfo
;
1881 [in] REFGUID uExtent
,
1883 [out] ULONG
*pDataSize
);
1885 void ClientFillBuffer
(
1886 [in] REFGUID uExtent
,
1888 [in, out] ULONG
*pDataSize
,
1889 [in] void *pDataBuffer
);
1892 [in] REFGUID uExtent
,
1894 [in] ULONG cbDataSize
,
1895 [in] void *pDataBuffer
,
1896 [in] DWORD lDataRep
,
1897 [in] HRESULT hrFault
);
1900 [in] REFGUID uExtent
,
1902 [in] ULONG cbDataSize
,
1903 [in] void *pDataBuffer
,
1904 [in] DWORD lDataRep
);
1907 [in] REFGUID uExtent
,
1909 [in] HRESULT hrFault
,
1910 [out] ULONG
*pDataSize
);
1912 void ServerFillBuffer
(
1913 [in] REFGUID uExtent
,
1915 [in, out] ULONG
*pDataSize
,
1916 [in] void *pDataBuffer
,
1917 [in] HRESULT hrFault
);
1920 extern
const FMTID FMTID_SummaryInformation
;
1921 extern
const FMTID FMTID_DocSummaryInformation
;
1922 extern
const FMTID FMTID_UserDefinedProperties
;
1925 /******************** Connection Points ********************/
1928 /******************** DCOM ********************/
1933 uuid(0000013D
-0000-0000-C000
-000000000046)
1935 interface IClientSecurity
: IUnknown
1937 typedef struct tagSOLE_AUTHENTICATION_SERVICE
{
1940 OLECHAR
*pPrincipalName
;
1942 } SOLE_AUTHENTICATION_SERVICE
;
1944 typedef SOLE_AUTHENTICATION_SERVICE
*PSOLE_AUTHENTICATION_SERVICE
;
1946 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
{
1948 EOAC_MUTUAL_AUTH
= 0x1,
1949 EOAC_CLOAKING
= 0x10,
1950 EOAC_SECURE_REFS
= 0x2,
1951 EOAC_ACCESS_CONTROL
= 0x4,
1953 } EOLE_AUTHENTICATION_CAPABILITIES
;
1955 HRESULT QueryBlanket
(
1956 [in] IUnknown
*pProxy
,
1957 [out] DWORD
*pAuthnSvc
,
1958 [out] DWORD
*pAuthzSvc
,
1959 [out] OLECHAR
**pServerPrincName
,
1960 [out] DWORD
*pAuthnLevel
,
1961 [out] DWORD
*pImpLevel
,
1962 [out] void **pAuthInfo
,
1963 [out] DWORD
*pCapabilites
);
1966 [in] IUnknown
*pProxy
,
1967 [in] DWORD AuthnSvc
,
1968 [in] DWORD AuthzSvc
,
1969 [in] OLECHAR
*pServerPrincName
,
1970 [in] DWORD AuthnLevel
,
1971 [in] DWORD ImpLevel
,
1972 [in] void *pAuthInfo
,
1973 [in] DWORD Capabilities
);
1976 [in] IUnknown
*pProxy
,
1977 [out] IUnknown
**ppCopy
);
1983 uuid(0000013E-0000-0000-C000
-000000000046)
1985 interface IServerSecurity
: IUnknown
1987 HRESULT QueryBlanket
(
1988 [out] DWORD
*pAuthnSvc
,
1989 [out] DWORD
*pAuthzSvc
,
1990 [out] OLECHAR
**pServerPrincName
,
1991 [out] DWORD
*pAuthnLevel
,
1992 [out] DWORD
*pImpLevel
,
1993 [out] void **pPrivs
,
1994 [out] DWORD
*pCapabilities
);
1996 HRESULT ImpersonateClient
();
1998 HRESULT RevertToSelf
();
2000 BOOL IsImpersonating
();
2006 uuid(00000024-0000-0000-C000
-000000000046)
2008 interface IAsyncSetup
: IUnknown
2010 HRESULT GetAsyncManager
(
2012 [in] IUnknown
*pOuter
,
2014 [out] IUnknown
**ppInner
,
2015 [out] IAsyncManager
**ppAsyncMgr
);
2020 uuid(0e6d4d92
-6738-11cf
-9608-00aa00680db4
)
2022 interface IDirectWriterLock
: IUnknown
2024 HRESULT WaitForWriteAccess
(
2025 [in] DWORD dwTimeout
);
2027 HRESULT ReleaseWriteAccess
();
2029 HRESULT HaveWriteAccess
();
2034 uuid(00000030-0000-0000-C000
-000000000046)
2037 interface ISynchronize
: IUnknown
2041 [in] DWORD dwMilliseconds
);
2052 uuid(00000031-0000-0000-C000
-000000000046)
2054 interface ISynchronizeHandle
: IUnknown
2064 uuid(00000032-0000-0000-C000
-000000000046)
2066 interface ISynchronizeEvent
: ISynchronizeHandle
2068 HRESULT SetEventHandle
(
2076 uuid(00000033-0000-0000-C000
-000000000046)
2078 interface ISynchronizeContainer
: IUnknown
2080 HRESULT AddSynchronize
(
2081 [in] ISynchronize
*pSync
);
2083 HRESULT WaitMultiple
(
2085 [in] DWORD dwTimeOut
,
2086 [out] ISynchronize
**ppSync
);
2092 uuid(00000025-0000-0000-C000
-000000000046)
2094 interface ISynchronizeMutex
: ISynchronize
2096 HRESULT ReleaseMutex
();
2102 uuid(00000029-0000-0000-C000
-000000000046)
2105 interface ICancelMethodCalls
: IUnknown
2107 typedef [unique] ICancelMethodCalls
*LPCANCELMETHODCALLS
;
2110 [in] ULONG ulSeconds
);
2112 HRESULT TestCancel
();
2118 uuid(0000002A
-0000-0000-C000
-000000000046)
2120 interface IAsyncManager
: IUnknown
2122 typedef enum tagDCOM_CALL_STATE
{
2124 DCOM_CALL_COMPLETE
= 1,
2125 DCOM_CALL_CANCELED
= 2
2128 HRESULT CompleteCall
(
2129 [in] HRESULT Result
);
2131 HRESULT GetCallContext
(
2133 [out] void **pInterface
);
2136 [out] ULONG
*pulStateFlags
);
2142 uuid(1c733a30
-2a1c
-11ce
-ade5
-00aa0044773d
),
2143 pointer_default(unique)
2145 interface ICallFactory
: IUnknown
2149 [in] IUnknown
*pCtrlUnk
,
2151 [out, iid_is(riid2
)] IUnknown
**ppv
);
2157 uuid(00000144-0000-0000-C000
-000000000046)
2159 interface IRpcOptions
: IUnknown
2162 [in] IUnknown
*pPrx
,
2163 [in] DWORD dwProperty
,
2164 [in] ULONG_PTR dwValue
);
2167 [in] IUnknown
*pPrx
,
2168 [in] DWORD dwProperty
,
2169 [out] ULONG_PTR
*pdwValue
);
2173 COMBND_RPCTIMEOUT
= 1,
2174 COMBND_SERVER_LOCALITY
= 2
2178 SERVER_LOCALITY_PROCESS_LOCAL
= 0,
2179 SERVER_LOCALITY_MACHINE_LOCAL
= 1,
2180 SERVER_LOCALITY_REMOTE
= 2
2186 uuid(00000149-0000-0000-C000
-000000000046),
2187 pointer_default(unique)
2189 interface IRpcHelper
: IUnknown
2191 HRESULT GetDCOMProtocolVersion
(
2192 [out] DWORD
*pComVersion
);
2194 HRESULT GetIIDFromOBJREF
(
2202 uuid(eb0cb9e8
-7996-11d2
-872e-0000f8080859
)
2204 interface IReleaseMarshalBuffers
: IUnknown
2206 HRESULT ReleaseMarshalBuffer
(
2207 [in] RPCOLEMESSAGE
*pMsg
,
2209 [in, unique] IUnknown
*pChnl
);
2215 uuid(0000002B
-0000-0000-C000
-000000000046)
2217 interface IWaitMultiple
: IUnknown
2219 HRESULT WaitMultiple
(
2221 [out] ISynchronize
**pSync
);
2222 HRESULT AddSynchronize
(
2223 [in] ISynchronize
*pSync
);
2229 uuid(00000026-0000-0000-C000
-000000000046)
2231 interface IUrlMon
: IUnknown
2233 HRESULT AsyncGetClassBits
(
2234 [in] REFCLSID rclsid
,
2235 [in, unique] LPCWSTR pszTYPE
,
2236 [in, unique] LPCWSTR pszExt
,
2237 [in] DWORD dwFileVersionMS
,
2238 [in] DWORD dwFileVersionLS
,
2239 [in, unique] LPCWSTR pszCodeBase
,
2241 [in] DWORD dwClassContext
,
2249 uuid(00000145-0000-0000-C000
-000000000046)
2251 interface IForegroundTransfer
: IUnknown
2253 HRESULT AllowForegroundTransfer
(
2254 [in] void *lpvReserved
);
2260 uuid(00000147-0000-0000-C000
-000000000046)
2262 interface IAddrTrackingControl
: IUnknown
2264 typedef [unique] IAddrTrackingControl
*LPADDRTRACKINGCONTROL
;
2266 HRESULT EnableCOMDynamicAddrTracking
();
2267 HRESULT DisableCOMDynamicAddrTracking
();
2273 uuid(00000148-0000-0000-C000
-000000000046)
2275 interface IAddrExclusionControl
: IUnknown
2277 typedef [unique] IAddrExclusionControl
*LPADDREXCLUSIONCONTROL
;
2279 HRESULT GetCurrentAddrExclusionList
(
2281 [out, iid_is(riid
)] void **ppEnumerator
);
2282 HRESULT UpdateAddrExclusionList
(
2283 [in] IUnknown
*pEnumerator
);
2286 typedef enum _APTTYPE
{
2287 APTTYPE_CURRENT
= -1,
2294 typedef enum _THDTYPE
{
2295 THDTYPE_BLOCKMESSAGES
= 0,
2296 THDTYPE_PROCESSMESSAGES
= 1
2302 uuid(000001ce
-0000-0000-C000
-000000000046),
2303 pointer_default(unique)
2305 interface IComThreadingInfo
: IUnknown
2307 HRESULT GetCurrentApartmentType
(
2308 [out] APTTYPE
*pAptType
);
2309 HRESULT GetCurrentThreadType
(
2310 [out] THDTYPE
*pThreadType
);
2311 HRESULT GetCurrentLogicalThreadId
(
2312 [out] GUID
*pguidLogicalThreadId
);
2313 HRESULT SetCurrentLogicalThreadId
(
2314 [in] REFGUID rguid
);
2320 pointer_default(unique),
2321 uuid(72380d55
-8d2b
-43a3
-8513-2b6ef31434e9
)
2323 interface IProcessInitControl
: IUnknown
2325 HRESULT ResetInitializerTimeout
(
2326 [in] DWORD dwSecondsRemaining
);
2332 uuid(00000034-0000-0000-C000
-000000000046),
2333 pointer_default(unique)
2335 interface IInitializeSpy
: IUnknown
2337 typedef [unique] IInitializeSpy
*LPINITIALIZESPY
;
2339 HRESULT PreInitialize
(
2340 [in] DWORD dwCoInit
,
2341 [in] DWORD dwCurThreadAptRefs
);
2343 HRESULT PostInitialize
(
2344 [in] HRESULT hrCoInit
,
2345 [in] DWORD dwCoInit
,
2346 [in] DWORD dwNewThreadAptRefs
);
2348 HRESULT PreUninitialize
(
2349 [in] DWORD dwCurThreadAptRefs
);
2351 HRESULT PostUninitialize
(
2352 [in] DWORD dwNewThreadAptRefs
);
2357 uuid(969dc708
-5c76
-11d1
-8d86
-0000f804b057
)
2359 interface IThumbnailExtractor
: IUnknown
2361 HRESULT ExtractThumbnail
(
2362 [in] IStorage
*pStg
,
2363 [in] ULONG ulLength
,
2364 [in] ULONG ulHeight
,
2365 [out] ULONG
*pulOutputLength
,
2366 [out] ULONG
*pulOutputHeight
,
2367 [out] HBITMAP *phOutputBitmap
);
2370 HRESULT OnFileUpdated
(
2371 [in] IStorage
*pStg
);