You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.4 KiB
152 lines
4.4 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1993.
|
|
//
|
|
// File: scm.idl
|
|
//
|
|
// Contents: Definition of private RPC interface between compobj.dll
|
|
// and the service controller.
|
|
//
|
|
// History: 21-Apr-93 Ricksa Created
|
|
// 27-Dec-93 ErikGav TCHAR->WCHAR
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
[ uuid(412f241e-c12a-11ce-abff-0020af6e7a17),
|
|
version(0.2),
|
|
pointer_default(unique)
|
|
]
|
|
|
|
interface ISCM
|
|
{
|
|
import "iface.idl";
|
|
import "obase.idl";
|
|
|
|
typedef [context_handle] void *PHPROCESS;
|
|
|
|
const DWORD MAX_REGENTRIES = 0x10000; // 65536
|
|
|
|
typedef struct _RegOutput
|
|
{
|
|
DWORD dwSize;
|
|
[size_is(dwSize)]
|
|
DWORD RegKeys[];
|
|
} RegOutput;
|
|
|
|
typedef struct _RegInputEntry
|
|
{
|
|
CLSID clsid;
|
|
OXID oxid;
|
|
IPID ipid;
|
|
DWORD dwFlags;
|
|
} RegInputEntry;
|
|
|
|
typedef struct _RegInput
|
|
{
|
|
[range(1,MAX_REGENTRIES)]
|
|
DWORD dwSize;
|
|
[size_is(dwSize)]
|
|
RegInputEntry rginent[];
|
|
} RegInput;
|
|
|
|
typedef struct _RevokeEntry
|
|
{
|
|
CLSID clsid;
|
|
DWORD dwReg;
|
|
} RevokeEntry;
|
|
|
|
typedef struct _RevokeClasses
|
|
{
|
|
[range(1,MAX_REGENTRIES)]
|
|
DWORD dwSize;
|
|
[size_is(dwSize)]
|
|
RevokeEntry revent[];
|
|
} RevokeClasses;
|
|
|
|
//
|
|
// Server to SCM methods.
|
|
//
|
|
HRESULT ServerRegisterClsid(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] RegInput * pregin,
|
|
[out] RegOutput ** ppregout,
|
|
[out] error_status_t * prpcstat);
|
|
|
|
void ServerRevokeClsid(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] RevokeClasses * prevcls,
|
|
[out] error_status_t * prpcstat);
|
|
|
|
//
|
|
// Client/Server to SCM methods.
|
|
//
|
|
|
|
void GetThreadID(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[out] DWORD * pThreadID,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
void UpdateActivationSettings(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
// Register Drag/Drop
|
|
HRESULT RegisterWindowPropInterface(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] DWORD_PTR hWnd,
|
|
[in] STDOBJREF *pStd,
|
|
[in] OXID_INFO *pOxidInfo,
|
|
[out] DWORD_PTR *pdwCookie,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
HRESULT GetWindowPropInterface(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] DWORD_PTR hWnd,
|
|
[in] DWORD_PTR dwCookie,
|
|
[in] BOOL fRevoke,
|
|
[out] STDOBJREF *pStd,
|
|
[out] OXID_INFO *pOxidInfo,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
// To support the IP cache control functionality
|
|
HRESULT EnableDisableDynamicIPTracking(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] BOOL fEnable,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
HRESULT GetCurrentAddrExclusionList(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[out] DWORD* pdwNumStrings,
|
|
[out, size_is(,*pdwNumStrings)]LPWSTR** pppszStrings,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
// range setting on third parameter is to mitigate DoS attacks.
|
|
HRESULT SetAddrExclusionList(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in, range(0,0x4000)] DWORD dwNumStrings,
|
|
[in, unique, size_is(dwNumStrings)]LPWSTR* ppszStrings,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
// To support CoInvalidateRemoteMachineBindings
|
|
HRESULT FlushSCMBindings(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in,string] WCHAR* pszMachineName,
|
|
[out] error_status_t *prpcstat);
|
|
|
|
// To help support the new COM+ process recycling feature
|
|
HRESULT RetireServer(
|
|
[in] handle_t hRpc,
|
|
[in] PHPROCESS phProcess,
|
|
[in] GUID* pguidProcessIdentifier,
|
|
[out] error_status_t *prpcstat);
|
|
}
|