123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- /*
- CallObjects: A Suite of Interfaces for Manipulating CallFrames as Objects
- Copyright (c) Microsoft Corporation. All rights reserved.
- */
- import "oaidl.idl";
- interface ICallInterceptor;
- interface ICallUnmarshal;
- interface ICallFrame;
- interface ICallFrameEvents;
- interface ICallFrameWalker;
- interface IInterfaceRelated;
- [uuid(D573B4B0-894E-11d2-B8B6-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallFrame : IUnknown
- {
-
- typedef struct
- {
- ULONG iMethod;
- BOOL fHasInValues;
- BOOL fHasInOutValues;
- BOOL fHasOutValues;
- BOOL fDerivesFromIDispatch;
- LONG cInInterfacesMax;
- LONG cInOutInterfacesMax;
- LONG cOutInterfacesMax;
- LONG cTopLevelInInterfaces;
- IID iid;
- ULONG cMethod;
- ULONG cParams;
- } CALLFRAMEINFO;
- typedef struct
- {
- BOOLEAN fIn;
- BOOLEAN fOut;
- ULONG stackOffset;
- ULONG cbParam;
- } CALLFRAMEPARAMINFO;
- HRESULT GetInfo
- (
- [out] CALLFRAMEINFO* pInfo
- );
-
- HRESULT GetIIDAndMethod
- (
- [out] IID* pIID,
- [out] ULONG* piMethod
- );
- HRESULT GetNames
- (
- [out] LPWSTR* pwszInterface,
- [out] LPWSTR* pwszMethod
- );
- PVOID GetStackLocation ();
- void SetStackLocation
- (
- [in] PVOID pvStack
- );
- void SetReturnValue
- (
- [in] HRESULT hr
- );
- HRESULT GetReturnValue ();
- HRESULT GetParamInfo
- (
- [in] ULONG iparam,
- [out] CALLFRAMEPARAMINFO* pInfo
- );
- HRESULT SetParam
- (
- [in] ULONG iparam,
- [in] VARIANT* pvar
- );
- HRESULT GetParam
- (
- [in] ULONG iparam,
- [out] VARIANT* pvar
- );
- typedef enum
- {
- CALLFRAME_COPY_NESTED = 1,
- CALLFRAME_COPY_INDEPENDENT = 2
- } CALLFRAME_COPY;
-
- HRESULT Copy
- (
- [in] CALLFRAME_COPY copyControl,
- [in] ICallFrameWalker* pWalker,
- [out] ICallFrame** ppFrame
- );
- HRESULT Free
- (
- [in] ICallFrame* pframeArgsDest,
- [in] ICallFrameWalker* pWalkerDestFree,
- [in] ICallFrameWalker* pWalkerCopy,
- [in] DWORD freeFlags,
- [in] ICallFrameWalker* pWalkerFree,
- [in] DWORD nullFlags
- );
- enum CALLFRAME_FREE
- {
- CALLFRAME_FREE_NONE = 0,
- CALLFRAME_FREE_IN = 1,
- CALLFRAME_FREE_INOUT = 2,
- CALLFRAME_FREE_OUT = 4,
- CALLFRAME_FREE_TOP_INOUT = 8,
- CALLFRAME_FREE_TOP_OUT = 16,
- CALLFRAME_FREE_ALL = 31,
- };
- enum CALLFRAME_NULL
- {
- CALLFRAME_NULL_NONE = 0,
- CALLFRAME_NULL_INOUT = 2,
- CALLFRAME_NULL_OUT = 4,
- CALLFRAME_NULL_ALL = 6,
- };
- HRESULT FreeParam
- (
- [in] ULONG iparam,
- [in] DWORD freeFlags,
- [in] ICallFrameWalker* pWalkerFree,
- [in] DWORD nullFlags
- );
- HRESULT WalkFrame
- (
- [in] DWORD walkWhat,
- [in] ICallFrameWalker* pWalker
- );
- enum CALLFRAME_WALK
- {
- CALLFRAME_WALK_IN = 1,
- CALLFRAME_WALK_INOUT = 2,
- CALLFRAME_WALK_OUT = 4,
- };
-
- typedef struct
- {
- BOOLEAN fIn;
- DWORD dwDestContext;
- LPVOID pvDestContext;
- IUnknown* punkReserved;
- GUID guidTransferSyntax;
- } CALLFRAME_MARSHALCONTEXT;
-
- HRESULT GetMarshalSizeMax
- (
- [in] CALLFRAME_MARSHALCONTEXT* pmshlContext,
- [in] MSHLFLAGS mshlflags,
- [out] ULONG* pcbBufferNeeded
- );
- HRESULT Marshal
- (
- [in] CALLFRAME_MARSHALCONTEXT* pmshlContext,
- [in] MSHLFLAGS mshlflags,
- [in,size_is(cbBuffer)] PVOID pBuffer,
- [in] ULONG cbBuffer,
- [out] ULONG* pcbBufferUsed,
- [out] RPCOLEDATAREP* pdataRep,
- [out] ULONG* prpcFlags
- );
- HRESULT Unmarshal
- (
- [in,size_is(cbBuffer)] PVOID pBuffer,
- [in] ULONG cbBuffer,
- [in] RPCOLEDATAREP dataRep,
- [in] CALLFRAME_MARSHALCONTEXT* pcontext,
- [out] ULONG* pcbUnmarshalled
- );
- HRESULT ReleaseMarshalData
- (
- [in,size_is(cbBuffer)] PVOID pBuffer,
- [in] ULONG cbBuffer,
- [in] ULONG ibFirstRelease,
- [in] RPCOLEDATAREP dataRep,
- [in] CALLFRAME_MARSHALCONTEXT* pcontext
- );
- HRESULT Invoke
- (
- [in] void* pvReceiver,
- ...
- );
-
- };
- [uuid(D573B4B1-894E-11d2-B8B6-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallIndirect : IUnknown
- {
-
- HRESULT CallIndirect
- (
- [out] HRESULT* phrReturn,
- [in] ULONG iMethod,
- [in] void* pvArgs,
- [out] ULONG* cbArgs
- );
- HRESULT GetMethodInfo
- (
- [in] ULONG iMethod,
- [out] CALLFRAMEINFO* pInfo,
- [out] LPWSTR* pwszMethod
- );
- HRESULT GetStackSize
- (
- [in] ULONG iMethod,
- [out] ULONG* cbArgs
- );
- HRESULT GetIID
- (
- [out] IID* piid,
- [out] BOOL* pfDerivesFromIDispatch,
- [out] ULONG* pcMethod,
- [out] LPWSTR* pwszInterface
- );
- };
- [uuid(60C7CA75-896D-11d2-B8B6-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallInterceptor : ICallIndirect
- {
- HRESULT RegisterSink
- (
- [in] ICallFrameEvents* psink
- );
- HRESULT GetRegisteredSink
- (
- [out] ICallFrameEvents** ppsink
- );
- };
- [uuid(FD5E0843-FC91-11d0-97D7-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallFrameEvents : IUnknown
- {
- HRESULT OnCall
- (
- [in] ICallFrame* pFrame /* A call frame bound to the just-received invocation */
- );
- };
- [uuid(5333B003-2E42-11d2-B89D-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallUnmarshal : IUnknown
- {
- HRESULT Unmarshal
- (
- [in] ULONG iMethod,
- [in,size_is(cbBuffer)] PVOID pBuffer,
- [in] ULONG cbBuffer,
- [in] BOOL fForceBufferCopy,
- [in] RPCOLEDATAREP dataRep,
- [in] CALLFRAME_MARSHALCONTEXT *pcontext,
- [out] ULONG* pcbUnmarshalled,
- [out] ICallFrame** ppFrame
- );
- HRESULT ReleaseMarshalData
- (
- [in] ULONG iMethod,
- [in,size_is(cbBuffer)] PVOID pBuffer,
- [in] ULONG cbBuffer,
- [in] ULONG ibFirstRelease,
- [in] RPCOLEDATAREP dataRep,
- [in] CALLFRAME_MARSHALCONTEXT* pcontext
- );
- };
- [uuid(08B23919-392D-11d2-B8A4-00C04FB9618A), object, pointer_default(unique), local]
- interface ICallFrameWalker : IUnknown
- {
- HRESULT OnWalkInterface
- (
- [in] REFIID iid,
- [in] PVOID* ppvInterface,
- [in] BOOL fIn,
- [in] BOOL fOut
- );
- };
- [uuid(D1FB5A79-7706-11d1-ADBA-00C04FC2ADC0), object, pointer_default(unique), local]
- interface IInterfaceRelated : IUnknown
- {
- HRESULT SetIID
- (
- [in] REFIID iid
- );
- HRESULT GetIID
- (
- [out] IID* piid
- );
- };
- cpp_quote("#define CALLFRAME_E_ALREADYINVOKED _HRESULT_TYPEDEF_( 0x8004d090 )")
- cpp_quote("#define CALLFRAME_E_COULDNTMAKECALL _HRESULT_TYPEDEF_( 0x8004d091 )")
- [uuid(15B51D8B-9BF6-11d1-B888-00C04FB9618A), local]
- interface ICallFrameAPIs {
- HRESULT __stdcall CoGetInterceptor
- (
- [in] REFIID iidIntercepted,
- [in] IUnknown* punkOuter,
- [in] REFIID iid,
- [out] void** ppv
- );
- HRESULT __stdcall CoGetInterceptorFromTypeInfo
- (
- [in] REFIID iidIntercepted,
- [in] IUnknown* punkOuter,
- [in] ITypeInfo* typeInfo,
- [in] REFIID iid,
- [out] void** ppv
- );
- };
|