windows-nt/Source/XPSP1/NT/com/published/idlole/public/immact.idl
2020-09-26 16:20:57 +08:00

141 lines
4.6 KiB
Plaintext

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File:
// immact.idl
//
// Contents:
// Definition of immediate activator interfaces
//
// History:
// VinayKr 10-15-98 Created
//
//--------------------------------------------------------------------------
#ifndef DO_NO_IMPORTS
import "obase.idl";
import "wtypes.idl";
import "objidl.idl";
#endif
// Opaque Data
//--------------------------------------------------------------------------
// An immediate activator supports:
// IStandardActivator
// IOpaqueDataInfo
// ISpecialSystemProperties
//
//--------------------------------------------------------------------------
[
object,
local,
uuid(000001b8-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IStandardActivator : IUnknown
{
HRESULT StandardGetClassObject([in] REFCLSID rclsid,
[in] DWORD dwClsCtx,
[in] COSERVERINFO *pServerInfo,
[in] REFIID riid,
[out, iid_is(riid)] void** ppv);
HRESULT StandardCreateInstance([in] REFCLSID Clsid,
[in] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] COSERVERINFO *pServerInfo,
[in] DWORD dwCount,
[in, size_is(dwCount)] MULTI_QI *pResults);
HRESULT StandardGetInstanceFromFile(
[in] COSERVERINFO *pServerInfo,
[in] CLSID *pclsidOverride,
[in] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] DWORD grfMode,
[in] OLECHAR *pwszName,
[in] DWORD dwCount,
[in, size_is(dwCount)] MULTI_QI *pResults);
HRESULT StandardGetInstanceFromIStorage(
[in] COSERVERINFO *pServerInfo,
[in] CLSID *pclsidOverride,
[in] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] IStorage *pstg,
[in] DWORD dwCount,
[in, size_is(dwCount)] MULTI_QI *pResults);
HRESULT Reset();
}
[
object,
local,
uuid(000001A9-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IOpaqueDataInfo : IUnknown
{
HRESULT AddOpaqueData([in] OpaqueData *pData);
HRESULT GetOpaqueData([in] REFGUID guid, [out] OpaqueData **pData);
HRESULT DeleteOpaqueData([in] REFGUID guid);
HRESULT GetOpaqueDataCount ([out] ULONG* pulCount);
HRESULT GetAllOpaqueData ([out] OpaqueData** prgData);
}
// Enum value; means "don't use the session id when trying to find
// a suitable server for an activation". Used only in SCM.
typedef enum { INVALID_SESSION_ID = 0xFFFFFFFF } SESSIDTYPES;
[
object,
local,
uuid(000001b9-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface ISpecialSystemProperties : IUnknown
{
// fRemoteSessionId should be TRUE if the specified session is to be passed
// off-machine. If bUseConsole is TRUE, dwSessionID is ignored.
HRESULT SetSessionId([in] ULONG dwSessionId, [in]BOOL bUseConsole, [in] BOOL fRemoteThisSessionId);
// Gets the current value of the session id. *pdwSessionId should only be
// looked at if *pbUseConsole is FALSE.
HRESULT GetSessionId([out] ULONG *pdwSessionId, [out]BOOL* pbUseConsole);
// Same thing but also gets whether it should remoted off machine or not
HRESULT GetSessionId2([out] ULONG *pdwSessionId, [out]BOOL* pbUseConsole, [out] BOOL* pfRemoteThisSessionId);
// Get/set whether the client thread doing the activation was impersonating or not
HRESULT SetClientImpersonating([in]BOOL fClientImpersonating);
HRESULT GetClientImpersonating([out]BOOL* pfClientImpersonating);
// Set the partition ID
HRESULT SetPartitionId([in] REFGUID guidPartiton);
// Get the partition ID
HRESULT GetPartitionId([out] GUID* pguidPartiton);
// Storage for the ProcessRequestType flag (set by custom activators thru the
// IServerLocationInfo interface)
HRESULT SetProcessRequestType([in] DWORD dwPRT);
HRESULT GetProcessRequestType([out] DWORD* pdwPRT);
// Set the clsctx for the original caller
HRESULT SetOrigClsctx([in] DWORD dwClsctx);
// Get the clsctx for the orginal caller
HRESULT GetOrigClsctx([out] DWORD* dwClsctx);
}