netdirect: add winverbs ND provider
[mirror/winof/.git] / ulp / netdirect / user / nd_provider.h
1 /*\r
2  * Copyright (c) 2009 Intel Corporation. All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  */\r
29 \r
30 #pragma once\r
31 \r
32 #ifndef _ND_PROVIDER_H_\r
33 #define _ND_PROVIDER_H_\r
34 \r
35 #include <initguid.h>\r
36 #include <ndspi.h>\r
37 #include "nd_base.h"\r
38 \r
39 class CNDProvider : public INDProvider, public CNDBase\r
40 {\r
41 public:\r
42         // IUnknown methods\r
43         STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);\r
44         STDMETHODIMP_(ULONG) AddRef();\r
45         STDMETHODIMP_(ULONG) Release();\r
46 \r
47         // INDProvider methods\r
48         STDMETHODIMP QueryAddressList(SOCKET_ADDRESS_LIST* pAddressList,\r
49                                                                   SIZE_T* pBufferSize);\r
50         STDMETHODIMP OpenAdapter(const struct sockaddr* pAddress,\r
51                                                          SIZE_T AddressLength, INDAdapter** ppAdapter);\r
52 \r
53         CNDProvider() {};\r
54         ~CNDProvider() {};\r
55         void Delete() {delete this;}\r
56 };\r
57 \r
58 \r
59 class CNDClassFactory : public IClassFactory, public CNDBase\r
60 {\r
61 public:\r
62         // IUnknown methods\r
63         STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);\r
64         STDMETHODIMP_(ULONG) AddRef();\r
65         STDMETHODIMP_(ULONG) Release();\r
66 \r
67         // IClassFactory methods\r
68         STDMETHODIMP CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppObject);\r
69         STDMETHODIMP LockServer(BOOL fLock);\r
70 \r
71         CNDClassFactory() {};\r
72         ~CNDClassFactory() {};\r
73         void Delete() {delete this;}\r
74 };\r
75 \r
76 #endif // _ND_PROVIDER_H_