summaryrefslogtreecommitdiffstats
path: root/private/oleutest/balls/common/crpc.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/oleutest/balls/common/crpc.cxx')
-rw-r--r--private/oleutest/balls/common/crpc.cxx347
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;
+}