Remove stale HPC Pack 2008 Beta 1 objects
[mirror/winof/.git] / ulp / nd / user / NdMw.cpp
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 #include "NdMw.h"\r
33 #include "NdAdapter.h"\r
34 \r
35 #if defined(EVENT_TRACING)\r
36 #ifdef offsetof\r
37 #undef offsetof\r
38 #endif\r
39 #include "NdMw.tmh"\r
40 #endif\r
41 \r
42 \r
43 namespace NetworkDirect\r
44 {\r
45 \r
46     CMw::CMw(void) :\r
47         m_nRef( 1 ),\r
48         m_pParent( NULL )\r
49     {\r
50     }\r
51 \r
52     CMw::~CMw(void)\r
53     {\r
54         if( m_pParent )\r
55             m_pParent->Release();\r
56     }\r
57 \r
58     HRESULT CMw::Initialize(\r
59         CAdapter* pParent,\r
60         ND_RESULT* pInvalidateResult\r
61         )\r
62     {\r
63         m_pParent = pParent;\r
64         m_pParent->AddRef();\r
65 \r
66         m_pInvalidateResult = pInvalidateResult;\r
67         return S_OK;\r
68     }\r
69 \r
70     HRESULT CMw::QueryInterface(\r
71         REFIID riid,\r
72         LPVOID FAR* ppvObj\r
73         )\r
74     {\r
75         if( IsEqualIID( riid, IID_IUnknown ) )\r
76         {\r
77             *ppvObj = this;\r
78             return S_OK;\r
79         }\r
80 \r
81         if( IsEqualIID( riid, IID_INDMemoryWindow ) )\r
82         {\r
83             *ppvObj = this;\r
84             return S_OK;\r
85         }\r
86 \r
87         return E_NOINTERFACE;\r
88     }\r
89 \r
90     ULONG CMw::AddRef(void)\r
91     {\r
92         return InterlockedIncrement( &m_nRef );\r
93     }\r
94 \r
95     ULONG CMw::Release(void)\r
96     {\r
97         ULONG ref = InterlockedDecrement( &m_nRef );\r
98         if( ref == 0 )\r
99             delete this;\r
100 \r
101         return ref;\r
102     }\r
103 \r
104     HRESULT CMw::Close(void)\r
105     {\r
106         Release();\r
107         return S_OK;\r
108     }\r
109 \r
110 } // namespace\r