From: Sean Hefty Date: Wed, 28 Jul 2010 17:22:00 +0000 (+0000) Subject: nd2: simplify ND provider creation X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=73feb31b9c9604802433c6f6734d4f0c36b19f49;p=~shefty%2Frdma-win.git nd2: simplify ND provider creation Remove the CNDClassFactory implementation and instead create ND provider objects directly in DllGetClassObject(). Signed-off-by: Sean Hefty git-svn-id: svn://openib.tc.cornell.edu/gen1@2863 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/ulp/netdirect2/user/nd_main.cpp b/trunk/ulp/netdirect2/user/nd_main.cpp index 1b9e0498..e995d608 100644 --- a/trunk/ulp/netdirect2/user/nd_main.cpp +++ b/trunk/ulp/netdirect2/user/nd_main.cpp @@ -72,17 +72,12 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv) { UNREFERENCED_PARAMETER(rclsid); - if (riid != IID_IClassFactory) { + if (riid != IID_INDProvider) { *ppv = NULL; return E_NOINTERFACE; } - *ppv = new CNDClassFactory(); - if (*ppv == NULL) { - return E_OUTOFMEMORY; - } - - return S_OK; + return CNDProvider::CreateInstance(ppv); } int WSPStartup(WORD wVersionRequested, LPWSPDATA lpWSPData, diff --git a/trunk/ulp/netdirect2/user/nd_provider.cpp b/trunk/ulp/netdirect2/user/nd_provider.cpp index cbc9c22d..37362f70 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.cpp +++ b/trunk/ulp/netdirect2/user/nd_provider.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2009-2010 Intel Corporation. All rights reserved. + * Copyright (c) 2010 Microsoft Corporation. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -64,7 +65,7 @@ CNDProvider::~CNDProvider() if (m_pWvProvider) { m_pWvProvider->Release(); } - InterlockedDecrement(&m_gRef); + InterlockedDecrement(&g_nRef); } STDMETHODIMP CNDProvider:: @@ -176,55 +177,3 @@ OpenAdapter(REFIID iid, UINT64 adapterId, VOID** ppAdapter) return CNDAdapter::CreateInstance(this, adapterId, ppAdapter); } - - -//------------------------- -// CNDClassFactory routines -//------------------------- - -STDMETHODIMP CNDClassFactory:: -QueryInterface(REFIID riid, LPVOID FAR* ppvObj) -{ - if (riid != IID_IUnknown && riid != IID_IClassFactory) { - *ppvObj = NULL; - return E_NOINTERFACE; - } - - *ppvObj = this; - AddRef(); - return ND_SUCCESS; -} - -STDMETHODIMP_(ULONG) CNDClassFactory:: -AddRef(void) -{ - return CNDBase::AddRef(); -} - -STDMETHODIMP_(ULONG) CNDClassFactory:: -Release(void) -{ - return CNDBase::Release(); -} - -STDMETHODIMP CNDClassFactory:: -CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppObject) -{ - if (pUnkOuter != NULL) { - return CLASS_E_NOAGGREGATION; - } - - if (riid != IID_INDProvider) { - *ppObject = NULL; - return E_NOINTERFACE; - } - - return CNDProvider::CreateInstance((CNDProvider **) ppObject); -} - -STDMETHODIMP CNDClassFactory:: -LockServer(BOOL fLock) -{ - UNREFERENCED_PARAMETER(fLock); - return S_OK; -} diff --git a/trunk/ulp/netdirect2/user/nd_provider.h b/trunk/ulp/netdirect2/user/nd_provider.h index 0c38d8e5..10d39008 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.h +++ b/trunk/ulp/netdirect2/user/nd_provider.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2009-2010 Intel Corporation. All rights reserved. + * Copyright (c) 2010 Microsoft Corporation. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -56,7 +57,7 @@ public: void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDProvider **ppProvider) + CreateInstance(VOID** ppProvider) { HRESULT hr; CNDProvider *provider; @@ -90,22 +91,4 @@ private: STDMETHODIMP Init(); }; - -class CNDClassFactory : public IClassFactory, public CNDBase -{ -public: - // IUnknown methods - STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj); - STDMETHODIMP_(ULONG) AddRef(); - STDMETHODIMP_(ULONG) Release(); - - // IClassFactory methods - STDMETHODIMP CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppObject); - STDMETHODIMP LockServer(BOOL fLock); - - CNDClassFactory() {}; - ~CNDClassFactory() {}; - void Delete() {delete this;} -}; - #endif // _ND_PROVIDER_H_ \ No newline at end of file