• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cpp_quote("/**")
2cpp_quote(" * This file is part of the mingw-w64 runtime package.")
3cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
4cpp_quote(" */")
5cpp_quote("")
6cpp_quote("#include <winapifamily.h>")
7cpp_quote("")
8cpp_quote("#if (NTDDI_VERSION >= NTDDI_VISTA && !defined(_WIN32_WINNT))")
9cpp_quote("#define _WIN32_WINNT 0x0600")
10cpp_quote("#endif")
11
12cpp_quote("#if(NTDDI_VERSION >= NTDDI_WS03 && !defined(_WIN32_WINNT))")
13cpp_quote("#define _WIN32_WINNT 0x0502")
14cpp_quote("#endif")
15
16cpp_quote("#if(NTDDI_VERSION >= NTDDI_WINXP && !defined(_WIN32_WINNT))")
17cpp_quote("#define _WIN32_WINNT 0x0501")
18cpp_quote("#endif")
19
20#ifndef DO_NO_IMPORTS
21import "unknwn.idl";
22import "wtypes.idl";
23#define DO_NO_IMPORTS
24#define OBJIDL_UNDEF_DO_NO_IMPORTS
25#endif
26
27#include "objidlbase.idl"
28#ifdef OBJIDL_UNDEF_DO_NO_IMPORTS
29#undef DO_NO_IMPORTS
30#endif
31
32interface IMoniker;
33interface IEnumMoniker;
34interface IRunningObjectTable;
35interface IStorage;
36interface IEnumSTATSTG;
37interface IAdviseSink;
38interface IBindCtx;
39interface IEnumMoniker;
40
41cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
42[local, object, uuid (0000001d-0000-0000-C000-000000000046)]
43interface IMallocSpy : IUnknown {
44  typedef [unique] IMallocSpy *LPMALLOCSPY;
45  SIZE_T PreAlloc ([in] SIZE_T cbRequest);
46  void *PostAlloc ([in] void *pActual);
47  void *PreFree ([in] void *pRequest,[in] BOOL fSpyed);
48  void PostFree ([in] BOOL fSpyed);
49  SIZE_T PreRealloc ([in] void *pRequest,[in] SIZE_T cbRequest,[out] void **ppNewRequest,[in] BOOL fSpyed);
50  void *PostRealloc ([in] void *pActual,[in] BOOL fSpyed);
51  void *PreGetSize ([in] void *pRequest,[in] BOOL fSpyed);
52  SIZE_T PostGetSize ([in] SIZE_T cbActual,[in] BOOL fSpyed);
53  void *PreDidAlloc ([in] void *pRequest,[in] BOOL fSpyed);
54  int PostDidAlloc ([in] void *pRequest,[in] BOOL fSpyed,[in] int fActual);
55  void PreHeapMinimize (void);
56  void PostHeapMinimize (void);
57}
58
59cpp_quote("#endif")
60
61cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
62[object, uuid (0000000e-0000-0000-C000-000000000046), pointer_default (unique)]
63
64interface IBindCtx : IUnknown {
65  typedef [unique] IBindCtx *LPBC;
66  typedef [unique] IBindCtx *LPBINDCTX;
67  cpp_quote("#if defined(__cplusplus)")
68  cpp_quote("typedef struct tagBIND_OPTS {")
69  cpp_quote("  DWORD cbStruct;")
70  cpp_quote("  DWORD grfFlags;")
71  cpp_quote("  DWORD grfMode;")
72  cpp_quote("  DWORD dwTickCountDeadline;")
73  cpp_quote("} BIND_OPTS, *LPBIND_OPTS;")
74  cpp_quote("#else")
75
76  typedef struct tagBIND_OPTS {
77    DWORD cbStruct;
78    DWORD grfFlags;
79    DWORD grfMode;
80    DWORD dwTickCountDeadline;
81  } BIND_OPTS,*LPBIND_OPTS;
82  cpp_quote("#endif")
83
84  cpp_quote("#if defined(__cplusplus)")
85  cpp_quote("typedef struct tagBIND_OPTS2 : tagBIND_OPTS {")
86  cpp_quote("DWORD           dwTrackFlags;")
87  cpp_quote("DWORD           dwClassContext;")
88  cpp_quote("LCID            locale;")
89  cpp_quote("COSERVERINFO *  pServerInfo;")
90  cpp_quote("} BIND_OPTS2, * LPBIND_OPTS2;")
91  cpp_quote("#else")
92  typedef struct tagBIND_OPTS2 {
93    DWORD cbStruct;
94    DWORD grfFlags;
95    DWORD grfMode;
96    DWORD dwTickCountDeadline;
97    DWORD dwTrackFlags;
98    DWORD dwClassContext;
99    LCID locale;
100    COSERVERINFO *pServerInfo;
101  } BIND_OPTS2,*LPBIND_OPTS2;
102  cpp_quote("#endif")
103
104  cpp_quote("#if defined(__cplusplus)")
105  cpp_quote("typedef struct tagBIND_OPTS3 : tagBIND_OPTS2 {")
106  cpp_quote("HWND           hwnd;")
107  cpp_quote("} BIND_OPTS3, * LPBIND_OPTS3;")
108  cpp_quote("#else")
109
110  typedef struct tagBIND_OPTS3 {
111    DWORD cbStruct;
112    DWORD grfFlags;
113    DWORD grfMode;
114    DWORD dwTickCountDeadline;
115    DWORD dwTrackFlags;
116    DWORD dwClassContext;
117    LCID locale;
118    COSERVERINFO *pServerInfo;
119    HWND hwnd;
120  } BIND_OPTS3,*LPBIND_OPTS3;
121  cpp_quote("#endif")
122
123  typedef enum tagBIND_FLAGS {
124    BIND_MAYBOTHERUSER = 1,
125    BIND_JUSTTESTEXISTENCE = 2
126  } BIND_FLAGS;
127  HRESULT RegisterObjectBound ([in, unique] IUnknown *punk);
128  HRESULT RevokeObjectBound ([in, unique] IUnknown *punk);
129  HRESULT ReleaseBoundObjects (void);
130  [local]
131  HRESULT SetBindOptions ([in] BIND_OPTS *pbindopts);
132  [call_as (SetBindOptions)]
133  HRESULT RemoteSetBindOptions ([in] BIND_OPTS2 *pbindopts);
134  [local]
135  HRESULT GetBindOptions ([in, out] BIND_OPTS *pbindopts);
136  [call_as (GetBindOptions)]
137  HRESULT RemoteGetBindOptions ([in, out] BIND_OPTS2 *pbindopts);
138  HRESULT GetRunningObjectTable ([out] IRunningObjectTable **pprot);
139  HRESULT RegisterObjectParam ([in] LPOLESTR pszKey,[in, unique] IUnknown *punk);
140  HRESULT GetObjectParam ([in] LPOLESTR pszKey,[out] IUnknown **ppunk);
141  HRESULT EnumObjectParam ([out] IEnumString **ppenum);
142  HRESULT RevokeObjectParam ([in] LPOLESTR pszKey);
143}
144[object, uuid (00000102-0000-0000-C000-000000000046), pointer_default (unique)]
145
146interface IEnumMoniker : IUnknown {
147  typedef [unique] IEnumMoniker *LPENUMMONIKER;
148  [local]
149  HRESULT Next ([in] ULONG celt, IMoniker **rgelt, ULONG *pceltFetched);
150  [call_as (Next)]
151  HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pceltFetched)]IMoniker **rgelt,[out] ULONG *pceltFetched);
152  HRESULT Skip ([in] ULONG celt);
153  HRESULT Reset ();
154  HRESULT Clone ([out] IEnumMoniker **ppenum);
155}
156
157cpp_quote("#endif")
158
159cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
160[object, uuid (00000126-0000-0000-C000-000000000046)]
161interface IRunnableObject : IUnknown {
162  typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
163  HRESULT GetRunningClass ([out] LPCLSID lpClsid);
164  HRESULT Run ([in] LPBINDCTX pbc);
165  [local]
166  BOOL IsRunning ();
167  [call_as (IsRunning)]
168  HRESULT RemoteIsRunning ();
169  HRESULT LockRunning ([in] BOOL fLock,[in] BOOL fLastUnlockCloses);
170  HRESULT SetContainedObject ([in] BOOL fContained);
171}
172[object, uuid (00000010-0000-0000-C000-000000000046)]
173
174interface IRunningObjectTable : IUnknown {
175  typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
176  HRESULT Register ([in] DWORD grfFlags,[in, unique] IUnknown *punkObject,[in, unique] IMoniker *pmkObjectName,[out] DWORD *pdwRegister);
177  HRESULT Revoke ([in] DWORD dwRegister);
178  HRESULT IsRunning ([in, unique] IMoniker *pmkObjectName);
179  HRESULT GetObject ([in, unique] IMoniker *pmkObjectName,[out] IUnknown **ppunkObject);
180  HRESULT NoteChangeTime ([in] DWORD dwRegister,[in] FILETIME *pfiletime);
181  HRESULT GetTimeOfLastChange ([in, unique] IMoniker *pmkObjectName,[out] FILETIME *pfiletime);
182  HRESULT EnumRunning ([out] IEnumMoniker **ppenumMoniker);
183}
184
185cpp_quote("#endif")
186
187cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
188[object, uuid (0000010c-0000-0000-C000-000000000046)]
189
190interface IPersist : IUnknown {
191  typedef [unique] IPersist *LPPERSIST;
192  HRESULT GetClassID ([out] CLSID *pClassID);
193}
194[object, uuid (00000109-0000-0000-C000-000000000046), pointer_default (unique)]
195
196interface IPersistStream : IPersist {
197  typedef [unique] IPersistStream *LPPERSISTSTREAM;
198  HRESULT IsDirty (void);
199  HRESULT Load ([in, unique] IStream *pStm);
200  HRESULT Save ([in, unique] IStream *pStm,[in] BOOL fClearDirty);
201  HRESULT GetSizeMax ([out] ULARGE_INTEGER *pcbSize);
202}
203[object, uuid (0000000f-0000-0000-C000-000000000046), pointer_default (unique)]
204
205interface IMoniker : IPersistStream {
206  typedef [unique] IMoniker *LPMONIKER;
207  typedef enum tagMKSYS {
208    MKSYS_NONE = 0,
209    MKSYS_GENERICCOMPOSITE = 1,
210    MKSYS_FILEMONIKER = 2,
211    MKSYS_ANTIMONIKER = 3,
212    MKSYS_ITEMMONIKER = 4,
213    MKSYS_POINTERMONIKER = 5,
214
215    MKSYS_CLASSMONIKER = 7,
216    MKSYS_OBJREFMONIKER = 8,
217    MKSYS_SESSIONMONIKER = 9,
218    MKSYS_LUAMONIKER = 10
219  }MKSYS;
220  typedef [v1_enum] enum tagMKREDUCE {
221    MKRREDUCE_ONE = 3<<16,
222
223    MKRREDUCE_TOUSER = 2<<16,
224    MKRREDUCE_THROUGHUSER = 1<<16,
225    MKRREDUCE_ALL = 0
226  } MKRREDUCE;
227  [local]
228  HRESULT BindToObject ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] REFIID riidResult,[out, iid_is (riidResult)] void **ppvResult);
229  [call_as (BindToObject)]
230  HRESULT RemoteBindToObject ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] REFIID riidResult,[out, iid_is (riidResult)] IUnknown **ppvResult);
231  [local]
232  HRESULT BindToStorage ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] REFIID riid,[out, iid_is (riid)] void **ppvObj);
233  [call_as (BindToStorage)]
234  HRESULT RemoteBindToStorage ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] REFIID riid,[out, iid_is (riid)] IUnknown **ppvObj);
235  HRESULT Reduce ([in, unique] IBindCtx *pbc,[in] DWORD dwReduceHowFar,[in, out, unique] IMoniker **ppmkToLeft,[out] IMoniker **ppmkReduced);
236  HRESULT ComposeWith ([in, unique] IMoniker *pmkRight,[in] BOOL fOnlyIfNotGeneric,[out] IMoniker **ppmkComposite);
237  HRESULT Enum ([in] BOOL fForward,[out] IEnumMoniker **ppenumMoniker);
238  HRESULT IsEqual ([in, unique] IMoniker *pmkOtherMoniker);
239  HRESULT Hash ([out] DWORD *pdwHash);
240  HRESULT IsRunning ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in, unique] IMoniker *pmkNewlyRunning);
241  HRESULT GetTimeOfLastChange ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[out] FILETIME *pFileTime);
242  HRESULT Inverse ([out] IMoniker **ppmk);
243  HRESULT CommonPrefixWith ([in, unique] IMoniker *pmkOther,[out] IMoniker **ppmkPrefix);
244  HRESULT RelativePathTo ([in, unique] IMoniker *pmkOther,[out] IMoniker **ppmkRelPath);
245  HRESULT GetDisplayName ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[out] LPOLESTR *ppszDisplayName);
246  HRESULT ParseDisplayName ([in, unique] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] LPOLESTR pszDisplayName,[out] ULONG *pchEaten,[out] IMoniker **ppmkOut);
247  HRESULT IsSystemMoniker ([out] DWORD *pdwMksys);
248}
249
250cpp_quote("#endif")
251
252cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
253[object, uuid (f29f6bc0-5021-11ce-aa15-00006901293f), pointer_default (unique)]
254
255interface IROTData : IUnknown {
256  HRESULT GetComparisonData ([out, size_is (cbMax)] byte *pbData,[in] ULONG cbMax,[out] ULONG *pcbData);
257}
258
259cpp_quote("#endif")
260
261cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
262[object, uuid (0000000d-0000-0000-C000-000000000046), pointer_default (unique)]
263
264interface IEnumSTATSTG : IUnknown {
265  typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
266  [local]
267  HRESULT Next ([in] ULONG celt, STATSTG *rgelt, ULONG *pceltFetched);
268  [call_as (Next)]
269  HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pceltFetched)] STATSTG *rgelt,[out] ULONG *pceltFetched);
270  HRESULT Skip ([in] ULONG celt);
271  HRESULT Reset ();
272  HRESULT Clone ([out] IEnumSTATSTG **ppenum);
273}
274[object, uuid (0000000b-0000-0000-C000-000000000046), pointer_default (unique)]
275
276interface IStorage : IUnknown {
277  typedef [unique] IStorage *LPSTORAGE;
278  typedef struct tagRemSNB {
279    unsigned long ulCntStr;
280    unsigned long ulCntChar;
281    [size_is (ulCntChar)] OLECHAR rgString[];
282  } RemSNB;
283  typedef [unique] RemSNB *wireSNB;
284  typedef [wire_marshal (wireSNB)] LPOLESTR *SNB;
285  HRESULT CreateStream ([in, string] const OLECHAR *pwcsName,[in] DWORD grfMode,[in] DWORD reserved1,[in] DWORD reserved2,[out] IStream **ppstm);
286  [local]
287  HRESULT OpenStream ([in, string] const OLECHAR *pwcsName,[in, unique] void *reserved1,[in] DWORD grfMode,[in] DWORD reserved2,[out] IStream **ppstm);
288  [call_as (OpenStream)]
289  HRESULT RemoteOpenStream ([in, string] const OLECHAR *pwcsName,[in] unsigned long cbReserved1,[in, unique, size_is (cbReserved1)] byte *reserved1,[in] DWORD grfMode,[in] DWORD reserved2,[out] IStream **ppstm);
290  HRESULT CreateStorage ([in, string] const OLECHAR *pwcsName,[in] DWORD grfMode,[in] DWORD reserved1,[in] DWORD reserved2,[out] IStorage **ppstg);
291  HRESULT OpenStorage ([in, unique, string] const OLECHAR *pwcsName,[in, unique] IStorage *pstgPriority,[in] DWORD grfMode,[in, unique] SNB snbExclude,[in] DWORD reserved,[out] IStorage **ppstg);
292  [local]
293  HRESULT CopyTo ([in] DWORD ciidExclude,[in, unique, size_is (ciidExclude)] IID const *rgiidExclude,[in, unique] SNB snbExclude,[in, unique] IStorage *pstgDest);
294  [call_as (CopyTo)]
295  HRESULT RemoteCopyTo ([in] DWORD ciidExclude,[in, unique, size_is (ciidExclude)] IID const *rgiidExclude,[in, unique] SNB snbExclude,[in, unique] IStorage *pstgDest);
296  HRESULT MoveElementTo ([in, string] const OLECHAR *pwcsName,[in, unique] IStorage *pstgDest,[in, string] const OLECHAR *pwcsNewName,[in] DWORD grfFlags);
297  HRESULT Commit ([in] DWORD grfCommitFlags);
298  HRESULT Revert ();
299  [local]
300  HRESULT EnumElements ([in] DWORD reserved1,[in, unique, size_is (1)] void *reserved2,[in] DWORD reserved3,[out] IEnumSTATSTG **ppenum);
301  [call_as (EnumElements)]
302  HRESULT RemoteEnumElements ([in] DWORD reserved1,[in] unsigned long cbReserved2,[in, unique, size_is (cbReserved2)] byte *reserved2,[in] DWORD reserved3,[out] IEnumSTATSTG **ppenum);
303  HRESULT DestroyElement ([in, string] const OLECHAR *pwcsName);
304  HRESULT RenameElement ([in, string] const OLECHAR *pwcsOldName,[in, string] const OLECHAR *pwcsNewName);
305  HRESULT SetElementTimes ([in, unique, string] const OLECHAR *pwcsName,[in, unique] FILETIME const *pctime,[in, unique] FILETIME const *patime,[in, unique] FILETIME const *pmtime);
306  HRESULT SetClass ([in] REFCLSID clsid);
307  HRESULT SetStateBits ([in] DWORD grfStateBits,[in] DWORD grfMask);
308  HRESULT Stat ([out] STATSTG *pstatstg,[in] DWORD grfStatFlag);
309}
310
311cpp_quote("#endif")
312
313cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
314[object, uuid (0000010b-0000-0000-C000-000000000046), pointer_default (unique)]
315
316interface IPersistFile : IPersist {
317  typedef [unique] IPersistFile *LPPERSISTFILE;
318  HRESULT IsDirty (void);
319  HRESULT Load ([in] LPCOLESTR pszFileName,[in] DWORD dwMode);
320  HRESULT Save ([in, unique] LPCOLESTR pszFileName,[in] BOOL fRemember);
321  HRESULT SaveCompleted ([in, unique] LPCOLESTR pszFileName);
322  HRESULT GetCurFile ([out] LPOLESTR *ppszFileName);
323}
324[object, uuid (0000010a-0000-0000-C000-000000000046), pointer_default (unique)]
325
326interface IPersistStorage : IPersist {
327  typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
328  HRESULT IsDirty (void);
329  HRESULT InitNew ([in, unique] IStorage *pStg);
330  HRESULT Load ([in, unique] IStorage *pStg);
331  HRESULT Save ([in, unique] IStorage *pStgSave,[in] BOOL fSameAsLoad);
332  HRESULT SaveCompleted ([in, unique] IStorage *pStgNew);
333  HRESULT HandsOffStorage (void);
334}
335
336cpp_quote("#endif")
337
338cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
339[object, uuid (0000000a-0000-0000-C000-000000000046), pointer_default (unique)]
340
341interface ILockBytes : IUnknown {
342  typedef [unique] ILockBytes *LPLOCKBYTES;
343  [local]
344  HRESULT ReadAt ([in] ULARGE_INTEGER ulOffset,[out, size_is (cb), length_is (*pcbRead)]void *pv,[in] ULONG cb,[out] ULONG *pcbRead);
345  [call_as (ReadAt)]
346  HRESULT _stdcall RemoteReadAt ([in] ULARGE_INTEGER ulOffset,[out, size_is (cb), length_is (*pcbRead)]byte *pv,[in] ULONG cb,[out] ULONG *pcbRead);
347  [local]
348  HRESULT WriteAt ([in] ULARGE_INTEGER ulOffset,[in, size_is (cb)] void const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
349  [call_as (WriteAt)]
350  HRESULT RemoteWriteAt ([in] ULARGE_INTEGER ulOffset,[in, size_is (cb)] byte const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
351  HRESULT Flush ();
352  HRESULT SetSize ([in] ULARGE_INTEGER cb);
353  HRESULT LockRegion ([in] ULARGE_INTEGER libOffset,[in] ULARGE_INTEGER cb,[in] DWORD dwLockType);
354  HRESULT UnlockRegion ([in] ULARGE_INTEGER libOffset,[in] ULARGE_INTEGER cb,[in] DWORD dwLockType);
355  HRESULT Stat ([out] STATSTG *pstatstg,[in] DWORD grfStatFlag);
356}
357[object, uuid (00000103-0000-0000-C000-000000000046), pointer_default (unique)]
358
359interface IEnumFORMATETC : IUnknown {
360  typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
361
362  typedef struct tagDVTARGETDEVICE {
363    DWORD tdSize;
364    WORD tdDriverNameOffset;
365    WORD tdDeviceNameOffset;
366    WORD tdPortNameOffset;
367    WORD tdExtDevmodeOffset;
368    [size_is (tdSize - sizeof (DWORD) - 4 *sizeof (WORD))]
369    BYTE tdData[];
370  } DVTARGETDEVICE;
371
372
373  typedef CLIPFORMAT *LPCLIPFORMAT;
374  typedef struct tagFORMATETC {
375    CLIPFORMAT cfFormat;
376    [unique] DVTARGETDEVICE *ptd;
377    DWORD dwAspect;
378    LONG lindex;
379    DWORD tymed;
380  }FORMATETC,*LPFORMATETC;
381  [local]
382  HRESULT Next ([in] ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched);
383  [call_as (Next)]
384  HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pceltFetched)] FORMATETC *rgelt,[out] ULONG *pceltFetched);
385  HRESULT Skip ([in] ULONG celt);
386  HRESULT Reset ();
387  HRESULT Clone ([out] IEnumFORMATETC **ppenum);
388}
389[object, uuid (00000105-0000-0000-C000-000000000046), pointer_default (unique)]
390
391interface IEnumSTATDATA : IUnknown {
392  typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
393  typedef enum tagADVF {
394    ADVF_NODATA = 1,
395    ADVF_PRIMEFIRST = 2,
396    ADVF_ONLYONCE = 4,
397    ADVF_DATAONSTOP = 64,
398    ADVFCACHE_NOHANDLER = 8,
399    ADVFCACHE_FORCEBUILTIN = 16,
400    ADVFCACHE_ONSAVE = 32
401  } ADVF;
402  typedef struct tagSTATDATA {
403    FORMATETC formatetc;
404    DWORD advf;
405    [unique] IAdviseSink *pAdvSink;
406    DWORD dwConnection;
407  } STATDATA;
408  typedef STATDATA *LPSTATDATA;
409  [local]
410  HRESULT Next ([in] ULONG celt, STATDATA *rgelt, ULONG *pceltFetched);
411  [call_as (Next)]
412  HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pceltFetched)] STATDATA *rgelt,[out] ULONG *pceltFetched);
413  HRESULT Skip ([in] ULONG celt);
414  HRESULT Reset ();
415  HRESULT Clone ([out] IEnumSTATDATA **ppenum);
416}
417
418[object, uuid (00000012-0000-0000-C000-000000000046), pointer_default (unique)]
419interface IRootStorage : IUnknown {
420  typedef [unique] IRootStorage *LPROOTSTORAGE;
421  HRESULT SwitchToFile ([in] LPOLESTR pszFile);
422}
423
424[object, uuid (0000010f-0000-0000-C000-000000000046),
425  async_uuid (00000150-0000-0000-C000-000000000046),
426  pointer_default (unique)]
427interface IAdviseSink : IUnknown {
428  typedef IAdviseSink *LPADVISESINK;
429  typedef [v1_enum] enum tagTYMED {
430    TYMED_HGLOBAL = 1,
431    TYMED_FILE = 2,
432    TYMED_ISTREAM = 4,
433    TYMED_ISTORAGE = 8,
434    TYMED_GDI = 16,
435    TYMED_MFPICT = 32,
436    TYMED_ENHMF = 64,
437    TYMED_NULL = 0
438  } TYMED;
439
440  typedef struct tagRemSTGMEDIUM {
441    DWORD tymed;
442    DWORD dwHandleType;
443    unsigned long pData;
444    unsigned long pUnkForRelease;
445    unsigned long cbData;
446    [size_is (cbData)] byte data[];
447  } RemSTGMEDIUM;
448
449  cpp_quote("#ifdef NONAMELESSUNION")
450  cpp_quote("typedef struct tagSTGMEDIUM {")
451  cpp_quote("DWORD tymed;")
452  cpp_quote("union {")
453  cpp_quote("HBITMAP hBitmap;")
454  cpp_quote("HMETAFILEPICT hMetaFilePict;")
455  cpp_quote("HENHMETAFILE hEnhMetaFile;")
456  cpp_quote("HGLOBAL hGlobal;")
457  cpp_quote("LPOLESTR lpszFileName;")
458  cpp_quote("IStream *pstm;")
459  cpp_quote("IStorage *pstg;")
460  cpp_quote("} u;")
461  cpp_quote("IUnknown *pUnkForRelease;")
462  cpp_quote("}uSTGMEDIUM;")
463  cpp_quote("#else")
464
465  typedef struct tagSTGMEDIUM {
466    DWORD tymed;
467    [switch_type (DWORD), switch_is ((DWORD) tymed)]
468    union {
469      [case (TYMED_GDI)]
470      HBITMAP hBitmap;
471      [case (TYMED_MFPICT)]
472      HMETAFILEPICT hMetaFilePict;
473      [case (TYMED_ENHMF)]
474      HENHMETAFILE hEnhMetaFile;
475      [case (TYMED_HGLOBAL)]
476      HGLOBAL hGlobal;
477      [case (TYMED_FILE)]
478      LPOLESTR lpszFileName;
479      [case (TYMED_ISTREAM)]
480      IStream *pstm;
481      [case (TYMED_ISTORAGE)]
482      IStorage *pstg;
483      [default]
484      ;
485    } DUMMYUNIONNAME;
486    [unique] IUnknown *pUnkForRelease;
487  } uSTGMEDIUM;
488  cpp_quote("#endif")
489
490#define OBJ_PEN 1
491#define OBJ_BRUSH 2
492#define OBJ_DC 3
493#define OBJ_METADC 4
494#define OBJ_PAL 5
495#define OBJ_FONT 6
496#define OBJ_BITMAP 7
497#define OBJ_REGION 8
498#define OBJ_METAFILE 9
499#define OBJ_MEMDC 10
500#define OBJ_EXTPEN 11
501#define OBJ_ENHMETADC 12
502#define OBJ_ENHMETAFILE 13
503
504  typedef union _GDI_OBJECT switch (DWORD ObjectType) u {
505    case OBJ_BITMAP: wireHBITMAP hBitmap;
506    case OBJ_PAL: wireHPALETTE hPalette;
507    default: wireHGLOBAL hGeneric;
508  } GDI_OBJECT;
509  typedef struct _userSTGMEDIUM {
510    union _STGMEDIUM_UNION switch (DWORD tymed) u {
511      case TYMED_NULL:;
512      case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
513      case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
514      case TYMED_GDI: GDI_OBJECT *hGdiHandle;
515      case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
516      case TYMED_FILE: LPOLESTR lpszFileName;
517      case TYMED_ISTREAM: BYTE_BLOB *pstm;
518      case TYMED_ISTORAGE: BYTE_BLOB *pstg;
519    } DUMMYUNIONNAME;
520    IUnknown *pUnkForRelease;
521  } userSTGMEDIUM;
522  typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
523  typedef [wire_marshal (wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
524  typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
525  typedef [wire_marshal (wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
526  typedef STGMEDIUM *LPSTGMEDIUM;
527  typedef struct _userFLAG_STGMEDIUM {
528    long ContextFlags;
529    long fPassOwnership;
530    userSTGMEDIUM Stgmed;
531  } userFLAG_STGMEDIUM;
532  typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
533  typedef [wire_marshal (wireFLAG_STGMEDIUM)]
534  struct _FLAG_STGMEDIUM {
535    long ContextFlags;
536    long fPassOwnership;
537    STGMEDIUM Stgmed;
538  } FLAG_STGMEDIUM;
539  [local]
540  void OnDataChange ([in, unique] FORMATETC *pFormatetc,[in, unique] STGMEDIUM *pStgmed);
541  [local]
542  void OnViewChange ([in] DWORD dwAspect,[in] LONG lindex);
543  [local]
544  void OnRename ([in] IMoniker *pmk);
545  [local]
546  void OnSave ();
547  [local]
548  void OnClose ();
549  [call_as (OnDataChange)]
550  HRESULT RemoteOnDataChange ([in, unique] FORMATETC *pFormatetc,[in, unique] ASYNC_STGMEDIUM *pStgmed);
551  [call_as (OnViewChange)]
552  HRESULT RemoteOnViewChange ([in] DWORD dwAspect,[in] LONG lindex);
553  [call_as (OnRename)]
554  HRESULT RemoteOnRename ([in] IMoniker *pmk);
555  [call_as (OnSave)]
556  HRESULT RemoteOnSave ();
557  [call_as (OnClose)]
558  HRESULT RemoteOnClose ();
559}
560
561cpp_quote("#endif")
562
563cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
564[object, uuid (00000125-0000-0000-C000-000000000046),
565  async_uuid (00000151-0000-0000-C000-000000000046),
566  pointer_default (unique)]
567
568interface IAdviseSink2 : IAdviseSink {
569  typedef [unique] IAdviseSink2 *LPADVISESINK2;
570  [local]
571  void OnLinkSrcChange ([in, unique] IMoniker *pmk);
572  [call_as (OnLinkSrcChange)]
573  HRESULT RemoteOnLinkSrcChange ([in, unique] IMoniker *pmk);
574}
575
576cpp_quote("#endif")
577
578cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
579[object, uuid (0000010e-0000-0000-C000-000000000046), pointer_default (unique)]
580
581interface IDataObject : IUnknown {
582  typedef [unique] IDataObject *LPDATAOBJECT;
583  typedef enum tagDATADIR {
584    DATADIR_GET = 1,
585    DATADIR_SET = 2
586  } DATADIR;
587  [local]
588  HRESULT GetData ([in, unique] FORMATETC *pformatetcIn,[out] STGMEDIUM *pmedium);
589  [call_as (GetData)]
590  HRESULT RemoteGetData ([in, unique] FORMATETC *pformatetcIn,[out] STGMEDIUM *pRemoteMedium);
591  [local]
592  HRESULT GetDataHere ([in, unique] FORMATETC *pformatetc,[in, out] STGMEDIUM *pmedium);
593  [call_as (GetDataHere)]
594  HRESULT RemoteGetDataHere ([in, unique] FORMATETC *pformatetc,[in, out] STGMEDIUM *pRemoteMedium);
595  HRESULT QueryGetData ([in, unique] FORMATETC *pformatetc);
596  HRESULT GetCanonicalFormatEtc ([in, unique] FORMATETC *pformatectIn,[out] FORMATETC *pformatetcOut);
597  [local]
598  HRESULT SetData ([in, unique] FORMATETC *pformatetc,[in, unique] STGMEDIUM *pmedium,[in] BOOL fRelease);
599  [call_as (SetData)]
600  HRESULT RemoteSetData ([in, unique] FORMATETC *pformatetc,[in, unique] FLAG_STGMEDIUM *pmedium,[in] BOOL fRelease);
601  HRESULT EnumFormatEtc ([in] DWORD dwDirection,[out] IEnumFORMATETC **ppenumFormatEtc);
602  HRESULT DAdvise ([in] FORMATETC *pformatetc,[in] DWORD advf,[in, unique] IAdviseSink *pAdvSink,[out] DWORD *pdwConnection);
603  HRESULT DUnadvise ([in] DWORD dwConnection);
604  HRESULT EnumDAdvise ([out] IEnumSTATDATA **ppenumAdvise);
605}
606
607cpp_quote("#endif")
608
609cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
610[local, object, uuid (00000110-0000-0000-C000-000000000046)]
611
612interface IDataAdviseHolder : IUnknown {
613  typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
614  HRESULT Advise ([in, unique] IDataObject *pDataObject,[in, unique] FORMATETC *pFetc,[in] DWORD advf,[in, unique] IAdviseSink *pAdvise,[out] DWORD *pdwConnection);
615  HRESULT Unadvise ([in] DWORD dwConnection);
616  HRESULT EnumAdvise ([out] IEnumSTATDATA **ppenumAdvise);
617  HRESULT SendOnDataChange ([in, unique] IDataObject *pDataObject,[in] DWORD dwReserved,[in] DWORD advf);
618}
619[local, object, uuid (00000016-0000-0000-C000-000000000046)]
620
621interface IMessageFilter : IUnknown {
622  typedef [unique] IMessageFilter *LPMESSAGEFILTER;
623  typedef enum tagCALLTYPE {
624    CALLTYPE_TOPLEVEL = 1,
625    CALLTYPE_NESTED = 2,
626    CALLTYPE_ASYNC = 3,
627    CALLTYPE_TOPLEVEL_CALLPENDING = 4,
628    CALLTYPE_ASYNC_CALLPENDING = 5
629  } CALLTYPE;
630  typedef enum tagSERVERCALL {
631    SERVERCALL_ISHANDLED = 0,
632    SERVERCALL_REJECTED = 1,
633    SERVERCALL_RETRYLATER = 2
634  } SERVERCALL;
635  typedef enum tagPENDINGTYPE {
636    PENDINGTYPE_TOPLEVEL = 1,
637    PENDINGTYPE_NESTED = 2
638  } PENDINGTYPE;
639  typedef enum tagPENDINGMSG {
640    PENDINGMSG_CANCELCALL = 0,
641    PENDINGMSG_WAITNOPROCESS = 1,
642    PENDINGMSG_WAITDEFPROCESS = 2
643  } PENDINGMSG;
644  typedef struct tagINTERFACEINFO {
645    IUnknown *pUnk;
646    IID iid;
647    WORD wMethod;
648  } INTERFACEINFO,*LPINTERFACEINFO;
649  DWORD HandleInComingCall ([in] DWORD dwCallType,[in] HTASK htaskCaller,[in] DWORD dwTickCount,[in] LPINTERFACEINFO lpInterfaceInfo);
650  DWORD RetryRejectedCall ([in] HTASK htaskCallee,[in] DWORD dwTickCount,[in] DWORD dwRejectType);
651  DWORD MessagePending ([in] HTASK htaskCallee,[in] DWORD dwTickCount,[in] DWORD dwPendingType);
652}
653
654cpp_quote("")
655extern const FMTID FMTID_SummaryInformation;
656extern const FMTID FMTID_DocSummaryInformation;
657extern const FMTID FMTID_UserDefinedProperties;
658extern const FMTID FMTID_DiscardableInformation;
659extern const FMTID FMTID_ImageSummaryInformation;
660extern const FMTID FMTID_AudioSummaryInformation;
661extern const FMTID FMTID_VideoSummaryInformation;
662extern const FMTID FMTID_MediaFileSummaryInformation;
663#ifdef __INCLUDE_CPIFS
664interface IConnectionPointContainer;
665interface IConnectionPoint;
666interface IEnumConnections;
667interface IEnumConnectionPoints;
668[object, uuid (B196B286-BAB4-101a-B69C-00aa00341d07), pointer_default (unique)]
669interface IConnectionPoint : IUnknown {
670  typedef IConnectionPoint *PCONNECTIONPOINT;
671  typedef IConnectionPoint *LPCONNECTIONPOINT;
672  HRESULT GetConnectionInterface ([out] IID *piid);
673  HRESULT GetConnectionPointContainer ([out] IConnectionPointContainer **ppCPC);
674  HRESULT Advise ([in] IUnknown *pUnkSink,[out] DWORD *pdwCookie);
675  HRESULT Unadvise ([in] DWORD dwCookie);
676  HRESULT EnumConnections ([out] IEnumConnections **ppEnum);
677}
678[object, uuid (B196B284-BAB4-101a-B69C-00aa00341d07), pointer_default (unique)]
679interface IConnectionPointContainer : IUnknown {
680  typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER;
681  typedef IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER;
682  HRESULT EnumConnectionPoints ([out] IEnumConnectionPoints **ppEnum);
683  HRESULT FindConnectionPoint ([in] REFIID riid,[out] IConnectionPoint **ppCP);
684}
685[object, uuid (B196B287-BAB4-101a-B69C-00aa00341d07), pointer_default (unique)]
686interface IEnumConnections : IUnknown {
687  typedef IEnumConnections *PENUMCONNECTIONS;
688  typedef IEnumConnections *LPENUMCONNECTIONS;
689  typedef struct tagCONNECTDATA {
690    IUnknown *pUnk;
691    DWORD dwCookie;
692  } CONNECTDATA;
693  typedef struct tagCONNECTDATA *PCONNECTDATA;
694  typedef struct tagCONNECTDATA *LPCONNECTDATA;
695  [local]
696  HRESULT Next ([in] ULONG cConnections, CONNECTDATA *rgcd, ULONG *lpcFetched);
697  [call_as (Next)]
698  HRESULT RemoteNext ([in] ULONG cConnections,[out, size_is (cConnections), length_is (*lpcFetched)] CONNECTDATA *rgcd,[out] ULONG *lpcFetched);
699  HRESULT Skip ([in] ULONG cConnections);
700  HRESULT Reset (void);
701  HRESULT Clone ([out] IEnumConnections **ppEnum);
702}
703[object, uuid (B196B285-BAB4-101a-B69C-00aa00341d07), pointer_default (unique)]
704interface IEnumConnectionPoints : IUnknown {
705  typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS;
706  typedef IEnumConnectionPoints *LPENUMCONNECTIONPOINTS;
707  [local]
708  HRESULT Next ([in] ULONG cConnections, IConnectionPoint **rgpcn, ULONG *lpcFetched);
709  [call_as (Next)]
710  HRESULT RemoteNext ([in] ULONG cConnections,[out, size_is (cConnections), length_is (*lpcFetched)] IConnectionPoint **rgpcn,[out] ULONG *lpcFetched);
711  HRESULT Skip ([in] ULONG cConnections);
712  HRESULT Reset (void);
713  HRESULT Clone ([out] IEnumConnectionPoints **ppEnum);
714}
715#endif
716[object, uuid (00000140-0000-0000-C000-000000000046)]
717
718interface IClassActivator : IUnknown {
719  HRESULT GetClassObject ([in] REFCLSID rclsid,[in] DWORD dwClassContext,[in] LCID locale,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
720}
721
722cpp_quote("#endif")
723
724cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
725[object, uuid (99caf010-415e-11cf-8814-00aa00b569f5), pointer_default (unique)]
726
727interface IFillLockBytes: IUnknown {
728  [local]
729  HRESULT FillAppend ([in, size_is (cb)] void const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
730  [call_as (FillAppend)]
731  HRESULT _stdcall RemoteFillAppend ([in, size_is (cb)] byte const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
732  [local]
733  HRESULT FillAt ([in] ULARGE_INTEGER ulOffset,[in, size_is (cb)] void const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
734  [call_as (FillAt)]
735  HRESULT _stdcall RemoteFillAt ([in] ULARGE_INTEGER ulOffset,[in, size_is (cb)] byte const *pv,[in] ULONG cb,[out] ULONG *pcbWritten);
736  HRESULT SetFillSize ([in] ULARGE_INTEGER ulSize);
737  HRESULT Terminate ([in] BOOL bCanceled);
738}
739
740cpp_quote("#endif")
741
742cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
743[object, uuid (a9d758a0-4617-11cf-95fc-00aa00680db4), pointer_default (unique)]
744
745interface IProgressNotify: IUnknown {
746  HRESULT OnProgress ([in] DWORD dwProgressCurrent,[in] DWORD dwProgressMaximum,[in] BOOL fAccurate,[in] BOOL fOwner);
747}
748
749cpp_quote("#endif")
750
751cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
752[local, object, uuid (0e6d4d90-6738-11cf-9608-00aa00680db4), pointer_default (unique)]
753
754interface ILayoutStorage: IUnknown {
755  typedef struct tagStorageLayout {
756    DWORD LayoutType;
757    OLECHAR *pwcsElementName;
758    LARGE_INTEGER cOffset;
759    LARGE_INTEGER cBytes;
760  } StorageLayout;
761  HRESULT __stdcall LayoutScript ([in] StorageLayout *pStorageLayout,[in] DWORD nEntries,[in] DWORD glfInterleavedFlag);
762  HRESULT __stdcall BeginMonitor (void);
763  HRESULT __stdcall EndMonitor (void);
764  HRESULT __stdcall ReLayoutDocfile ([in] OLECHAR *pwcsNewDfName);
765  HRESULT __stdcall ReLayoutDocfileOnILockBytes ([in] ILockBytes *pILockBytes);
766}
767
768cpp_quote("#endif")
769
770cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
771[object, uuid (30f3d47a-6447-11d1-8e3c-00c04fb9386d)]
772interface IBlockingLock: IUnknown {
773  HRESULT Lock ([in] DWORD dwTimeout);
774  HRESULT Unlock (void);
775}
776[object, uuid (bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)]
777interface ITimeAndNoticeControl: IUnknown {
778  HRESULT SuppressChanges ([in] DWORD res1,[in] DWORD res2);
779}
780[object, uuid (8d19c834-8879-11d1-83e9-00c04fc2c6d4)]
781interface IOplockStorage: IUnknown {
782  HRESULT CreateStorageEx ([in] LPCWSTR pwcsName,[in] DWORD grfMode,[in] DWORD stgfmt,[in] DWORD grfAttrs,[in] REFIID riid,[out, iid_is (riid)] void **ppstgOpen);
783  HRESULT OpenStorageEx ([in] LPCWSTR pwcsName,[in] DWORD grfMode,[in] DWORD stgfmt,[in] DWORD grfAttrs,[in] REFIID riid,[out, iid_is (riid)] void **ppstgOpen);
784}
785
786cpp_quote("#endif")
787
788cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
789[object, uuid (0e6d4d92-6738-11cf-9608-00aa00680db4), pointer_default (unique)]
790
791interface IDirectWriterLock : IUnknown {
792  HRESULT WaitForWriteAccess ([in] DWORD dwTimeout);
793  HRESULT ReleaseWriteAccess ();
794  HRESULT HaveWriteAccess ();
795}
796
797cpp_quote("#endif")
798
799cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
800[object, uuid (00000026-0000-0000-C000-000000000046)]
801interface IUrlMon : IUnknown {
802  HRESULT AsyncGetClassBits ([in] REFCLSID rclsid,[in, unique] LPCWSTR pszTYPE,[in, unique] LPCWSTR pszExt,[in] DWORD dwFileVersionMS,[in] DWORD dwFileVersionLS,[in, unique] LPCWSTR pszCodeBase,[in] IBindCtx *pbc,[in] DWORD dwClassContext,[in] REFIID riid,[in] DWORD flags);
803}
804[local, object, uuid (00000145-0000-0000-C000-000000000046)]
805interface IForegroundTransfer : IUnknown {
806  HRESULT AllowForegroundTransfer ([in] void *lpvReserved);
807}
808[uuid (969dc708-5c76-11d1-8d86-0000f804b057), object]
809interface IThumbnailExtractor : IUnknown {
810  HRESULT ExtractThumbnail ([in] IStorage *pStg,[in] ULONG ulLength,[in] ULONG ulHeight,[out] ULONG *pulOutputLength,[out] ULONG *pulOutputHeight,[out] HBITMAP *phOutputBitmap);
811  HRESULT OnFileUpdated ([in] IStorage *pStg);
812}
813[object, pointer_default (unique), uuid (947990de-cc28-11d2-a0f7-00805f858fb1)]
814interface IDummyHICONIncluder : IUnknown {
815  HRESULT Dummy ([in]HICON h1,[in] HDC h2);
816}
817
818typedef enum tagApplicationType {
819  ServerApplication,
820  LibraryApplication
821} ApplicationType;
822typedef enum tagShutdownType {
823  IdleShutdown,
824  ForcedShutdown
825} ShutdownType;
826[object, local, uuid (000001d5-0000-0000-C000-000000000046), pointer_default (unique)]
827interface IProcessLock : IUnknown {
828  ULONG AddRefOnProcess ();
829  ULONG ReleaseRefOnProcess ();
830}
831[object, local, uuid (000001d4-0000-0000-C000-000000000046), pointer_default (unique)]
832interface ISurrogateService : IUnknown {
833  HRESULT Init ([in] REFGUID rguidProcessID,[in] IProcessLock *pProcessLock,[out] BOOL *pfApplicationAware);
834  HRESULT ApplicationLaunch ([in] REFGUID rguidApplID,[in] ApplicationType appType);
835  HRESULT ApplicationFree ([in] REFGUID rguidApplID);
836  HRESULT CatalogRefresh ([in] ULONG ulReserved);
837  HRESULT ProcessShutdown ([in] ShutdownType shutdownType);
838}
839
840[local, object, uuid (00000034-0000-0000-C000-000000000046), pointer_default (unique)]
841interface IInitializeSpy : IUnknown {
842  typedef [unique] IInitializeSpy *LPINITIALIZESPY;
843  HRESULT PreInitialize ([in] DWORD dwCoInit,[in] DWORD dwCurThreadAptRefs);
844  HRESULT PostInitialize ([in] HRESULT hrCoInit,[in] DWORD dwCoInit,[in] DWORD dwNewThreadAptRefs);
845  HRESULT PreUninitialize ([in] DWORD dwCurThreadAptRefs);
846  HRESULT PostUninitialize ([in] DWORD dwNewThreadAptRefs);
847};
848cpp_quote("#endif")
849
850cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
851[local, object, uuid (A2F05A09-27a2-42b5-BC0E-AC163EF49D9B), pointer_default (unique)]
852interface IApartmentShutdown : IUnknown {
853  void OnUninitialize ([in] UINT64 ui64ApartmentIdentifier);
854}
855
856cpp_quote("#endif")
857