summaryrefslogtreecommitdiffstats
path: root/private/oleutest/balls/idl/stdrpc.hxx
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/oleutest/balls/idl/stdrpc.hxx
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/oleutest/balls/idl/stdrpc.hxx')
-rw-r--r--private/oleutest/balls/idl/stdrpc.hxx240
1 files changed, 240 insertions, 0 deletions
diff --git a/private/oleutest/balls/idl/stdrpc.hxx b/private/oleutest/balls/idl/stdrpc.hxx
new file mode 100644
index 000000000..920d94511
--- /dev/null
+++ b/private/oleutest/balls/idl/stdrpc.hxx
@@ -0,0 +1,240 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: stdrpc.hxx
+//
+// Contents: Private header file for building interface proxies and stubs.
+//
+// Classes: CStdPSFactoryBuffer
+// CStubBase
+// CProxyBase
+// CStdProxyBuffer
+// CStreamOnMessage
+//
+// Functions: RpcInitMessage
+// RpcGetBuffer
+// RpcSendReceive
+// RpcFreeBuffer
+// RpcGetMarshalSizeMax
+// RpcMarshalInterface
+// RpcUnmarshalInterface
+// RpcClientErrorHandler
+// RpcServerErrorHandler
+//
+// History: 4-Jul-93 ShannonC Created
+// 3-Aug-93 ShannonC Changes for NT511 and IDispatch support.
+// 20-Oct-93 ShannonC Changed to new IRpcChannelBuffer interface.
+//
+//--------------------------------------------------------------------------
+#ifndef __STDRPC_HXX__
+#define __STDRPC_HXX__
+
+#define _OLE2ANAC_H_
+#include <stdclass.hxx>
+#include "rpcferr.h"
+
+#pragma warning(4:4355)
+//+-------------------------------------------------------------------------
+//
+// Class: CStdPSFactoryBuffer
+//
+// Synopsis: Standard implementation of a proxy/stub factory. Proxy/stub factory
+// implementations should inherit this class and implement the
+// method.
+//
+// Derivation: IPSFactoryBuffer
+//
+// Notes: By deriving a class from this base class, you automatically
+// acquire implementations of DllGetClassObject and DllCanUnloadNow.
+//
+//--------------------------------------------------------------------------
+class CStdPSFactoryBuffer : public IPSFactoryBuffer, public CStdFactory
+{
+public:
+
+ CStdPSFactoryBuffer(REFCLSID rcls);
+
+ //
+ // IUnknown methods
+ //
+
+ STDMETHOD(QueryInterface) ( REFIID riid, void** ppv );
+ STDMETHOD_(ULONG,AddRef) ( void );
+ STDMETHOD_(ULONG,Release) ( void );
+
+ //
+ // IPSFactoryBuffer methods must be provided in subclass.
+ //
+
+};
+
+#pragma warning(default:4355)
+
+//+-------------------------------------------------------------------------
+//
+// Class: CStubIUnknown
+//
+// Synopsis: Standard implementation of an RpcStubBuffer
+//
+// Derivation: IRpcStubBuffer
+//
+// Notes: The constructor calls DllAddRef, and the destructor calls
+// DllRelease. This updates the DLL reference count used by
+// DllCanUnloadNow.
+//
+//--------------------------------------------------------------------------
+
+class CStubIUnknown : public IRpcStubBuffer
+{
+public:
+ CStubIUnknown(REFIID riid);
+ ~CStubIUnknown();
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppv);
+ virtual ULONG STDMETHODCALLTYPE AddRef();
+ virtual ULONG STDMETHODCALLTYPE Release();
+ virtual HRESULT STDMETHODCALLTYPE Connect(IUnknown *punkServer);
+ virtual void STDMETHODCALLTYPE Disconnect(void);
+ virtual IRpcStubBuffer *STDMETHODCALLTYPE IsIIDSupported(REFIID riid);
+ virtual ULONG STDMETHODCALLTYPE CountRefs(void);
+ virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface(void **ppv);
+ virtual void STDMETHODCALLTYPE DebugServerRelease(void *pv);
+
+ void *_pInterface;
+ IID _iid;
+
+private:
+ ULONG _cRefs;
+ IUnknown *_punk;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CProxyIUnknown.
+//
+// Synopsis: Base class for interface proxy.
+//
+// Notes: The interface proxy is used by a CStdProxyBuffer.
+// We store the _iid so we can support dispinterfaces.
+//
+//--------------------------------------------------------------------------
+class CProxyIUnknown
+{
+public:
+ CProxyIUnknown(IUnknown *punkOuter, REFIID riid);
+ ~CProxyIUnknown();
+
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface
+ (
+ REFIID riid,
+ void **ppvObject
+ );
+
+ virtual ULONG STDMETHODCALLTYPE AddRef
+ (
+ void
+ );
+
+ virtual ULONG STDMETHODCALLTYPE Release
+ (
+ void
+ );
+
+ IUnknown *_punkOuter;
+ IID _iid;
+ IRpcChannelBuffer *_pRpcChannel;
+ CProxyIUnknown *_pNext;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CStdProxyBuffer
+//
+// Synopsis: Standard implementation of an RpcProxyBuffer.
+//
+// Derivation: IRpcProxyBuffer
+//
+// Notes: The constructor calls DllAddRef, and the destructor calls
+// DllRelease. This updates the DLL reference count used by
+// DllCanUnloadNow.
+//
+// The _pProxy data member points to an interface proxy.
+// The interface proxy provides the public interface seen by the
+// client application.
+//
+//--------------------------------------------------------------------------
+class CStdProxyBuffer : public IRpcProxyBuffer
+{
+public:
+ CStdProxyBuffer(CProxyIUnknown *pProxy);
+ ~CStdProxyBuffer();
+ virtual ULONG STDMETHODCALLTYPE AddRef();
+ virtual ULONG STDMETHODCALLTYPE Release();
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppv);
+ virtual HRESULT STDMETHODCALLTYPE Connect(IRpcChannelBuffer *pChannel);
+ virtual void STDMETHODCALLTYPE Disconnect();
+
+private:
+ ULONG _cRefs;
+ CProxyIUnknown *_pProxy;
+};
+
+typedef struct tagMIDLMESSAGE : tagRPCOLEMESSAGE
+{
+ IRpcChannelBuffer *pRpcChannel;
+ void *packet;
+ DWORD dwExceptionCode;
+} MIDLMESSAGE;
+
+void STDAPICALLTYPE RpcInitMessage(MIDLMESSAGE *pMessage, IRpcChannelBuffer *pRpcChannel);
+void STDAPICALLTYPE RpcGetBuffer(MIDLMESSAGE *pMessage, REFIID riid);
+void STDAPICALLTYPE RpcSendReceive(MIDLMESSAGE *pMessage);
+void STDAPICALLTYPE RpcFreeBuffer(MIDLMESSAGE *pMessage);
+void STDAPICALLTYPE RpcGetMarshalSizeMax(RPC_MESSAGE *pMessage, REFIID riid, IUnknown *punk);
+void STDAPICALLTYPE RpcMarshalInterface(RPC_MESSAGE *pMessage, REFIID riid, void *pv);
+void STDAPICALLTYPE RpcUnmarshalInterface(RPC_MESSAGE *pMessage, REFIID riid, void **ppv);
+void STDAPICALLTYPE RpcClientErrorHandler(MIDLMESSAGE *pMessage, DWORD dwException, HRESULT *phResult, error_status_t *pCommStatus, error_status_t *pFaultStatus);
+void STDAPICALLTYPE RpcCheckHRESULT(HRESULT hr);
+HRESULT STDAPICALLTYPE RpcServerErrorHandler(MIDLMESSAGE *pMessage, DWORD dwException);
+
+class CStreamOnMessage : public IStream
+{
+
+ public:
+ STDMETHOD (QueryInterface) ( THIS_ REFIID riid, LPVOID FAR* ppvObj);
+ STDMETHOD_(ULONG,AddRef) ( THIS );
+ STDMETHOD_(ULONG,Release) ( THIS );
+ STDMETHOD (Read) (THIS_ VOID HUGEP *pv,
+ ULONG cb, ULONG *pcbRead) ;
+ STDMETHOD (Write) (THIS_ VOID const HUGEP *pv,
+ ULONG cb,
+ ULONG *pcbWritten) ;
+ STDMETHOD (Seek) (THIS_ LARGE_INTEGER dlibMove,
+ DWORD dwOrigin,
+ ULARGE_INTEGER *plibNewPosition) ;
+ STDMETHOD (SetSize) (THIS_ ULARGE_INTEGER libNewSize) ;
+ STDMETHOD (CopyTo) (THIS_ IStream *pstm,
+ ULARGE_INTEGER cb,
+ ULARGE_INTEGER *pcbRead,
+ ULARGE_INTEGER *pcbWritten) ;
+ STDMETHOD (Commit) (THIS_ DWORD grfCommitFlags) ;
+ STDMETHOD (Revert) (THIS) ;
+ STDMETHOD (LockRegion) (THIS_ ULARGE_INTEGER libOffset,
+ ULARGE_INTEGER cb,
+ DWORD dwLockType) ;
+ STDMETHOD (UnlockRegion) (THIS_ ULARGE_INTEGER libOffset,
+ ULARGE_INTEGER cb,
+ DWORD dwLockType) ;
+ STDMETHOD (Stat) (THIS_ STATSTG *pstatstg, DWORD grfStatFlag) ;
+ STDMETHOD (Clone) (THIS_ IStream * *ppstm) ;
+
+ CStreamOnMessage( MIDLMESSAGE *pMessage);
+ ~CStreamOnMessage();
+
+ unsigned char *actual_buffer;
+ MIDLMESSAGE *message;
+ ULONG ref_count;
+};
+
+#endif //__STDRPC_HXX__