421 lines
17 KiB
C#
421 lines
17 KiB
C#
|
//-----------------------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
namespace System.ServiceModel.ComIntegration
|
||
|
{
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Runtime.InteropServices;
|
||
|
|
||
|
/*
|
||
|
* Stolen from ES.
|
||
|
* I removed SuppressUnmanagedCodeSecurity. We can re-add it later.
|
||
|
*/
|
||
|
|
||
|
enum COMAdminThreadingModel
|
||
|
{
|
||
|
Apartment = 0,
|
||
|
Free = 1,
|
||
|
Main = 2,
|
||
|
Both = 3,
|
||
|
Neutral = 4,
|
||
|
NotSpecified = 5
|
||
|
}
|
||
|
|
||
|
enum COMAdminIsolationLevel
|
||
|
{
|
||
|
Any = 0,
|
||
|
ReadUncommitted = 1,
|
||
|
ReadCommitted = 2,
|
||
|
RepeatableRead = 3,
|
||
|
Serializable = 4
|
||
|
}
|
||
|
|
||
|
[ComImport]
|
||
|
[Guid("790C6E0B-9194-4cc9-9426-A48A63185696")]
|
||
|
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
|
||
|
internal interface ICatalog2
|
||
|
{
|
||
|
[DispId(0x00000001)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object GetCollection([In, MarshalAs(UnmanagedType.BStr)]
|
||
|
String bstrCollName);
|
||
|
|
||
|
[DispId(0x00000002)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object Connect([In, MarshalAs(UnmanagedType.BStr)] String connectStr);
|
||
|
|
||
|
[DispId(0x00000003)]
|
||
|
int MajorVersion();
|
||
|
|
||
|
[DispId(0x00000004)]
|
||
|
int MinorVersion();
|
||
|
|
||
|
[DispId(0x00000005)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object GetCollectionByQuery([In, MarshalAs(UnmanagedType.BStr)]
|
||
|
String collName,
|
||
|
[In, MarshalAs(UnmanagedType.SafeArray)]
|
||
|
ref Object[] aQuery);
|
||
|
|
||
|
[DispId(0x00000006)]
|
||
|
void ImportComponent([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrCLSIDOrProgId);
|
||
|
|
||
|
[DispId(0x00000007)]
|
||
|
void InstallComponent([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDLL,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrTLB,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPSDLL);
|
||
|
|
||
|
[DispId(0x00000008)]
|
||
|
void ShutdownApplication([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName);
|
||
|
|
||
|
[DispId(0x00000009)]
|
||
|
void ExportApplication([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationFile,
|
||
|
[In] int lOptions);
|
||
|
|
||
|
[DispId(0x0000000a)]
|
||
|
void InstallApplication([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationFile,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestinationDirectory,
|
||
|
[In] int lOptions,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrUserId,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPassword,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrRSN);
|
||
|
|
||
|
[DispId(0x0000000b)]
|
||
|
void StopRouter();
|
||
|
|
||
|
[DispId(0x0000000c)]
|
||
|
void RefreshRouter();
|
||
|
|
||
|
[DispId(0x0000000d)]
|
||
|
void StartRouter();
|
||
|
|
||
|
[DispId(0x0000000e)]
|
||
|
void Reserved1();
|
||
|
|
||
|
[DispId(0x0000000f)]
|
||
|
void Reserved2();
|
||
|
|
||
|
[DispId(0x00000010)]
|
||
|
void InstallMultipleComponents([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref Object[] fileNames,
|
||
|
[In, MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref Object[] CLSIDS);
|
||
|
|
||
|
[DispId(0x00000011)]
|
||
|
void GetMultipleComponentsInfo([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In] Object varFileNames,
|
||
|
[Out, MarshalAs(UnmanagedType.SafeArray)] out Object[] varCLSIDS,
|
||
|
[Out, MarshalAs(UnmanagedType.SafeArray)] out Object[] varClassNames,
|
||
|
[Out, MarshalAs(UnmanagedType.SafeArray)] out Object[] varFileFlags,
|
||
|
[Out, MarshalAs(UnmanagedType.SafeArray)] out Object[] varComponentFlags);
|
||
|
|
||
|
[DispId(0x00000012)]
|
||
|
void RefreshComponents();
|
||
|
|
||
|
[DispId(0x00000013)]
|
||
|
void BackupREGDB([In, MarshalAs(UnmanagedType.BStr)] String bstrBackupFilePath);
|
||
|
|
||
|
[DispId(0x00000014)]
|
||
|
void RestoreREGDB([In, MarshalAs(UnmanagedType.BStr)] String bstrBackupFilePath);
|
||
|
|
||
|
[DispId(0x00000015)]
|
||
|
void QueryApplicationFile([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationFile,
|
||
|
[Out, MarshalAs(UnmanagedType.BStr)] out String bstrApplicationName,
|
||
|
[Out, MarshalAs(UnmanagedType.BStr)] out String bstrApplicationDescription,
|
||
|
[Out, MarshalAs(UnmanagedType.VariantBool)] out bool bHasUsers,
|
||
|
[Out, MarshalAs(UnmanagedType.VariantBool)] out bool bIsProxy,
|
||
|
[Out, MarshalAs(UnmanagedType.SafeArray)] out Object[] varFileNames);
|
||
|
|
||
|
[DispId(0x00000016)]
|
||
|
void StartApplication([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName);
|
||
|
|
||
|
[DispId(0x00000017)]
|
||
|
int ServiceCheck([In] int lService);
|
||
|
|
||
|
[DispId(0x00000018)]
|
||
|
void InstallMultipleEventClasses([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref Object[] fileNames,
|
||
|
[In, MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref Object[] CLSIDS);
|
||
|
|
||
|
[DispId(0x00000019)]
|
||
|
void InstallEventClass([In, MarshalAs(UnmanagedType.BStr)] String bstrApplIdOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDLL,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrTLB,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPSDLL);
|
||
|
|
||
|
[DispId(0x0000001a)]
|
||
|
void GetEventClassesForIID([In] String bstrIID,
|
||
|
[In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varCLSIDS,
|
||
|
[In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varProgIDs,
|
||
|
[In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varDescriptions);
|
||
|
|
||
|
[DispId(0x0000001b)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object GetCollectionByQuery2(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrCollectionName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarQueryStrings);
|
||
|
|
||
|
[DispId(0x0000001c)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String GetApplicationInstanceIDFromProcessID([In, MarshalAs(UnmanagedType.I4)] int lProcessID);
|
||
|
|
||
|
[DispId(0x0000001d)]
|
||
|
void ShutdownApplicationInstances([In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationInstanceID);
|
||
|
|
||
|
[DispId(0x0000001e)]
|
||
|
void PauseApplicationInstances([In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationInstanceID);
|
||
|
|
||
|
[DispId(0x0000001f)]
|
||
|
void ResumeApplicationInstances([In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationInstanceID);
|
||
|
|
||
|
[DispId(0x00000020)]
|
||
|
void RecycleApplicationInstances(
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationInstanceID,
|
||
|
[In, MarshalAs(UnmanagedType.I4)] int lReasonCode);
|
||
|
|
||
|
[DispId(0x00000021)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
bool AreApplicationInstancesPaused([In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationInstanceID);
|
||
|
|
||
|
[DispId(0x00000022)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String DumpApplicationInstance(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationInstanceID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDirectory,
|
||
|
[In, MarshalAs(UnmanagedType.I4)] int lMaxImages);
|
||
|
|
||
|
[DispId(0x00000023)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
bool IsApplicationInstanceDumpSupported();
|
||
|
|
||
|
[DispId(0x00000024)]
|
||
|
void CreateServiceForApplication(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrServiceName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrStartType,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrErrorControl,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDependencies,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrRunAs,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPassword,
|
||
|
[In, MarshalAs(UnmanagedType.VariantBool)] bool bDesktopOk);
|
||
|
|
||
|
[DispId(0x00000025)]
|
||
|
void DeleteServiceForApplication([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName);
|
||
|
|
||
|
[DispId(0x00000026)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String GetPartitionID([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName);
|
||
|
|
||
|
[DispId(0x00000027)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String GetPartitionName([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName);
|
||
|
|
||
|
[DispId(0x00000028)]
|
||
|
void CurrentPartition([In, MarshalAs(UnmanagedType.BStr)]String bstrPartitionIDOrName);
|
||
|
|
||
|
[DispId(0x00000029)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String CurrentPartitionID();
|
||
|
|
||
|
[DispId(0x0000002A)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String CurrentPartitionName();
|
||
|
|
||
|
[DispId(0x0000002B)]
|
||
|
[return: MarshalAs(UnmanagedType.BStr)]
|
||
|
String GlobalPartitionID();
|
||
|
|
||
|
[DispId(0x0000002C)]
|
||
|
void FlushPartitionCache();
|
||
|
|
||
|
[DispId(0x0000002D)]
|
||
|
void CopyApplications(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrSourcePartitionIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarApplicationID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestinationPartitionIDOrName);
|
||
|
|
||
|
[DispId(0x0000002E)]
|
||
|
void CopyComponents(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrSourceApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestinationApplicationIDOrName);
|
||
|
|
||
|
[DispId(0x0000002F)]
|
||
|
void MoveComponents(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrSourceApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestinationApplicationIDOrName);
|
||
|
|
||
|
[DispId(0x00000030)]
|
||
|
void AliasComponent(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrSrcApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrNewProgId,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrNewClsid);
|
||
|
|
||
|
[DispId(0x00000031)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object IsSafeToDelete([In, MarshalAs(UnmanagedType.BStr)] String bstrDllName);
|
||
|
|
||
|
[DispId(0x00000032)]
|
||
|
void ImportUnconfiguredComponents(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarComponentType);
|
||
|
|
||
|
[DispId(0x00000033)]
|
||
|
void PromoteUnconfiguredComponents(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarComponentType);
|
||
|
|
||
|
[DispId(0x00000034)]
|
||
|
void ImportComponents(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarCLSIDOrProgID,
|
||
|
[In, MarshalAs(UnmanagedType.LPStruct)] Object pVarComponentType);
|
||
|
|
||
|
[DispId(0x00000035)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
bool Is64BitCatalogServer();
|
||
|
|
||
|
[DispId(0x00000036)]
|
||
|
void ExportPartition(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPartitionIDOrName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPartitionFileName,
|
||
|
[In, MarshalAs(UnmanagedType.I4)] int lOptions);
|
||
|
|
||
|
[DispId(0x00000037)]
|
||
|
void InstallPartition(
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrFileName,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrDestDirectory,
|
||
|
[In, MarshalAs(UnmanagedType.I4)] int lOptions,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrUserID,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrPassword,
|
||
|
[In, MarshalAs(UnmanagedType.BStr)] String bstrRSN);
|
||
|
|
||
|
[DispId(0x00000038)]
|
||
|
[return: MarshalAs(UnmanagedType.IDispatch)]
|
||
|
Object QueryApplicationFile2([In, MarshalAs(UnmanagedType.BStr)] String bstrApplicationFile);
|
||
|
|
||
|
[DispId(0x00000039)]
|
||
|
[return: MarshalAs(UnmanagedType.I4)]
|
||
|
int GetComponentVersionCount([In, MarshalAs(UnmanagedType.BStr)] String bstrCLSIDOrProgID);
|
||
|
}
|
||
|
|
||
|
[ComImport]
|
||
|
[Guid("6EB22871-8A19-11D0-81B6-00A0C9231C29")]
|
||
|
internal interface ICatalogObject
|
||
|
{
|
||
|
[DispId(0x00000001)]
|
||
|
Object GetValue([In, MarshalAs(UnmanagedType.BStr)] String propName);
|
||
|
|
||
|
[DispId(0x00000001)]
|
||
|
void SetValue([In, MarshalAs(UnmanagedType.BStr)] String propName,
|
||
|
[In] Object value);
|
||
|
|
||
|
[DispId(0x00000002)]
|
||
|
Object Key();
|
||
|
|
||
|
[DispId(0x00000003)]
|
||
|
Object Name();
|
||
|
|
||
|
[DispId(0x00000004)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
bool IsPropertyReadOnly([In, MarshalAs(UnmanagedType.BStr)] String bstrPropName);
|
||
|
|
||
|
bool Valid
|
||
|
{
|
||
|
[DispId(0x00000005)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
get;
|
||
|
}
|
||
|
|
||
|
[DispId(0x00000006)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
bool IsPropertyWriteOnly([In, MarshalAs(UnmanagedType.BStr)] String bstrPropName);
|
||
|
}
|
||
|
|
||
|
[ComImport]
|
||
|
[Guid("6EB22872-8A19-11D0-81B6-00A0C9231C29")]
|
||
|
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
|
||
|
internal interface ICatalogCollection
|
||
|
{
|
||
|
[DispId(unchecked((int)0xfffffffc))]
|
||
|
void GetEnumerator(out IEnumerator pEnum);
|
||
|
|
||
|
[DispId(0x00000001)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object Item([In] int lIndex);
|
||
|
|
||
|
[DispId(0x60020002)]
|
||
|
int Count();
|
||
|
|
||
|
[DispId(0x60020003)]
|
||
|
void Remove([In] int lIndex);
|
||
|
|
||
|
[DispId(0x60020004)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object Add();
|
||
|
|
||
|
[DispId(0x00000002)]
|
||
|
void Populate();
|
||
|
|
||
|
[DispId(0x00000003)]
|
||
|
int SaveChanges();
|
||
|
|
||
|
[DispId(0x00000004)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object GetCollection([In, MarshalAs(UnmanagedType.BStr)] String bstrCollName,
|
||
|
[In] Object varObjectKey);
|
||
|
|
||
|
[DispId(0x00000006)]
|
||
|
Object Name();
|
||
|
|
||
|
bool IsAddEnabled
|
||
|
{
|
||
|
[DispId(0x00000007)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
get;
|
||
|
}
|
||
|
|
||
|
bool IsRemoveEnabled
|
||
|
{
|
||
|
[DispId(0x00000008)]
|
||
|
[return: MarshalAs(UnmanagedType.VariantBool)]
|
||
|
get;
|
||
|
}
|
||
|
|
||
|
[DispId(0x00000009)]
|
||
|
[return: MarshalAs(UnmanagedType.Interface)]
|
||
|
Object GetUtilInterface();
|
||
|
|
||
|
int DataStoreMajorVersion
|
||
|
{
|
||
|
[DispId(0x0000000a)]
|
||
|
get;
|
||
|
}
|
||
|
|
||
|
int DataStoreMinorVersion
|
||
|
{
|
||
|
[DispId(0x0000000b)]
|
||
|
get;
|
||
|
}
|
||
|
|
||
|
void PopulateByKey([In, MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
|
||
|
Object[] aKeys);
|
||
|
|
||
|
[DispId(0x0000000d)]
|
||
|
void PopulateByQuery([In, MarshalAs(UnmanagedType.BStr)] String bstrQueryString,
|
||
|
[In] int lQueryType);
|
||
|
}
|
||
|
|
||
|
[ComImport]
|
||
|
[Guid("F618C514-DFB8-11D1-A2CF-00805FC79235")]
|
||
|
internal class xCatalog { }
|
||
|
}
|