Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

404 lines
12 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992-2001.
  5. //
  6. // File: fusenet.idl
  7. //
  8. // Contents: Fusion Installer Interfaces
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. //
  15. //----------------------------------------------------------------------------
  16. cpp_quote("//=--------------------------------------------------------------------------=")
  17. cpp_quote("// fusenet.h")
  18. cpp_quote("//=--------------------------------------------------------------------------=")
  19. cpp_quote("// (C) Copyright 1995-2001 Microsoft Corporation. All Rights Reserved.")
  20. cpp_quote("//")
  21. cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
  22. cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
  23. cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
  24. cpp_quote("// PARTICULAR PURPOSE.")
  25. cpp_quote("//=--------------------------------------------------------------------------=")
  26. cpp_quote("")
  27. cpp_quote("#pragma comment(lib,\"uuid.lib\")")
  28. cpp_quote("")
  29. cpp_quote("//---------------------------------------------------------------------------=")
  30. cpp_quote("// Fusenet Interfaces.")
  31. cpp_quote("")
  32. import "objidl.idl";
  33. import "oleidl.idl";
  34. //import "bgcopy.idl";
  35. import "bits.idl";
  36. interface IAssemblyIdentity;
  37. interface IAssemblyManifestImport;
  38. interface IAssemblyCacheImport;
  39. interface IAssemblyCacheEmit;
  40. interface IAssemblyDownload;
  41. cpp_quote("EXTERN_C const IID IID_IAssemblyFileInfo;")
  42. cpp_quote("EXTERN_C const IID IID_IAssemblyIdentity;")
  43. cpp_quote("EXTERN_C const IID IID_IAssemblyManifestImport;")
  44. cpp_quote("EXTERN_C const IID IID_IAssemblyCacheImport;")
  45. cpp_quote("EXTERN_C const IID IID_IAssemblyCacheEmit;")
  46. cpp_quote("EXTERN_C const IID IID_IAssemblyDownload;")
  47. cpp_quote("EXTERN_C const IID IID_IManifestApplicationInfo;")
  48. cpp_quote("EXTERN_C const IID IID_IDependentAssemblyInfo;")
  49. ///////////////////////////////////////////////////////////////////////////////
  50. //
  51. // IAssemblyFileInfo
  52. //
  53. ///////////////////////////////////////////////////////////////////////////////
  54. [
  55. local,
  56. object,
  57. uuid(66f171ea-bd29-4936-b391-4225c6d7361a),
  58. pointer_default(unique)
  59. ]
  60. interface IAssemblyFileInfo: IUnknown
  61. {
  62. typedef [unique] IAssemblyFileInfo *LPASSEMBLY_FILE_INFO;
  63. typedef enum
  64. {
  65. ASM_FILE_NAME = 0,
  66. ASM_FILE_HASH,
  67. ASM_FILE_SIZE,
  68. ASM_FILE_MAX
  69. } ASM_FILE;
  70. HRESULT Set(
  71. [in] DWORD dwPropertyId,
  72. [in] LPCOLESTR pwzProperty);
  73. HRESULT Get(
  74. [in] DWORD dwPropertyId,
  75. [out] LPOLESTR *ppwzProperty,
  76. [out] LPDWORD pccProperty);
  77. }
  78. ///////////////////////////////////////////////////////////////////////////////
  79. //
  80. // IAssemblyIdentity
  81. //
  82. ///////////////////////////////////////////////////////////////////////////////
  83. [
  84. local,
  85. object,
  86. uuid(aaa1257d-a56c-4383-9b4a-c868eda7ca42),
  87. pointer_default(unique)
  88. ]
  89. interface IAssemblyIdentity: IUnknown
  90. {
  91. typedef [unique] IAssemblyIdentity *LPASSEMBLY_IDENTITY;
  92. typedef enum
  93. {
  94. ASMID_DISPLAYNAME_NOMANGLING= 0,
  95. ASMID_DISPLAYNAME_WILDCARDED,
  96. ASMID_DISPLAYNAME_MAX
  97. } ASMID_DISPLAYNAME_FLAGS;
  98. HRESULT SetAttribute(
  99. [in] LPCOLESTR pwzName,
  100. [in] LPCOLESTR pwzValue,
  101. [in] DWORD ccValue);
  102. HRESULT GetAttribute(
  103. [in] LPCOLESTR pwzName,
  104. [out] LPOLESTR *ppwzValue,
  105. [out] LPDWORD pccValue);
  106. HRESULT GetDisplayName(
  107. [in] DWORD dwFlags,
  108. [out] LPOLESTR *ppwzDisplayName,
  109. [out] LPDWORD pccDisplayName);
  110. HRESULT IsEqual(
  111. [in] IAssemblyIdentity *pAssemblyId);
  112. }
  113. ///////////////////////////////////////////////////////////////////////////////
  114. //
  115. // IManifestApplicationInfo
  116. //
  117. ///////////////////////////////////////////////////////////////////////////////
  118. [
  119. local,
  120. object,
  121. uuid(1367877f-be85-40ab-b16c-44b9c23b1819),
  122. pointer_default(unique)
  123. ]
  124. interface IManifestApplicationInfo: IUnknown
  125. {
  126. typedef [unique] IManifestApplicationInfo *LPMANIFEST_APPLICATION_INFO;
  127. typedef enum
  128. {
  129. MAN_APPLICATION_FRIENDLYNAME= 0,
  130. MAN_APPLICATION_ENTRYPOINT,
  131. MAN_APPLICATION_ENTRYIMAGETYPE,
  132. MAN_APPLICATION_ICONFILE,
  133. MAN_APPLICATION_ICONINDEX,
  134. MAN_APPLICATION_SHOWCOMMAND,
  135. MAN_APPLICATION_HOTKEY,
  136. MAN_APPLICATION_MAX
  137. } MAN_APPLICATION;
  138. HRESULT Set(
  139. [in] DWORD dwPropertyId,
  140. [in] LPCOLESTR pwzProperty);
  141. HRESULT Get(
  142. [in] DWORD dwPropertyId,
  143. [out] LPOLESTR *ppwzProperty,
  144. [out] LPDWORD pccProperty);
  145. }
  146. ///////////////////////////////////////////////////////////////////////////////
  147. //
  148. // IDependentAssemblyInfo
  149. //
  150. ///////////////////////////////////////////////////////////////////////////////
  151. [
  152. local,
  153. object,
  154. uuid(c9629878-461a-451b-a032-eaca1cb5383a),
  155. pointer_default(unique)
  156. ]
  157. interface IDependentAssemblyInfo: IUnknown
  158. {
  159. typedef [unique] IDependentAssemblyInfo *LPDEPENDENT_ASSEMBLY_INFO;
  160. typedef enum
  161. {
  162. DEPENDENT_ASM_CODEBASE= 0,
  163. DEPENDENT_ASM_MAX
  164. } DEPENDENT_ASM;
  165. HRESULT SetAssemblyIdentity(
  166. [in] LPASSEMBLY_IDENTITY pAssemblyId);
  167. HRESULT GetAssemblyIdentity(
  168. [out] LPASSEMBLY_IDENTITY *ppAssemblyId);
  169. HRESULT Set(
  170. [in] DWORD dwPropertyId,
  171. [in] LPCOLESTR pwzProperty);
  172. HRESULT Get(
  173. [in] DWORD dwPropertyId,
  174. [out] LPOLESTR *ppwzProperty,
  175. [out] LPDWORD pccProperty);
  176. }
  177. ///////////////////////////////////////////////////////////////////////////////
  178. //
  179. // IAssemblyManifestImport
  180. //
  181. ///////////////////////////////////////////////////////////////////////////////
  182. [
  183. local,
  184. object,
  185. uuid(696fb37f-da64-4175-94e7-fdc8234539c4),
  186. pointer_default(unique)
  187. ]
  188. interface IAssemblyManifestImport: IUnknown
  189. {
  190. typedef [unique] IAssemblyManifestImport *LPASSEMBLY_MANIFEST_IMPORT;
  191. typedef enum
  192. {
  193. MANIFEST_TYPE_UNKNOWN= 0,
  194. MANIFEST_TYPE_DESKTOP,
  195. MANIFEST_TYPE_SUBSCRIPTION,
  196. MANIFEST_TYPE_APPLICATION,
  197. MANIFEST_TYPE_MAX
  198. } MANIFEST_TYPE;
  199. HRESULT GetAssemblyIdentity(
  200. [out] IAssemblyIdentity **ppAssemblyId);
  201. HRESULT GetManifestApplicationInfo(
  202. [out] IManifestApplicationInfo **ppAppInfo);
  203. HRESULT GetPollingInterval(
  204. [out] DWORD *pollingInterval);
  205. HRESULT GetNextFile(
  206. [in] DWORD nIndex,
  207. [out] IAssemblyFileInfo **ppAssemblyFile);
  208. HRESULT QueryFile(
  209. [in] LPCOLESTR pwzFileName,
  210. [out] IAssemblyFileInfo **ppAssemblyFile);
  211. HRESULT GetNextAssembly(
  212. [in] DWORD nIndex,
  213. [out] IDependentAssemblyInfo **ppDependAsm);
  214. HRESULT GetNextPatchAssemblyId(
  215. [in] DWORD nIndex,
  216. [out] LPASSEMBLY_IDENTITY *ppAssemblyId);
  217. HRESULT GetTargetPatchMapping(
  218. [out] LPWSTR pwzTarget,
  219. [out] LPWSTR *ppwzSource,
  220. [out] LPWSTR *ppwzPatchFile);
  221. HRESULT GetPatchFilePatchMapping(
  222. [out] LPWSTR pwzPatchFile,
  223. [out] LPWSTR *ppwzSource,
  224. [out] LPWSTR *ppwzTarget);
  225. HRESULT SetPatchAssemblyNode(
  226. [in] DWORD nIndex);
  227. HRESULT IsCABbed(
  228. [out] LPWSTR *ppwzCabName);
  229. HRESULT ReportManifestType(
  230. [out] DWORD *pdwType);
  231. }
  232. ///////////////////////////////////////////////////////////////////////////////
  233. //
  234. // IAssemblyCacheImport
  235. //
  236. ///////////////////////////////////////////////////////////////////////////////
  237. [
  238. local,
  239. object,
  240. uuid(c920b164-33e0-4c61-b595-eca4cdb04f12),
  241. pointer_default(unique)
  242. ]
  243. interface IAssemblyCacheImport: IUnknown
  244. {
  245. typedef [unique] IAssemblyCacheImport *LPASSEMBLY_CACHE_IMPORT;
  246. typedef enum
  247. {
  248. CACHEIMP_CREATE_NULL= 0,
  249. CACHEIMP_CREATE_RETRIEVE_EXIST,
  250. CACHEIMP_CREATE_RETRIEVE_EXIST_COMPLETED,
  251. CACHEIMP_CREATE_RETRIEVE_MAX_COMPLETED,
  252. CACHEIMP_CREATE_RESOLVE_REF,
  253. CACHEIMP_CREATE_RESOLVE_REF_EX,
  254. CACHEIMP_CREATE_MAX,
  255. } CACHEIMP_CREATE_FLAGS;
  256. HRESULT GetManifestImport(
  257. [out] IAssemblyManifestImport **ppManifestImport);
  258. HRESULT GetManifestFilePath(
  259. [out] LPOLESTR *ppwzFilePath,
  260. [in, out] LPDWORD pccFilePath);
  261. HRESULT GetManifestFileDir(
  262. [out] LPOLESTR *ppwzFileDir,
  263. [in, out] LPDWORD pccFileDir);
  264. HRESULT GetDisplayName(
  265. [out] LPOLESTR *ppwzDisplayName,
  266. [in, out] LPDWORD pccDisplayName);
  267. HRESULT FindExistMatching(
  268. [in] LPASSEMBLY_FILE_INFO pAssemblyFileInfo,
  269. [out] LPOLESTR *ppwzPath);
  270. }
  271. ///////////////////////////////////////////////////////////////////////////////
  272. //
  273. // IAssemblyCacheEmit
  274. //
  275. ///////////////////////////////////////////////////////////////////////////////
  276. [
  277. local,
  278. object,
  279. uuid(83d6b9ac-eff9-45a3-8361-7c41df1f9f85),
  280. pointer_default(unique)
  281. ]
  282. interface IAssemblyCacheEmit: IUnknown
  283. {
  284. typedef [unique] IAssemblyCacheEmit *LPASSEMBLY_CACHE_EMIT;
  285. HRESULT GetManifestImport(
  286. [out] IAssemblyManifestImport **ppManifestImport);
  287. HRESULT GetManifestFilePath(
  288. [out] LPOLESTR *ppwzFilePath,
  289. [in, out] LPDWORD pccFilePath);
  290. HRESULT GetManifestFileDir(
  291. [out] LPOLESTR *ppwzFilePath,
  292. [in, out] LPDWORD pccFilePath);
  293. HRESULT GetDisplayName(
  294. [out] LPOLESTR *ppwzDisplayName,
  295. [in, out] LPDWORD pccDisplayName);
  296. HRESULT CopyFile(
  297. [in] LPOLESTR pwzSourceFilePath,
  298. [in] LPOLESTR pwzFileName,
  299. [in] DWORD dwFlags);
  300. HRESULT Commit(
  301. [in] DWORD dwFlags);
  302. }
  303. ///////////////////////////////////////////////////////////////////////////////
  304. //
  305. // IAssemblyDownload
  306. //
  307. ///////////////////////////////////////////////////////////////////////////////
  308. [
  309. local,
  310. object,
  311. uuid(8a249b36-6132-4238-8871-a267029382a8),
  312. pointer_default(unique)
  313. ]
  314. interface IAssemblyDownload: IBackgroundCopyCallback
  315. {
  316. typedef [unique] IAssemblyDownload *LPASSEMBLY_DOWNLOAD;
  317. typedef enum
  318. {
  319. DOWNLOAD_FLAGS_NO_NOTIFICATION = 0x0,
  320. DOWNLOAD_FLAGS_PROGRESS_UI = 0x1,
  321. DOWNLOAD_FLAGS_NOTIFY_COMPLETION =0x2
  322. } ASM_DOWNLOAD;
  323. HRESULT DownloadManifestAndDependencies(
  324. [in] LPWSTR pwzApplicationManifestUrl, HANDLE hNamedEvent, DWORD dwFlags);
  325. }
  326. #pragma midl_echo("STDAPI CreateAssemblyFileInfo(IAssemblyFileInfo** ppFile);")
  327. #pragma midl_echo("STDAPI CreateAssemblyIdentity(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags);")
  328. #pragma midl_echo("STDAPI CreateAssemblyIdentityEx(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags, LPWSTR wzDisplayName);")
  329. #pragma midl_echo("STDAPI CloneAssemblyIdentity(LPASSEMBLY_IDENTITY pSrcAssemblyId, LPASSEMBLY_IDENTITY *ppDestAssemblyId);")
  330. #pragma midl_echo("STDAPI CreateAssemblyManifestImport(LPASSEMBLY_MANIFEST_IMPORT *ppAssemblyManifestImport, LPCOLESTR szPath);")
  331. #pragma midl_echo("STDAPI CreateAssemblyCacheImport(LPASSEMBLY_CACHE_IMPORT *ppAssemblyCacheImport, LPASSEMBLY_IDENTITY pAssemblyIdentity, DWORD dwFlags);")
  332. #pragma midl_echo("STDAPI CreateAssemblyCacheEmit(LPASSEMBLY_CACHE_EMIT *ppAssemblyCacheEmit, LPASSEMBLY_CACHE_EMIT pAssemblyCacheEmit, DWORD dwFlags);")
  333. #pragma midl_echo("STDAPI CreateAssemblyDownload(IAssemblyDownload** ppDownload);")
  334. #pragma midl_echo("STDAPI CreateManifestApplicationInfo(LPMANIFEST_APPLICATION_INFO* ppManifestApplicationInfo);")
  335. #pragma midl_echo("STDAPI CreateDependentAssemblyInfo(LPDEPENDENT_ASSEMBLY_INFO* ppDependentAssemblyInfo);")