165 lines
3.7 KiB
C++
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
|
|
|
|
|