2020-09-30 17:12:29 +02:00

127 lines
3.7 KiB
Plaintext

//+-------------------------------------------------------------------------
//
// 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
);
}