diff options
Diffstat (limited to 'private/oleutest/balls/common/crpc.cxx')
-rw-r--r-- | private/oleutest/balls/common/crpc.cxx | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/private/oleutest/balls/common/crpc.cxx b/private/oleutest/balls/common/crpc.cxx new file mode 100644 index 000000000..305f324b2 --- /dev/null +++ b/private/oleutest/balls/common/crpc.cxx @@ -0,0 +1,347 @@ +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1992. +// +// File: crpc.cxx +// +// Contents: implementations for rpc test +// +// Functions: +// CRpcTest::CRpcTest +// CRpcTest::~CRpcTest +// CRpcTest::QueryInterface +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- + +#include <pch.cxx> +#pragma hdrstop +#include <crpc.hxx> // class definition + +IUnknown *gpPunk = NULL; + +//+------------------------------------------------------------------------- +// +// Method: CRpcTest::CRpcTest +// +// Synopsis: Creates the application window +// +// Arguments: [pisb] - ISysBind instance +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +CRpcTest::CRpcTest(void) : _punkIn(NULL) +{ + GlobalRefs(TRUE); + + ENLIST_TRACKING(CRpcTest); +} + + +//+------------------------------------------------------------------------- +// +// Method: CRpcTest::~CRpcTest +// +// Synopsis: Cleans up object +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +CRpcTest::~CRpcTest(void) +{ + GlobalRefs(FALSE); +} + + +//+------------------------------------------------------------------------- +// +// Method: CRpcTest::QueryInterface +// +// Synopsis: Gets called when a WM_COMMAND message received. +// +// Arguments: [ifid] - interface instance requested +// [ppunk] - where to put pointer to interface instance +// +// Returns: S_OK or ERROR_BAD_COMMAND +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::QueryInterface(REFIID riid, void **ppunk) +{ + SCODE sc = S_OK; + + if (IsEqualIID(riid,IID_IUnknown) || + IsEqualIID(riid,IID_IRpcTest)) + { + // Increase the reference count + *ppunk = (void *)(IRpcTest *) this; + AddRef(); + } + else + { + *ppunk = NULL; + sc = E_NOINTERFACE; + } + + return sc; +} + + +//+------------------------------------------------------------------------- +// +// Method: CRpcTest::Void +// +// Synopsis: tests passing no parameters +// +// Arguments: +// +// Returns: S_OK or ERROR_BAD_COMMAND +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::Void(void) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::VoidRC(void) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::VoidPtrIn(ULONG cb, BYTE *pv) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::VoidPtrOut(ULONG cb, ULONG *pcb, BYTE *pv) +{ + memset(pv, 1, cb); + *pcb = cb; + return S_OK; +} + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::Dword +// +// Synopsis: tests passing dwords in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::DwordIn(DWORD dw) +{ + return S_OK; +} + + +STDMETHODIMP CRpcTest::DwordOut(DWORD *pdw) +{ + *pdw = 1; + return S_OK; +} + + +STDMETHODIMP CRpcTest::DwordInOut(DWORD *pdw) +{ + *pdw = 1; + return S_OK; +} + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::Li +// +// Synopsis: tests passing LARGE INTEGERS in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- + +STDMETHODIMP CRpcTest::LiIn(LARGE_INTEGER li) +{ + return S_OK; +} + + +STDMETHODIMP CRpcTest::LiOut(LARGE_INTEGER *pli) +{ + pli->LowPart = 0; + pli->HighPart = 1; + return S_OK; +} + + +STDMETHODIMP CRpcTest::ULiIn(ULARGE_INTEGER uli) +{ + return S_OK; +} + + +STDMETHODIMP CRpcTest::ULiOut(ULARGE_INTEGER *puli) +{ + puli->LowPart = 0; + puli->HighPart = 1; + return S_OK; +} + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::String +// +// Synopsis: tests passing strings in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::StringIn(LPOLESTR pwsz) +{ + return S_OK; +} + + +STDMETHODIMP CRpcTest::StringOut(LPOLESTR *ppwsz) +{ + // LPOLESTR pwsz = new OLECHAR[80]; + // *ppwsz = pwsz; + olestrcpy(*ppwsz, OLESTR("Hello World This is a Message")); + return S_OK; +} + + +STDMETHODIMP CRpcTest::StringInOut(LPOLESTR pwsz) +{ + olestrcpy(pwsz, OLESTR("Hello World This is a Message")); + return S_OK; +} + + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::Guid +// +// Synopsis: tests passing GUIDs in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::GuidIn(GUID guid) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::GuidOut(GUID *piid) +{ + memcpy(piid, &IID_IRpcTest, sizeof(GUID)); + return S_OK; +} + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::IUnknown +// +// Synopsis: tests passing IUnknown interfaces in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::IUnknownIn(IUnknown *punkIn) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::IUnknownOut(IUnknown **ppunk) +{ + gpPunk->AddRef(); + *ppunk = gpPunk; + return S_OK; +} + +STDMETHODIMP CRpcTest::IUnknownInKeep(IUnknown *punkIn) +{ + if (punkIn) + { + punkIn->AddRef(); + + if (punkIn != _punkIn) + { + _punkIn->Release(); + _punkIn = punkIn; + } + } + + return S_OK; +} + +STDMETHODIMP CRpcTest::IUnknownInRelease() +{ + if (_punkIn) + { + _punkIn->Release(); + } + + return S_OK; +} + +STDMETHODIMP CRpcTest::IUnknownOutKeep(IUnknown **ppunk) +{ + *ppunk = (IUnknown *)this; + AddRef(); + return S_OK; +} + + +//+------------------------------------------------------------------------- +// +// Function: CRpcTest::Interface +// +// Synopsis: tests passing whose iid is specified by riid in and out +// +// Arguments: +// +// Returns: S_OK +// +// History: 06-Aug-92 Ricksa Created +// +//-------------------------------------------------------------------------- +STDMETHODIMP CRpcTest::InterfaceIn(REFIID riid, IUnknown *punk) +{ + return S_OK; +} + +STDMETHODIMP CRpcTest::InterfaceOut(REFIID riid, IUnknown **ppunk) +{ + this->QueryInterface(riid, (void **)ppunk); + return S_OK; +} |