[ofw] [PATCH] nd2: simplify ND provider creation

Hefty, Sean sean.hefty at intel.com
Tue Jul 27 16:51:34 PDT 2010


nd2: simplify ND provider creation

From: Sean Hefty <sean.hefty at intel.com>

Remove the CNDClassFactory implementation and instead create
ND provider objects directly in DllGetClassObject().

Signed-off-by: Sean Hefty <sean.hefty at intel.com>
---
 trunk/ulp/netdirect2/user/nd_main.cpp     |    9 +----
 trunk/ulp/netdirect2/user/nd_provider.cpp |   55 +----------------------------
 trunk/ulp/netdirect2/user/nd_provider.h   |   21 +----------
 3 files changed, 6 insertions(+), 79 deletions(-)

diff --git a/trunk/ulp/netdirect2/user/nd_main.cpp b/trunk/ulp/netdirect2/user/nd_main.cpp
index 1b9e049..e995d60 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 cbc9c22..37362f7 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 0c38d8e..10d3900 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





More information about the ofw mailing list