351 lines
12 KiB
Plaintext
351 lines
12 KiB
Plaintext
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1998.
|
|
//
|
|
// File:
|
|
// catalog.idl
|
|
//
|
|
// Contents:
|
|
// Definition of catalog interfaces for runtime.
|
|
//
|
|
// History:
|
|
// JimLyon 02-24-98 Created
|
|
// a-sergiv 10-25-99 Added IMemoryGate
|
|
// jsimmons 03-20-01 Modified IComCatalogSCM to take IUserToken's
|
|
// instead of HANDLE's to tokens.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef DO_NO_IMPORTS
|
|
import "activate.idl";
|
|
import "partitions.idl";
|
|
#endif
|
|
|
|
// IComCatalog: Required interface on catalog object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001E0-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComCatalog : IUnknown
|
|
{
|
|
HRESULT GetClassInfo ([in] REFGUID guidConfiguredClsid, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetApplicationInfo ([in] REFGUID guidApplId, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetProcessInfo ([in] REFGUID guidProcess, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetServerGroupInfo ([in] REFGUID guidServerGroup, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetRetQueueInfo ([in,string] WCHAR* wszFormatName, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetApplicationInfoForExe ([in,string] WCHAR* pwszExeName, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetTypeLibrary ([in] REFGUID guidTypeLib, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetInterfaceInfo ([in] REFIID iidInterface, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT FlushCache();
|
|
HRESULT GetClassInfoFromProgId ([in] WCHAR *pwszProgID, [in] REFIID riid, [out] void **ppv);
|
|
}
|
|
|
|
|
|
// IComCatalog2: interface on catalog object for partition and application queries
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001FA-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComCatalog2 : IUnknown
|
|
{
|
|
HRESULT GetClassInfoByPartition ([in] REFGUID guidConfiguredClsid, [in] REFGUID guidPartitionId,
|
|
[in] REFIID riid, [out] void** ppv);
|
|
|
|
HRESULT GetClassInfoByApplication ([in] REFGUID guidConfiguredClsid, [in] REFGUID guidPartitionId,
|
|
[in] REFGUID guidApplId, [in] REFIID riid, [out] void** ppv);
|
|
|
|
HRESULT GetNativeRegistryCatalog([in]REFIID riid, [out]void** ppv);
|
|
HRESULT GetNonNativeRegistryCatalog([in]REFIID riid, [out]void** ppv);
|
|
}
|
|
|
|
//REVIEW: Where should these constants REALLY go?
|
|
cpp_quote("/* These constants are used in the SCM catalog interfaces */")
|
|
cpp_quote("#define CAT_REG64_ONLY (0x10000000)")
|
|
cpp_quote("#define CAT_REG32_ONLY (0x20000000)")
|
|
cpp_quote("#define CAT_REG_MASK (0x30000000)")
|
|
|
|
// IComCatalogSCM: Required interface on catalog object.
|
|
//
|
|
// jsimmons -- modified this interface to take IUserToken's rather than HANDLEs. This
|
|
// allows the caller to implement his own token\hive caching scheme.
|
|
//
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001FD-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComCatalogSCM : IUnknown
|
|
{
|
|
HRESULT GetClassInfo ([in] DWORD flags, [in] IUserToken* pToken, [in] REFGUID guidConfiguredClsid, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetApplicationInfo ([in] IUserToken* pToken, [in] REFGUID guidApplId, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetProcessInfo ([in] DWORD flags, [in] IUserToken* pToken, [in] REFGUID guidProcess, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetServerGroupInfo ([in] IUserToken* pToken, [in] REFGUID guidServerGroup, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetRetQueueInfo ([in] IUserToken* pToken, [in,string] WCHAR* wszFormatName, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetApplicationInfoForExe ([in] IUserToken* pToken, [in,string] WCHAR* pwszExeName, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetTypeLibrary ([in] IUserToken* pToken, [in] REFGUID guidTypeLib, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetInterfaceInfo ([in] IUserToken* pToken, [in] REFIID iidInterface, [in] REFIID riid, [out] void** ppv);
|
|
HRESULT FlushCache();
|
|
HRESULT GetClassInfoFromProgId ([in] IUserToken* pToken, [in] WCHAR *pwszProgID, [in] REFIID riid, [out] void **ppv);
|
|
HRESULT FlushIdleEntries();
|
|
}
|
|
|
|
|
|
// IComClassInfo: Required interface on ClassInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001E1-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComClassInfo : IUnknown
|
|
{
|
|
HRESULT GetConfiguredClsid ([out] GUID** ppguidClsid);
|
|
HRESULT GetProgId ([out] WCHAR** pwszProgid);
|
|
HRESULT GetClassName ([out] WCHAR** pwszClassName);
|
|
HRESULT GetApplication ([in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetClassContext ([in] CLSCTX clsctxFilter, [out] CLSCTX* pclsctx);
|
|
HRESULT GetCustomActivatorCount ([in] ACTIVATION_STAGE activationStage, [out] unsigned long* pulCount);
|
|
HRESULT GetCustomActivatorClsids ([in] ACTIVATION_STAGE activationStage, [out] GUID** prgguidClsid);
|
|
HRESULT GetCustomActivators ([in] ACTIVATION_STAGE activationStage, [out] ISystemActivator*** prgpActivator);
|
|
HRESULT GetTypeInfo ([in] REFIID riid, [out] void** ppv);
|
|
HRESULT IsComPlusConfiguredClass ([out] BOOL* pfComPlusConfiguredClass);
|
|
HRESULT MustRunInClientContext ([out] BOOL* pbMustRunInClientContext);
|
|
HRESULT GetVersionNumber ([out] DWORD *pdwVersionMS, [out] DWORD *pdwVersionLS);
|
|
HRESULT Lock (void);
|
|
HRESULT Unlock (void);
|
|
}
|
|
|
|
typedef struct tagSOAP_ACTIVATION_INFO
|
|
{
|
|
BOOL bSoapActivated;
|
|
LONG lMode;
|
|
BSTR bstrVRoot;
|
|
BSTR bstrMailTo;
|
|
BSTR bstrAssemblyName;
|
|
BSTR bstrTypeName;
|
|
BSTR bstrBaseUrl;
|
|
|
|
} SOAP_ACTIVATION_INFO;
|
|
|
|
// IComClassInfo2: Interface on ClassInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001E4-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComClassInfo2 : IComClassInfo
|
|
{
|
|
HRESULT IsEnabled([out] BOOL *bEnabled);
|
|
HRESULT GetInternalClsid ([out] GUID** ppguidInternalClsid); // the catalog unique CLSID
|
|
HRESULT GetApplicationPartitionId ([out] GUID** ppguidAppPartitionId); // the app. partition id for this component
|
|
HRESULT MustRunInDefaultContext([out] BOOL *pbMustRunInDefaultContext);
|
|
HRESULT IsPrivateComponent([out]BOOL* pbIsPrivateComponent);
|
|
HRESULT VBDebugInProgress([out]BOOL* pbVBDebugInProgress);
|
|
HRESULT GetSoapInfo ([out] SOAP_ACTIVATION_INFO* psoapActInfo);
|
|
HRESULT IsEnabledRemote([out] BOOL *bEnabled);
|
|
}
|
|
|
|
// IClassClassicInfo: Required interface on ClassInfo object.
|
|
typedef enum tagThreadingModel
|
|
{ ApartmentThreaded, FreeThreaded, SingleThreaded, BothThreaded, NeutralThreaded }
|
|
ThreadingModel;
|
|
|
|
typedef enum tagLocalServerType
|
|
{ LocalServerType16, LocalServerType32 }
|
|
LocalServerType;
|
|
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001E2-0000-0000-C000-000000000046)
|
|
]
|
|
interface IClassClassicInfo : IUnknown
|
|
{
|
|
HRESULT GetThreadingModel ([out] ThreadingModel* pthreadmodel);
|
|
HRESULT GetModulePath ([in] CLSCTX clsctx, [out, string] WCHAR** pwszDllName);
|
|
HRESULT GetImplementedClsid ([out] GUID** ppguidClsid);
|
|
HRESULT GetProcess ([in] REFIID riid, [out] void** ppv);
|
|
HRESULT GetRemoteServerName ([out] WCHAR** pwszServerName);
|
|
HRESULT GetLocalServerType ([out] LocalServerType* pType);
|
|
HRESULT GetSurrogateCommandLine ([out] WCHAR** pwszSurrogateCommandLine);
|
|
}
|
|
|
|
// IClassClassicInfo2: Optional interface on ClassInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001df-0000-0000-C000-000000000046)
|
|
]
|
|
interface IClassClassicInfo2 : IUnknown
|
|
{
|
|
HRESULT GetServerExecutable ([out] WCHAR **pwszServerExecutable);
|
|
}
|
|
|
|
// IComServices: Optional interface on ApplicationInfo / ProcessInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001F5-0000-0000-C000-000000000046),
|
|
]
|
|
interface IComServices : IUnknown
|
|
{
|
|
HRESULT GetServicesCount ([out] ULONG* pulCount);
|
|
HRESULT GetServicesClsids([out] GUID ** pprgguidClsid);
|
|
};
|
|
|
|
// IComServices2: Optional interface on ApplicationInfo / ProcessInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(61a7d610-42eb-43d2-a55f-1904d3294daa)
|
|
]
|
|
interface IComServices2 : IUnknown
|
|
{
|
|
HRESULT GetInitializerCount([out] ULONG *pulCount);
|
|
HRESULT GetInitializerClsids([out] GUID **pprgguidClsid);
|
|
};
|
|
|
|
// IComProcessInfo: Required interface on ProcessInfo object.
|
|
typedef enum tagProcessType
|
|
{
|
|
ProcessTypeNormal,
|
|
ProcessTypeService,
|
|
ProcessTypeComPlus,
|
|
ProcessTypeLegacySurrogate,
|
|
ProcessTypeComPlusService
|
|
} ProcessType;
|
|
|
|
typedef enum tagRunAsType
|
|
{
|
|
RunAsSpecifiedUser,
|
|
RunAsInteractiveUser,
|
|
RunAsLaunchingUser
|
|
} RunAsType;
|
|
|
|
enum DCOM_ENDPOINT_FLAGS
|
|
{
|
|
fUseInternetPorts = 0x00000001
|
|
};
|
|
|
|
typedef struct tagDCOM_ENDPOINT
|
|
{
|
|
WCHAR* wszProtSeq;
|
|
WCHAR* wszPorts;
|
|
DWORD dwFlags;
|
|
} DCOM_ENDPOINT;
|
|
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001ED-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComProcessInfo : IUnknown
|
|
{
|
|
HRESULT GetProcessId ([out] GUID** ppguidProcessId);
|
|
HRESULT GetProcessName ([out] WCHAR** pwszProcessName);
|
|
HRESULT GetProcessType ([out] ProcessType* pType);
|
|
HRESULT GetSurrogatePath ([out] WCHAR** pwszSurrogatePath);
|
|
HRESULT GetServiceName ([out] WCHAR** pwszServiceName);
|
|
HRESULT GetServiceParameters ([out] WCHAR** pwszServiceParameters);
|
|
HRESULT GetActivateAtStorage ([out] BOOL* pfActivateAtStorage);
|
|
HRESULT GetRunAsType ([out] RunAsType* pRunAsType);
|
|
HRESULT GetRunAsUser ([out] WCHAR** pwszUserName);
|
|
HRESULT GetLaunchPermission ([out] void** ppsdLaunch, [out] DWORD *pdwDescriptorLength);
|
|
HRESULT GetAccessPermission ([out] void** ppsdAccess, [out] DWORD *pdwDescriptorLength);
|
|
HRESULT GetAuthenticationLevel ([out] DWORD* pdwAuthnLevel);
|
|
HRESULT GetImpersonationLevel ([out] DWORD* pdwImpLevel);
|
|
HRESULT GetAuthenticationCapabilities ([out] DWORD* pdwAuthenticationCapabilities);
|
|
HRESULT GetEndpoints ([out] DWORD* pdwNumEndpoints, [out, size_is( ,*pdwNumEndpoints)] DCOM_ENDPOINT** ppEndPoints);
|
|
HRESULT GetRemoteServerName ([out] WCHAR** pwszServerName);
|
|
HRESULT SendsProcessEvents ([out] BOOL * pbSendsEvents);
|
|
}
|
|
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(6acfc1bf-3882-45b1-96a3-ab948a267d38)
|
|
]
|
|
interface IComProcessInfo2 : IComProcessInfo
|
|
{
|
|
HRESULT GetManifestLocation([out] WCHAR** wszManifestLocation);
|
|
HRESULT GetSaferTrustLevel([out]DWORD* pdwSaferTrustLevel);
|
|
}
|
|
|
|
typedef enum tagResourceGateId
|
|
{
|
|
CreateProcessMemoryGate,
|
|
CreateObjectMemoryGate
|
|
} ResourceGateId;
|
|
|
|
// IResourceGates: Optional interface on ProcessInfo and ClassInfo objects.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(7a0ddd93-7198-4e15-bbd7-427c77b6907a)
|
|
]
|
|
interface IResourceGates : IUnknown
|
|
{
|
|
// Tests that current conditions satisfy the indicated gate
|
|
HRESULT Test([in] ResourceGateId id, [out] BOOL *pbResult);
|
|
}
|
|
|
|
// IProcessServerInfo: Required interface on ProcessInfo object.
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001EE-0000-0000-C000-000000000046)
|
|
]
|
|
interface IProcessServerInfo : IUnknown
|
|
{
|
|
HRESULT GetShutdownIdleTime ([out] unsigned long* pulTime);
|
|
HRESULT GetCrmLogFileName ([out] WCHAR** pwszFileName);
|
|
HRESULT EnumApplications ([out] IEnumUnknown** ppEnum);
|
|
HRESULT EnumRetQueues ([out] IEnumUnknown** ppEnum);
|
|
}
|
|
|
|
// IInterfaceInfo
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001F7-0000-0000-C000-000000000046)
|
|
]
|
|
interface IInterfaceInfo : IUnknown
|
|
{
|
|
HRESULT GetProxyStubCLSID ([out] GUID** psclsid, [out] BOOL* pfIs16BitPS);
|
|
HRESULT GetTypeLibrary ([out] GUID** pLibID, [out] unsigned short* psVersionMajor, [out] unsigned short* psVersionMinor);
|
|
HRESULT GetSyncIID ([out] GUID** syncriid);
|
|
HRESULT GetAsyncIID ([out] GUID** asyncriid);
|
|
HRESULT GetTypeInfo ([in] REFIID riid, [out] void** ppv);
|
|
}
|
|
|
|
// IComCatalogSettings
|
|
[
|
|
object,
|
|
local,
|
|
pointer_default(unique),
|
|
uuid(000001FF-0000-0000-C000-000000000046)
|
|
]
|
|
interface IComCatalogSettings : IUnknown
|
|
{
|
|
HRESULT RefreshComPlusEnabled();
|
|
}
|
|
|
|
cpp_quote ("STDAPI GetCatalogObject (REFIID riid, void **ppv );")
|
|
cpp_quote ("STDAPI GetCatalogObject2 (REFIID riid, void **ppv );")
|