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.
174 lines
5.1 KiB
174 lines
5.1 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1996.
|
|
//
|
|
// File: odeath.idl
|
|
//
|
|
//+-------------------------------------------------------------------------
|
|
|
|
#ifndef DO_NO_IMPORTS
|
|
import "unknwn.idl";
|
|
import "obase.idl";
|
|
import "wtypes.idl";
|
|
import "objidl.idl";
|
|
import "objidl.idl";
|
|
#endif
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Struct: XAptCallback
|
|
//
|
|
// Synopsys: An object context's DoCallback method must switch to its
|
|
// apartment if it resides in a different apartment than the
|
|
// caller. The context calls its apartment's remote unknown
|
|
// to accomplish the switch. This structure is a parameter
|
|
// block the object context passes to the remote unknown's
|
|
// DoCallback method.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
typedef __int64 PTRMEM;
|
|
#define GUIDSTR_MAX (1+ 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1)
|
|
typedef struct tagXAptCallback
|
|
{
|
|
PTRMEM pfnCallback;
|
|
PTRMEM pParam;
|
|
PTRMEM pServerCtx;
|
|
PTRMEM pUnk;
|
|
GUID iid;
|
|
int iMethod;
|
|
GUID guidProcessSecret;
|
|
} XAptCallback;
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Interface: IRemUnknownN
|
|
//
|
|
// Synopsys: This is a local interface used to convert strong references
|
|
// to weak references and vice versa. It is needed for the
|
|
// container/link/embedding aspects of OLE.
|
|
//
|
|
// It inherits from the highest numbered IRemUnknown version
|
|
// that is known for the current machine.
|
|
//
|
|
// Notes: Weak references are not permitted remotely.
|
|
//
|
|
//+-------------------------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(0000013C-0000-0000-C000-000000000046),
|
|
async_uuid(000B013C-0000-0000-C000-000000000046)
|
|
]
|
|
|
|
interface IRemUnknownN : IRemUnknown2
|
|
{
|
|
#ifndef DO_NO_IMPORTS
|
|
import "remunk.idl";
|
|
#endif
|
|
const unsigned long IRUF_CONVERTTOWEAK = 0x01;// make refs weak
|
|
const unsigned long IRUF_CONVERTTOSTRONG = 0x02;// make refs strong
|
|
const unsigned long IRUF_DISCONNECTIFLASTSTRONG = 0x04;// disconnect the
|
|
// object if last strong ref
|
|
HRESULT RemChangeRef
|
|
(
|
|
[in] unsigned long flags,
|
|
[in] unsigned short cInterfaceRefs,
|
|
[in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
|
|
);
|
|
|
|
HRESULT DoCallback
|
|
(
|
|
[in] XAptCallback *pCallbackData
|
|
);
|
|
}
|
|
|
|
//
|
|
// Enumeration to describe status of trying to run an oid down
|
|
//
|
|
typedef enum
|
|
{
|
|
ORS_DONTRUNDOWN = 0x0, // rundown refused
|
|
ORS_OK_TO_RUNDOWN = 0x1, // rundown accepted
|
|
ORS_OID_PINNED = 0x2 // rundown refused because stub is locked
|
|
} OID_RUNDOWN_STATUS;
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Interface: IRundown
|
|
//
|
|
// Synopsys: This is the local OID rundown interface. The object exporter
|
|
// calls it to notify the server which OIDs are no longer being
|
|
// pinged.
|
|
//
|
|
// Notes: This inherits from IRemUnknownN so that we can use the same
|
|
// IPID for all three interfaces. This is strictly a local
|
|
// implementation decision and does not affect remote protocol.
|
|
//
|
|
//+-------------------------------------------------------------------------
|
|
[
|
|
uuid(00000134-0000-0000-C000-000000000046)
|
|
#ifndef RAW
|
|
, async_uuid(000e0134-0000-0000-C000-000000000046),
|
|
object
|
|
#endif
|
|
]
|
|
|
|
interface IRundown
|
|
#ifndef RAW
|
|
: IRemUnknownN
|
|
#endif
|
|
|
|
{
|
|
#ifndef DO_NO_IMPORTS
|
|
import "iface.idl";
|
|
import "obase.idl";
|
|
import "remunk.idl";
|
|
#endif
|
|
#include "comhndl.h"
|
|
|
|
COM_DEFINES(IOSCM)
|
|
|
|
#ifdef RAW
|
|
// Define the functions in IRemUnknown2
|
|
HRESULT DummyRemQuery( handle_t handle );
|
|
HRESULT DummyRemAddRef( handle_t handle );
|
|
HRESULT DummyRemRelease( handle_t handle );
|
|
HRESULT DummyRemChangeRef( handle_t handle );
|
|
HRESULT DummyRemQueryInterface2( handle_t handle);
|
|
HRESULT DummyDoCallBack( handle_t handle);
|
|
|
|
error_status_t RawRundownOid
|
|
#else
|
|
HRESULT RundownOid
|
|
#endif
|
|
(
|
|
COM_HANDLE
|
|
[in] ULONG cOid,
|
|
[in, size_is(cOid)] OID aOid[],
|
|
[out, size_is(cOid)] BYTE aRundownStatus[] // see OID_RUNDOWN_STATUS above
|
|
);
|
|
}
|
|
|
|
#ifndef RAW
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDisconnectSink
|
|
//
|
|
// Interface is implemented by people who want to know about when a stub
|
|
// goes away.
|
|
//
|
|
//+-------------------------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(0000014A-0000-0000-C000-000000000046),
|
|
local
|
|
]
|
|
interface IDisconnectSink : IUnknown
|
|
{
|
|
void OnDisconnect([in]void *pvCookie);
|
|
}
|
|
|
|
#endif
|