629 lines
19 KiB
Plaintext
629 lines
19 KiB
Plaintext
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1992-2001.
|
||
|
//
|
||
|
// File: fusenet.idl
|
||
|
//
|
||
|
// Contents: Fusion Installer Interfaces
|
||
|
//
|
||
|
// Classes:
|
||
|
//
|
||
|
// Functions:
|
||
|
//
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
||
|
cpp_quote("// fusenet.h")
|
||
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
||
|
cpp_quote("// (C) Copyright 1995-2001 Microsoft Corporation. All Rights Reserved.")
|
||
|
cpp_quote("//")
|
||
|
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
|
||
|
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
|
||
|
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
|
||
|
cpp_quote("// PARTICULAR PURPOSE.")
|
||
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
||
|
cpp_quote("")
|
||
|
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
|
||
|
cpp_quote("")
|
||
|
cpp_quote("//---------------------------------------------------------------------------=")
|
||
|
cpp_quote("// Fusenet Interfaces.")
|
||
|
cpp_quote("")
|
||
|
|
||
|
import "objidl.idl";
|
||
|
import "oleidl.idl";
|
||
|
//import "bgcopy.idl";
|
||
|
import "bits.idl";
|
||
|
|
||
|
cpp_quote("class CDebugLog;")
|
||
|
|
||
|
interface IAssemblyIdentity;
|
||
|
interface IAssemblyManifestImport;
|
||
|
interface IAssemblyCacheImport;
|
||
|
interface IAssemblyCacheEmit;
|
||
|
interface IAssemblyDownload;
|
||
|
|
||
|
cpp_quote("#include <fusion.h>")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyIdentity;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyManifestImport;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyManifestEmit;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheImport;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheEmit;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyCacheEnum;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IAssemblyDownload;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IManifestInfo;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IManifestData;")
|
||
|
cpp_quote("EXTERN_C const IID IID_IPatchingInfo;")
|
||
|
|
||
|
cpp_quote("#define DEVMODE // define devMode - devSync")
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyIdentity
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(aaa1257d-a56c-4383-9b4a-c868eda7ca42),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyIdentity: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyIdentity *LPASSEMBLY_IDENTITY;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
ASMID_DISPLAYNAME_NOMANGLING= 0,
|
||
|
ASMID_DISPLAYNAME_WILDCARDED,
|
||
|
ASMID_DISPLAYNAME_MAX
|
||
|
} ASMID_DISPLAYNAME_FLAGS;
|
||
|
|
||
|
HRESULT SetAttribute(
|
||
|
[in] LPCOLESTR pwzName,
|
||
|
[in] LPCOLESTR pwzValue,
|
||
|
[in] DWORD ccValue);
|
||
|
|
||
|
HRESULT GetAttribute(
|
||
|
[in] LPCOLESTR pwzName,
|
||
|
[out] LPOLESTR *ppwzValue,
|
||
|
[out] LPDWORD pccValue);
|
||
|
|
||
|
HRESULT GetDisplayName(
|
||
|
[in] DWORD dwFlags,
|
||
|
[out] LPOLESTR *ppwzDisplayName,
|
||
|
[out] LPDWORD pccDisplayName);
|
||
|
|
||
|
|
||
|
HRESULT GetCLRDisplayName(
|
||
|
[in] DWORD dwFlags,
|
||
|
[out] LPOLESTR *ppwzDisplayName,
|
||
|
[out] LPDWORD pccDisplayName);
|
||
|
|
||
|
|
||
|
HRESULT IsEqual(
|
||
|
[in] IAssemblyIdentity *pAssemblyId);
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IManifestInfo
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(b9309cc3-e522-4d58-b5c7-dee5b1763114),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IManifestInfo: IUnknown
|
||
|
{
|
||
|
typedef [unique] IManifestInfo *LPMANIFEST_INFO;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_ASM_FILE_NAME=0,
|
||
|
MAN_INFO_ASM_FILE_HASH,
|
||
|
MAN_INFO_ASM_FILE_SIZE,
|
||
|
MAN_INFO_ASM_FILE_MAX
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_APPLICATION_FRIENDLYNAME=0,
|
||
|
MAN_INFO_APPLICATION_ENTRYPOINT,
|
||
|
MAN_INFO_APPLICATION_ENTRYIMAGETYPE,
|
||
|
MAN_INFO_APPLICATION_ICONFILE,
|
||
|
MAN_INFO_APPLICATION_ICONINDEX,
|
||
|
MAN_INFO_APPLICATION_SHOWCOMMAND,
|
||
|
MAN_INFO_APPLICATION_HOTKEY,
|
||
|
MAN_INFO_APPLICATION_ASSEMBLYNAME,
|
||
|
MAN_INFO_APPLICATION_ASSEMBLYCLASS,
|
||
|
MAN_INFO_APPLICATION_ASSEMBLYMETHOD,
|
||
|
MAN_INFO_APPLICATION_ASSEMBLYARGS,
|
||
|
MAN_INFO_APPLICATION_MAX
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_SUBSCRIPTION_SYNCHRONIZE_INTERVAL=0,
|
||
|
MAN_INFO_SUBSCRIPTION_INTERVAL_UNIT,
|
||
|
MAN_INFO_SUBSCRIPTION_SYNCHRONIZE_EVENT,
|
||
|
MAN_INFO_SUBSCRIPTION_EVENT_DEMAND_CONNECTION,
|
||
|
MAN_INFO_SUBSCRIPTION_MAX
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_DEPENDENT_ASM_CODEBASE=0,
|
||
|
MAN_INFO_DEPENDENT_ASM_TYPE,
|
||
|
MAN_INFO_DEPENDENT_ASM_ID,
|
||
|
MAN_INFO_DEPENDANT_ASM_MAX
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_SOURCE_ASM_ID=0,
|
||
|
MAN_INFO_SOURCE_ASM_PATCH_UTIL,
|
||
|
MAN_INFO_SOURCE_ASM_DIR,
|
||
|
MAN_INFO_SOURCE_ASM_INSTALL_DIR,
|
||
|
MAN_INFO_SOURCE_ASM_TEMP_DIR,
|
||
|
MAN_INFO_SOURCE_ASM_MAX
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MAN_INFO_PATCH_INFO_SOURCE=0,
|
||
|
MAN_INFO_PATCH_INFO_TARGET,
|
||
|
MAN_INFO_PATCH_INFO_PATCH,
|
||
|
MAN_INFO_PATCH_INFO_MAX
|
||
|
};
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MAN_INFO_FILE=0,
|
||
|
MAN_INFO_APPLICATION,
|
||
|
MAN_INFO_SUBSCRIPTION,
|
||
|
MAN_INFO_DEPENDTANT_ASM,
|
||
|
MAN_INFO_SOURCE_ASM,
|
||
|
MAN_INFO_PATCH_INFO,
|
||
|
MAN_INFO_MAX
|
||
|
} MAN_INFO;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MAN_INFO_FLAG_UNDEF=0,
|
||
|
MAN_INFO_FLAG_IUNKNOWN_PTR,
|
||
|
MAN_INFO_FLAG_LPWSTR,
|
||
|
MAN_INFO_FLAG_DWORD,
|
||
|
MAN_INFO_FLAG_ENUM,
|
||
|
MAN_INFO_FLAG_BOOL,
|
||
|
MAN_INFO_FLAG_MAX
|
||
|
} MAN_INFO_FLAGS;
|
||
|
|
||
|
enum {MAX_MAN_INFO_PROPERTIES=MAN_INFO_APPLICATION_MAX};
|
||
|
|
||
|
HRESULT Set(
|
||
|
[in] DWORD PropertyId,
|
||
|
[in] LPVOID pvProperty,
|
||
|
[in] DWORD cbProperty,
|
||
|
[in] DWORD type);
|
||
|
|
||
|
HRESULT Get(
|
||
|
[in] DWORD dwPropertyId,
|
||
|
[out] LPVOID *pvProperty,
|
||
|
[out] DWORD *pcbProperty,
|
||
|
[out] DWORD *pType);
|
||
|
|
||
|
HRESULT IsEqual(
|
||
|
[in] IManifestInfo *pManifestInfo);
|
||
|
|
||
|
HRESULT GetType(
|
||
|
[out] DWORD *pdwType);
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IManifestData
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(8a423759-b438-4fdd-92cd-e09fed4830ef),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IManifestData: IUnknown
|
||
|
{
|
||
|
typedef [unique] IManifestData *LPMANIFEST_DATA;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MAN_DATA_TYPE_UNDEF=0,
|
||
|
MAN_DATA_TYPE_LPWSTR,
|
||
|
MAN_DATA_TYPE_DWORD,
|
||
|
MAN_DATA_TYPE_ENUM,
|
||
|
MAN_DATA_TYPE_BOOL,
|
||
|
MAN_DATA_TYPE_IUNKNOWN_PTR,
|
||
|
MAN_DATA_TYPE_MAX
|
||
|
} MAN_DATA_TYPES;
|
||
|
|
||
|
HRESULT Set(
|
||
|
[in] LPCWSTR pwzPropertyId,
|
||
|
[in] LPVOID pvProperty,
|
||
|
[in] DWORD cbProperty,
|
||
|
[in] DWORD dwType);
|
||
|
|
||
|
HRESULT Get(
|
||
|
[in] LPCWSTR pwzPropertyId,
|
||
|
[out] LPVOID *ppvProperty,
|
||
|
[out] DWORD *pcbProperty,
|
||
|
[out] DWORD *pdwType);
|
||
|
|
||
|
HRESULT GetType(
|
||
|
[out] LPWSTR *ppwzType);
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IPatchingUtil
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(e460c1ba-e601-48e4-a926-fea8033ab199),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IPatchingUtil: IUnknown
|
||
|
{
|
||
|
typedef [unique] IPatchingUtil *LPPATCHING_INTERFACE;
|
||
|
|
||
|
HRESULT MatchTarget(
|
||
|
[in] LPWSTR pwzTarget,
|
||
|
[out] IManifestInfo **ppPatchInfo);
|
||
|
|
||
|
HRESULT MatchPatch(
|
||
|
[in] LPWSTR pwzPatch,
|
||
|
[out] IManifestInfo **ppPatchInfo);
|
||
|
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyManifestImport
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(696fb37f-da64-4175-94e7-fdc8234539c4),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyManifestImport: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyManifestImport *LPASSEMBLY_MANIFEST_IMPORT;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MANIFEST_TYPE_UNKNOWN= 0,
|
||
|
MANIFEST_TYPE_DESKTOP,
|
||
|
MANIFEST_TYPE_SUBSCRIPTION,
|
||
|
MANIFEST_TYPE_APPLICATION,
|
||
|
MANIFEST_TYPE_COMPONENT,
|
||
|
MANIFEST_TYPE_CONTAINER,
|
||
|
MANIFEST_TYPE_MAX
|
||
|
} MANIFEST_TYPE;
|
||
|
|
||
|
// dependent asm info enum
|
||
|
typedef enum
|
||
|
{
|
||
|
DEPENDENT_ASM_INSTALL_TYPE_NORMAL= 0, //default
|
||
|
DEPENDENT_ASM_INSTALL_TYPE_REQUIRED,
|
||
|
DEPENDENT_ASM_INSTALL_TYPE_DEVSYNC,
|
||
|
DEPENDENT_ASM_INSTALL_TYPE_MAX
|
||
|
} DEPENDENT_ASM_INSTALL_TYPE;
|
||
|
|
||
|
// subscription info enums
|
||
|
typedef enum
|
||
|
{
|
||
|
SUBSCRIPTION_INTERVAL_UNIT_HOURS= 0, //default
|
||
|
SUBSCRIPTION_INTERVAL_UNIT_MINUTES,
|
||
|
SUBSCRIPTION_INTERVAL_UNIT_DAYS,
|
||
|
SUBSCRIPTION_INTERVAL_UNIT_MAX
|
||
|
} SUBSCRIPTION_INTERVAL_UNIT;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
SUBSCRIPTION_SYNC_EVENT_NONE= 0, //default
|
||
|
SUBSCRIPTION_SYNC_EVENT_ON_APP_STARTUP,
|
||
|
SUBSCRIPTION_SYNC_EVENT_MAX
|
||
|
} SUBSCRIPTION_SYNC_EVENT;
|
||
|
|
||
|
HRESULT GetAssemblyIdentity(
|
||
|
[out] IAssemblyIdentity **ppAssemblyId);
|
||
|
|
||
|
HRESULT GetManifestApplicationInfo(
|
||
|
[out] IManifestInfo **ppAppInfo);
|
||
|
|
||
|
HRESULT GetSubscriptionInfo(
|
||
|
[out] IManifestInfo **ppSubsInfo);
|
||
|
|
||
|
HRESULT GetNextPlatform(
|
||
|
[in] DWORD nIndex,
|
||
|
[out] IManifestData **ppPlatformInfo);
|
||
|
|
||
|
HRESULT GetNextFile(
|
||
|
[in] DWORD nIndex,
|
||
|
[out] IManifestInfo **ppAssemblyFile);
|
||
|
|
||
|
HRESULT QueryFile(
|
||
|
[in] LPCOLESTR pwzFileName,
|
||
|
[out] IManifestInfo **ppAssemblyFile);
|
||
|
|
||
|
HRESULT GetNextAssembly(
|
||
|
[in] DWORD nIndex,
|
||
|
[out] IManifestInfo**ppDependAsm);
|
||
|
|
||
|
HRESULT ReportManifestType(
|
||
|
[out] DWORD *pdwType);
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyManifestEmit
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(f022ef5f-61dc-489b-b321-4d6f2b910890),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyManifestEmit: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyManifestEmit *LPASSEMBLY_MANIFEST_EMIT;
|
||
|
|
||
|
HRESULT ImportManifestInfo(
|
||
|
[in] LPASSEMBLY_MANIFEST_IMPORT pManImport);
|
||
|
|
||
|
HRESULT SetDependencySubscription(
|
||
|
[in] LPASSEMBLY_MANIFEST_IMPORT pManImport,
|
||
|
[in] LPWSTR pwzManifestUrl);
|
||
|
|
||
|
HRESULT Commit();
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyCacheImport
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(c920b164-33e0-4c61-b595-eca4cdb04f12),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyCacheImport: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyCacheImport *LPASSEMBLY_CACHE_IMPORT;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
CACHEIMP_CREATE_NULL= 0,
|
||
|
CACHEIMP_CREATE_RETRIEVE,
|
||
|
CACHEIMP_CREATE_RETRIEVE_MAX,
|
||
|
CACHEIMP_CREATE_RESOLVE_REF,
|
||
|
CACHEIMP_CREATE_RESOLVE_REF_EX,
|
||
|
CACHEIMP_CREATE_MAX,
|
||
|
} CACHEIMP_CREATE_FLAGS;
|
||
|
|
||
|
|
||
|
HRESULT GetManifestImport(
|
||
|
[out] IAssemblyManifestImport **ppManifestImport);
|
||
|
|
||
|
HRESULT GetManifestFilePath(
|
||
|
[out] LPOLESTR *ppwzFilePath,
|
||
|
[in, out] LPDWORD pccFilePath);
|
||
|
|
||
|
HRESULT GetManifestFileDir(
|
||
|
[out] LPOLESTR *ppwzFileDir,
|
||
|
[in, out] LPDWORD pccFileDir);
|
||
|
|
||
|
HRESULT GetAssemblyIdentity(
|
||
|
[out] IAssemblyIdentity **ppAssemblyId);
|
||
|
|
||
|
HRESULT GetDisplayName(
|
||
|
[out] LPOLESTR *ppwzDisplayName,
|
||
|
[in, out] LPDWORD pccDisplayName);
|
||
|
|
||
|
HRESULT FindExistMatching(
|
||
|
[in] IManifestInfo *pAssemblyFileInfo,
|
||
|
[out] LPOLESTR *ppwzPath);
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyCacheEmit
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(83d6b9ac-eff9-45a3-8361-7c41df1f9f85),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyCacheEmit: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyCacheEmit *LPASSEMBLY_CACHE_EMIT;
|
||
|
|
||
|
|
||
|
HRESULT GetManifestImport(
|
||
|
[out] IAssemblyManifestImport **ppManifestImport);
|
||
|
|
||
|
HRESULT GetManifestFilePath(
|
||
|
[out] LPOLESTR *ppwzFilePath,
|
||
|
[in, out] LPDWORD pccFilePath);
|
||
|
|
||
|
HRESULT GetManifestFileDir(
|
||
|
[out] LPOLESTR *ppwzFilePath,
|
||
|
[in, out] LPDWORD pccFilePath);
|
||
|
|
||
|
HRESULT GetDisplayName(
|
||
|
[out] LPOLESTR *ppwzDisplayName,
|
||
|
[in, out] LPDWORD pccDisplayName);
|
||
|
|
||
|
HRESULT GetAssemblyIdentity(
|
||
|
[out] IAssemblyIdentity **ppAssemblyId);
|
||
|
|
||
|
HRESULT CopyFile(
|
||
|
[in] LPOLESTR pwzSourceFilePath,
|
||
|
[in] LPOLESTR pwzFileName,
|
||
|
[in] DWORD dwFlags);
|
||
|
|
||
|
HRESULT Commit(
|
||
|
[in] DWORD dwFlags);
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyCacheEnum
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(48a5b677-f800-494f-b19b-795d30699385),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyCacheEnum: IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyCacheEnum *LPASSEMBLY_CACHE_ENUM;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
CACHEENUM_RETRIEVE_ALL= 0,
|
||
|
CACHEENUM_RETRIEVE_VISIBLE,
|
||
|
CACHEENUM_RETRIEVE_MAX,
|
||
|
} CACHEENUM_RETRIEVE_FLAGS;
|
||
|
|
||
|
HRESULT GetNext(
|
||
|
[out] IAssemblyCacheImport** ppAsmCache);
|
||
|
|
||
|
HRESULT Reset();
|
||
|
|
||
|
HRESULT GetCount(
|
||
|
[out] LPDWORD pdwCount);
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyBindSink
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(af0bc960-0b9a-11d3-95ca-00a024a85b51),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyBindSink : IUnknown
|
||
|
{
|
||
|
typedef [unique] IAssemblyBindSink *LPASSEMBLY_BIND_SINK;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
ASM_NOTIFICATION_START,
|
||
|
ASM_NOTIFICATION_PROGRESS,
|
||
|
ASM_NOTIFICATION_ABORT,
|
||
|
ASM_NOTIFICATION_ERROR,
|
||
|
ASM_NOTIFICATION_SUBSCRIPTION_MANIFEST,
|
||
|
ASM_NOTIFICATION_APPLICATION_MANIFEST,
|
||
|
ASM_NOTIFICATION_DONE
|
||
|
} ASM_NOTIFICATION;
|
||
|
|
||
|
|
||
|
HRESULT OnProgress(
|
||
|
[in] DWORD dwNotification,
|
||
|
[in] HRESULT hrNotification,
|
||
|
[in] LPCWSTR szNotification,
|
||
|
[in] DWORD dwProgress,
|
||
|
[in] DWORD dwProgressMax,
|
||
|
[in] IUnknown *pUnk);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
cpp_quote("#ifdef DEVMODE")
|
||
|
cpp_quote("#define DOWNLOAD_DEVMODE 0x10")
|
||
|
cpp_quote("#endif")
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// IAssemblyDownload
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(8a249b36-6132-4238-8871-a267029382a8),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IAssemblyDownload: IBackgroundCopyCallback
|
||
|
{
|
||
|
typedef [unique] IAssemblyDownload *LPASSEMBLY_DOWNLOAD;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
DOWNLOAD_FLAGS_NO_NOTIFICATION = 0x0,
|
||
|
DOWNLOAD_FLAGS_PROGRESS_UI = 0x1,
|
||
|
DOWNLOAD_FLAGS_NOTIFY_BINDSINK =0x2
|
||
|
} ASM_DOWNLOAD;
|
||
|
|
||
|
HRESULT DownloadManifestAndDependencies(
|
||
|
[in] LPWSTR pwzApplicationManifestUrl,
|
||
|
[in] IAssemblyBindSink *pBindSink,
|
||
|
[in] DWORD dwFlags);
|
||
|
|
||
|
HRESULT CancelDownload();
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Platform detection APIs
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
LPWSTR pwzName;
|
||
|
LPWSTR pwzURL;
|
||
|
} TPLATFORM_INFO;
|
||
|
typedef TPLATFORM_INFO* LPTPLATFORM_INFO;
|
||
|
|
||
|
#pragma midl_echo("STDAPI CheckPlatformRequirements(LPASSEMBLY_MANIFEST_IMPORT pManifestImport, LPDWORD pdwNumMissingPlatforms, LPTPLATFORM_INFO* pptPlatform);")
|
||
|
#pragma midl_echo("STDAPI CheckPlatformRequirementsEx(LPASSEMBLY_MANIFEST_IMPORT pManifestImport, CDebugLog* pDbgLog, LPDWORD pdwNumMissingPlatforms, LPTPLATFORM_INFO* pptPlatform);")
|
||
|
|
||
|
|
||
|
#pragma midl_echo("STDAPI CreateFusionAssemblyCacheEx (IAssemblyCache **ppFusionAsmCache);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyIdentity(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyIdentityEx(LPASSEMBLY_IDENTITY *ppAssemblyId, DWORD dwFlags, LPWSTR wzDisplayName);")
|
||
|
#pragma midl_echo("STDAPI CloneAssemblyIdentity(LPASSEMBLY_IDENTITY pSrcAssemblyId, LPASSEMBLY_IDENTITY *ppDestAssemblyId);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyManifestImport(LPASSEMBLY_MANIFEST_IMPORT *ppAssemblyManifestImport, LPCOLESTR szPath, CDebugLog *pDbgLog, DWORD dwFlags);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyManifestImportFromXMLStream(LPASSEMBLY_MANIFEST_IMPORT *ppAssemblyManifestImport, IStream* piStream, CDebugLog * pDbgLog, DWORD dwFlags);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyManifestEmit(LPASSEMBLY_MANIFEST_EMIT* ppEmit, LPCOLESTR pwzManifestFilePath, MANIFEST_TYPE eType);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyCacheImport(LPASSEMBLY_CACHE_IMPORT *ppAssemblyCacheImport, LPASSEMBLY_IDENTITY pAssemblyIdentity, DWORD dwFlags);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyCacheEmit(LPASSEMBLY_CACHE_EMIT *ppAssemblyCacheEmit, LPASSEMBLY_CACHE_EMIT pAssemblyCacheEmit, DWORD dwFlags);")
|
||
|
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyDownload(IAssemblyDownload** ppDownload, CDebugLog *pDbgLog, DWORD dwFlags); ")
|
||
|
|
||
|
#pragma midl_echo("STDAPI CreateManifestInfo(DWORD dwId, LPMANIFEST_INFO* ppManifestInfo);")
|
||
|
#pragma midl_echo("STDAPI CreateManifestData(LPCWSTR pwzDataType, LPMANIFEST_DATA* ppManifestData);")
|
||
|
#pragma midl_echo("STDAPI CreateAssemblyCacheEnum( LPASSEMBLY_CACHE_ENUM *ppAssemblyCacheEnum, LPASSEMBLY_IDENTITY pAssemblyIdentity, DWORD dwFlags);")
|
||
|
|