source: anotherchoice/tags/jsp-1.4.4-full-UTF8/windev/devicecontrol/deviceCP.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 5.5 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: deviceCP.h,v 1.4 2003/12/24 07:37:57 takayuki Exp $
51 */
52
53#ifndef _ATLDEVICECP_H_
54#define _ATLDEVICECP_H_
55
56
57template <class T>
58class CProxy_IDeviceControlEvents : public IConnectionPointImpl<T, &DIID__IDeviceControlEvents, CComDynamicUnkArray>
59{
60 //Warning this class may be recreated by the wizard.
61public:
62 HRESULT Fire_OnRead(LONG address, LONG sz)
63 {
64 CComVariant varResult;
65 T* pT = static_cast<T*>(this);
66 int nConnectionIndex;
67 CComVariant* pvars = new CComVariant[2];
68 int nConnections = m_vec.GetSize();
69
70 for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
71 {
72 pT->Lock();
73 CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
74 pT->Unlock();
75 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
76 if (pDispatch != NULL)
77 {
78 VariantClear(&varResult);
79 pvars[1] = address;
80 pvars[0] = sz;
81 DISPPARAMS disp = { pvars, NULL, 2, 0 };
82 pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
83 }
84 }
85 delete[] pvars;
86 return varResult.scode;
87
88 }
89 HRESULT Fire_OnWrite(LONG address, LONG sz)
90 {
91 CComVariant varResult;
92 T* pT = static_cast<T*>(this);
93 int nConnectionIndex;
94 CComVariant* pvars = new CComVariant[2];
95 int nConnections = m_vec.GetSize();
96
97 for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
98 {
99 pT->Lock();
100 CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
101 pT->Unlock();
102 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
103 if (pDispatch != NULL)
104 {
105 VariantClear(&varResult);
106 pvars[1] = address;
107 pvars[0] = sz;
108 DISPPARAMS disp = { pvars, NULL, 2, 0 };
109 pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
110 }
111 }
112 delete[] pvars;
113 return varResult.scode;
114
115 }
116 HRESULT Fire_OnKernelStart()
117 {
118 CComVariant varResult;
119 T* pT = static_cast<T*>(this);
120 int nConnectionIndex;
121 int nConnections = m_vec.GetSize();
122
123 for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
124 {
125 pT->Lock();
126 CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
127 pT->Unlock();
128 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
129 if (pDispatch != NULL)
130 {
131 VariantClear(&varResult);
132 DISPPARAMS disp = { NULL, NULL, 0, 0 };
133 pDispatch->Invoke(0x3, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
134 }
135 }
136 return varResult.scode;
137
138 }
139 HRESULT Fire_OnKernelExit()
140 {
141 CComVariant varResult;
142 T* pT = static_cast<T*>(this);
143 int nConnectionIndex;
144 int nConnections = m_vec.GetSize();
145
146 for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
147 {
148 pT->Lock();
149 CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
150 pT->Unlock();
151 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
152 if (pDispatch != NULL)
153 {
154 VariantClear(&varResult);
155 DISPPARAMS disp = { NULL, NULL, 0, 0 };
156 pDispatch->Invoke(0x4, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
157 }
158 }
159 return varResult.scode;
160
161 }
162};
163#endif
Note: See TracBrowser for help on using the repository browser.