Remove stale HPC Pack 2008 Beta 1 objects
[mirror/winof/.git] / ulp / nd / user / NdProv.h
1 /*\r
2  * Copyright (c) 2008 Microsoft 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  * $Id:$\r
30  */\r
31 \r
32 #pragma once\r
33 #include <iba/ib_at_ioctl.h>\r
34 \r
35 #ifdef __cplusplus\r
36 namespace NetworkDirect\r
37 {\r
38 \r
39 \r
40 ///////////////////////////////////////////////////////////////////////////////\r
41 //\r
42 // HPC Pack 2008 Beta 2 SPI\r
43 //\r
44 ///////////////////////////////////////////////////////////////////////////////\r
45 \r
46 class CProvider :\r
47     public INDProvider\r
48 {\r
49     friend class CClassFactory;\r
50 \r
51 public:\r
52     CProvider(void);\r
53     ~CProvider(void);\r
54 \r
55     // IUnknown Methods\r
56     HRESULT STDMETHODCALLTYPE QueryInterface(\r
57         REFIID riid,\r
58         void** ppObject\r
59         );\r
60 \r
61     ULONG STDMETHODCALLTYPE AddRef(void);\r
62     ULONG STDMETHODCALLTYPE Release(void);\r
63 \r
64     // INDProvider Methods\r
65     HRESULT STDMETHODCALLTYPE QueryAddressList(\r
66         __out_bcount_part_opt(*pBufferSize, *pBufferSize) SOCKET_ADDRESS_LIST* pAddressList,\r
67         __inout SIZE_T* pBufferSize\r
68         );\r
69 \r
70     HRESULT STDMETHODCALLTYPE OpenAdapter(\r
71         __in_bcount(AddressLength) const struct sockaddr* pAddress,\r
72         __in SIZE_T AddressLength,\r
73         __deref_out INDAdapter** ppAdapter\r
74         );\r
75 \r
76 private:\r
77     volatile LONG m_nRef;\r
78 };\r
79 \r
80 \r
81 class CClassFactory : public IClassFactory\r
82 {\r
83 public:\r
84     CClassFactory(void);\r
85     ~CClassFactory(void);\r
86 \r
87     // IUnknown Methods.\r
88     HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppObject );\r
89     ULONG STDMETHODCALLTYPE AddRef(void);\r
90     ULONG STDMETHODCALLTYPE Release(void);\r
91 \r
92     // IClassFactory Methods.\r
93     HRESULT STDMETHODCALLTYPE CreateInstance( IUnknown* pUnkOuter, REFIID riid, void** ppObject );\r
94     HRESULT STDMETHODCALLTYPE LockServer( BOOL fLock );\r
95 \r
96 private:\r
97     volatile LONG m_nRef;\r
98 };\r
99 \r
100 } // namespace\r
101 \r
102 void* __cdecl operator new(\r
103     size_t count\r
104     );\r
105 \r
106 void __cdecl operator delete(\r
107     void* object\r
108     );\r
109 \r
110 #endif // __cplusplus\r