windows-nt/Source/XPSP1/NT/com/ole32/dcomss/olescm/activate.hxx
2020-09-26 16:20:57 +08:00

165 lines
3.7 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// activate.hxx
//
// Definitions of main data types and functions for dcom activation service.
//
//--------------------------------------------------------------------------
#ifndef __ACTIVATE_HXX__
#define __ACTIVATE_HXX__
#define GUIDSTR_MAX (1+ 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1)
extern SC_HANDLE g_hServiceController;
typedef enum
{
GETCLASSOBJECT,
CREATEINSTANCE,
GETPERSISTENTINSTANCE
} ActivationType;
typedef struct _ACTIVATION_PARAMS
{
handle_t hRpc;
PVOID ProcessSignature;
CProcess * pProcess;
CToken * pToken;
COAUTHINFO * pAuthInfo;
#if 1 // #ifndef _CHICAGO_
BOOL UnsecureActivation;
USHORT AuthnSvc;
#endif
ActivationType MsgType;
GUID Clsid;
WCHAR * pwszServer;
WCHAR * pwszWinstaDesktop;
WCHAR * pEnvBlock;
DWORD EnvBlockLength;
DWORD ClsContext;
DWORD dwPID;
DWORD dwProcessReqType;
ORPCTHIS * ORPCthis;
LOCALTHIS * Localthis;
ORPCTHAT * ORPCthat;
BOOL RemoteActivation;
BOOL bClientImpersonating;
DWORD Interfaces;
IID * pIIDs;
DWORD Mode;
#ifdef DFSACTIVATION
BOOL FileWasOpened;
#endif
WCHAR * pwszPath;
MInterfacePointer * pIFDStorage;
MInterfacePointer * pIFDROT;
long Apartment;
OXID * pOxidServer;
DUALSTRINGARRAY ** ppServerORBindings;
OXID_INFO * pOxidInfo;
MID * pLocalMidOfRemote;
USHORT ProtseqId;
BOOL FoundInROT;
BOOL *pFoundInROT;
DWORD * pDllServerModel;
WCHAR ** ppwszDllServer;
MInterfacePointer **ppIFD;
HRESULT * pResults;
BOOL fComplusOnly;
ActivationPropertiesIn *pActPropsIn;
ActivationPropertiesOut *pActPropsOut;
InstantiationInfo *pInstantiationInfo;
IInstanceInfo *pInstanceInfo;
IScmRequestInfo * pInScmResolverInfo;
BOOL oldActivationCall;
BOOL activatedRemote;
BOOL IsLocalOxid;
#if 0 // #ifdef _CHICAGO_
const GUID * pGuidThreadId;
DWORD TIDCaller;
DWORD * pTIDCallee;
#endif
IComClassInfo* pComClassInfo;
} ACTIVATION_PARAMS, *PACTIVATION_PARAMS;
class CServerListEntry;
HRESULT
Activation(
IN PACTIVATION_PARAMS pActParams
);
HRESULT ResolveORInfo(
IN PACTIVATION_PARAMS pActParams
);
BOOL
LookupObjectInROT(
IN PACTIVATION_PARAMS pActParams,
OUT HRESULT * phr
);
BOOL
ActivateAtStorage(
IN ACTIVATION_PARAMS * pActParams,
IN CClsidData * pClsidData,
IN HRESULT * phr
);
BOOL
ActivateRemote(
IN ACTIVATION_PARAMS * pActParams,
IN CClsidData * pClsidData,
IN HRESULT * phr
);
BOOL
FindCompatibleSurrogate(
IN CProcess * pProcess,
IN WCHAR * pwszAppid,
OUT CServerListEntry ** ppServerListEntry
);
void
CheckLocalCall(
IN handle_t hRpc
);
#if 0 // #ifdef _CHICAGO_
void
ScmStartListen();
error_status_t
ScmResolveClientOXID(
OXID Oxid,
DUALSTRINGARRAY *pdsaServerObjectResolverBindings,
long fApartment,
USHORT wProtseqId,
OXID_INFO &OxidInfo,
MID &LocalMidOfRemote
);
#endif
#endif