windows-nt/Source/XPSP1/NT/com/ole32/idl/internal/dscm.idl
2020-09-26 16:20:57 +08:00

146 lines
4.4 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
// 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
);
}