objidl.idl 33 KB

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