|
|
//+------------------------------------------------------------------------- // // 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 );")
|