From 8916470dca0a53b0c7e45c0a5f9b60b1098c964d Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Mon, 26 Jul 2010 15:12:11 -0700 Subject: [PATCH] nd2/provider: update provider to latest ND APIs Signed-off-by: Sean Hefty --- trunk/ulp/netdirect2/user/nd_provider.cpp | 21 +++++++++++++++- trunk/ulp/netdirect2/user/nd_provider.h | 30 +++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/trunk/ulp/netdirect2/user/nd_provider.cpp b/trunk/ulp/netdirect2/user/nd_provider.cpp index 92835fdf..84da4dd3 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.cpp +++ b/trunk/ulp/netdirect2/user/nd_provider.cpp @@ -33,7 +33,26 @@ CNDProvider::CNDProvider() { - WvGetObject(IID_IWVProvider, (LPVOID *) &m_pWvProvider); + m_pWvProvider = NULL; +} + +STDMETHODIMP CNDProvider:: +Init() +{ + HRESULT hr; + + hr = WvGetObject(IID_IWVProvider, (LPVOID *) &m_pWvProvider); + if (FAILED(hr)) { + return hr; + } + + if (!SetFileCompletionNotificationModes(m_pWvProvider->GetFileHandle(), + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS | + FILE_SKIP_SET_EVENT_ON_HANDLE)) { + return HRESULT_FROM_WIN32(GetLastError()); + } + + return ND_SUCCESS; } CNDProvider::~CNDProvider() diff --git a/trunk/ulp/netdirect2/user/nd_provider.h b/trunk/ulp/netdirect2/user/nd_provider.h index 15a74f6e..504d5d1c 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.h +++ b/trunk/ulp/netdirect2/user/nd_provider.h @@ -53,11 +53,41 @@ public: CNDProvider(); ~CNDProvider(); + void Delete() {delete this;} + static STDMETHODIMP + CreateInstance(CNDProvider **ppProvider) + { + HRESULT hr; + CNDProvider *provider; + + provider = new CNDProvider(provider); + if (provider == NULL) { + hr = ND_NO_MEMORY; + goto err1; + } + + hr = provider->Init(); + if (FAILED(hr)) { + goto err2; + } + + *ppProvider = provider; + return ND_SUCCESS; + + err2: + provider->Release(); + err1: + *ppProvider = NULL; + return hr; + } STDMETHODIMP QueryAdapterAddressList(SOCKET_ADDRESS_LIST* pAddressList, SIZE_T* pcbAddressList, UINT64 adapterId); IWVProvider *m_pWvProvider; + +private: + STDMETHODIMP Init(); }; -- 2.46.0