Leaked source code of windows server 2003
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.
 
 
 
 
 
 

350 lines
12 KiB

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