//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1995. // // File: // dscm.idl // // Contents: // Definition of private COM interface between ole32.dll // and the SCM. // // History: // //-------------------------------------------------------------------------- [ uuid(00000136-0000-0000-C000-000000000046), version(0.0), pointer_default(unique) #ifndef RAW ,object #endif ] interface IDSCM #ifndef RAW : IUnknown #endif { #ifndef DO_NO_IMPORTS import "iface.idl"; import "wtypes.idl"; import "objidl.idl"; import "obase.idl"; #endif #include "comhndl.h" COM_DEFINES(IDSCM) // // Clsid - CLSID to activate // pServerInfo - Location/Security info specified by client // pwszWinstaDesktop- Client's winsta\desktop // ClsContext - Class context requested // ProcessSignature - Client's process reference for rpcss // pEnvBlock - The optional client environment block. // EnvBlockSize - Chars (including 2 trailing nulls) in the env block. // typedef struct _ACTIVATION_INFO { GUID Clsid; [string] WCHAR *pwszServerName; COAUTHINFO * pAuthInfo; [string] WCHAR *pwszWinstaDesktop; DWORD ClsContext; ULONG64 ProcessSignature; #ifndef _CHICAGO_ [size_is(EnvBlockLength)] WCHAR * pEnvBlock; DWORD EnvBlockLength; #endif //_CHICAGO_ ULONG RestrictedSidCount; [size_is(RestrictedSidCount)] SID_AND_ATTRIBUTES * pRestrictedSids; } ACTIVATION_INFO; HRESULT SCMGetClassObject( COM_HANDLE [in] ACTIVATION_INFO * pActivationInfo, [in] IID * pIID, // // OR piggyback of ClientResolveOXID. // [in] long Apartment, [out] OXID * pOxidServer, [out] DUALSTRINGARRAY ** ppServerORBindings, [out] OXID_INFO * pOxidInfo, [out] MID * pLocalMidOfRemote, [out] DWORD * pDllServerModel, [out,string] WCHAR ** ppwszDllServer, // ClassFactory interface data. [out] MInterfacePointer ** ppIDClassFactory ); HRESULT SCMCreateInstance( COM_HANDLE [in] ACTIVATION_INFO * pActivationInfo, [in] DWORD Interfaces, [in,size_is(Interfaces)] IID * pIIDs, // // OR piggyback of ClientResolveOXID. // [in] long Apartment, [out] OXID * pOxidServer, [out] DUALSTRINGARRAY ** ppServerORBindings, [out] OXID_INFO * pOxidInfo, [out] MID * pLocalMidOfRemote, [out] DWORD * pDllServerModel, [out,string] WCHAR ** ppwszDllServer, // Interface data and results. [out,size_is(Interfaces)] MInterfacePointer ** ppInterfaceData, [out,size_is(Interfaces)] HRESULT * pResults ); HRESULT SCMGetPersistentInstance( COM_HANDLE [in] ACTIVATION_INFO * pActivationInfo, [in, string, unique] WCHAR * pwszPath, [in, unique] MInterfacePointer *pIFDStorage, [in] DWORD FileMode, #ifdef DFSACTIVATION [in] BOOL FileWasOpened, #endif [in] DWORD Interfaces, [in,size_is(Interfaces)] IID * pIIDs, // // OR piggyback of ClientResolveOXID. // [in] long Apartment, [out] OXID * pOxidServer, [out] DUALSTRINGARRAY ** ppServerORBindings, [out] OXID_INFO * pOxidInfo, [out] MID * pLocalMidOfRemote, [out] BOOL * pFoundInROT, [out] DWORD * pDllServerModel, [out,string] WCHAR ** ppwszDllServer, // Interface data and results. [out,size_is(Interfaces)] MInterfacePointer ** ppInterfaceData, [out,size_is(Interfaces)] HRESULT * pResults ); }