//+------------------------------------------------------------------------- // // 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 // bDynamicSecurity - Client's winsta\desktop and id should not be cached // typedef struct _ACTIVATION_INFO { const GUID * Clsid; COSERVERINFO * pServerInfo; [string] WCHAR *pwszWinstaDesktop; DWORD ClsContext; DWORD ProcessSignature; BOOL bDynamicSecurity; } 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, // 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, // 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, [in] BOOL FileWasOpened, [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, // Interface data and results. [out] BOOL * pFoundInROT, [out,size_is(Interfaces)] MInterfacePointer ** ppInterfaceData, [out,size_is(Interfaces)] HRESULT * pResults ); }