[26] | 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: kernellogcontrol.h,v 1.2 2003/06/30 15:58:39 takayuki Exp $
|
---|
| 51 | */
|
---|
| 52 |
|
---|
| 53 | // KernelLogControl.h : Declaration of the CKernelLogControl
|
---|
| 54 |
|
---|
| 55 | #ifndef __KERNELLOGCONTROL_H_
|
---|
| 56 | #define __KERNELLOGCONTROL_H_
|
---|
| 57 |
|
---|
| 58 | #include "resource.h" // ã¡ã¤ã³ ã·ã³ãã«
|
---|
| 59 | #include <atlctl.h>
|
---|
| 60 | #include "watcherCP.h"
|
---|
| 61 |
|
---|
| 62 | const CLSID CLSID_KernelLog = {0x4BD327FC,0x9E4A,0x4A5D,{0x95,0x03,0x27,0xC9,0x79,0xA8,0xE8,0x02}};
|
---|
| 63 |
|
---|
| 64 | MIDL_INTERFACE("395F900A-AC7E-4A78-9BC1-EE5EF76254FF")
|
---|
| 65 | IKernelLog : public IUnknown
|
---|
| 66 | {
|
---|
| 67 | public:
|
---|
| 68 | };
|
---|
| 69 |
|
---|
| 70 | MIDL_INTERFACE("35E35399-55ED-45FC-8F0B-4A1BC6CEA3F0")
|
---|
| 71 | _IKernelLogEvents : public IUnknown
|
---|
| 72 | {
|
---|
| 73 | public:
|
---|
| 74 | virtual HRESULT STDMETHODCALLTYPE OnKernelStart(void) = 0;
|
---|
| 75 | virtual HRESULT STDMETHODCALLTYPE OnKernelExit( void) = 0;
|
---|
| 76 | virtual HRESULT STDMETHODCALLTYPE OnLogEvent(long sz, byte __RPC_FAR data[]) = 0;
|
---|
| 77 | };
|
---|
| 78 |
|
---|
| 79 | /////////////////////////////////////////////////////////////////////////////
|
---|
| 80 | // CKernelLogControl
|
---|
| 81 | class ATL_NO_VTABLE CKernelLogControl :
|
---|
| 82 | public CComObjectRootEx<CComSingleThreadModel>,
|
---|
| 83 | public IDispatchImpl<IKernelLogControl, &IID_IKernelLogControl, &LIBID_WATCHERLib>,
|
---|
| 84 | public CComControl<CKernelLogControl>,
|
---|
| 85 | public IPersistStreamInitImpl<CKernelLogControl>,
|
---|
| 86 | public IOleControlImpl<CKernelLogControl>,
|
---|
| 87 | public IOleObjectImpl<CKernelLogControl>,
|
---|
| 88 | public IOleInPlaceActiveObjectImpl<CKernelLogControl>,
|
---|
| 89 | public IViewObjectExImpl<CKernelLogControl>,
|
---|
| 90 | public IOleInPlaceObjectWindowlessImpl<CKernelLogControl>,
|
---|
| 91 | public IConnectionPointContainerImpl<CKernelLogControl>,
|
---|
| 92 | public IPersistStorageImpl<CKernelLogControl>,
|
---|
| 93 | public ISpecifyPropertyPagesImpl<CKernelLogControl>,
|
---|
| 94 | public IQuickActivateImpl<CKernelLogControl>,
|
---|
| 95 | public IDataObjectImpl<CKernelLogControl>,
|
---|
| 96 | public IProvideClassInfo2Impl<&CLSID_KernelLogControl, &DIID__IKernelLogControlEvents, &LIBID_WATCHERLib>,
|
---|
| 97 | public IPropertyNotifySinkCP<CKernelLogControl>,
|
---|
| 98 | public CComCoClass<CKernelLogControl, &CLSID_KernelLogControl>,
|
---|
| 99 | public CProxy_IKernelLogControlEvents< CKernelLogControl >,
|
---|
| 100 | public _IKernelLogEvents
|
---|
| 101 | {
|
---|
| 102 | public:
|
---|
| 103 | CKernelLogControl()
|
---|
| 104 | {
|
---|
| 105 | buffer = NULL;
|
---|
| 106 | log = NULL;
|
---|
| 107 | }
|
---|
| 108 |
|
---|
| 109 | DECLARE_REGISTRY_RESOURCEID(IDR_KERNELLOGCONTROL)
|
---|
| 110 |
|
---|
| 111 | DECLARE_PROTECT_FINAL_CONSTRUCT()
|
---|
| 112 |
|
---|
| 113 | BEGIN_COM_MAP(CKernelLogControl)
|
---|
| 114 | COM_INTERFACE_ENTRY(IKernelLogControl)
|
---|
| 115 | COM_INTERFACE_ENTRY(IDispatch)
|
---|
| 116 | COM_INTERFACE_ENTRY(IViewObjectEx)
|
---|
| 117 | COM_INTERFACE_ENTRY(IViewObject2)
|
---|
| 118 | COM_INTERFACE_ENTRY(IViewObject)
|
---|
| 119 | COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
|
---|
| 120 | COM_INTERFACE_ENTRY(IOleInPlaceObject)
|
---|
| 121 | COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
|
---|
| 122 | COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
|
---|
| 123 | COM_INTERFACE_ENTRY(IOleControl)
|
---|
| 124 | COM_INTERFACE_ENTRY(IOleObject)
|
---|
| 125 | COM_INTERFACE_ENTRY(IPersistStreamInit)
|
---|
| 126 | COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
|
---|
| 127 | COM_INTERFACE_ENTRY(IConnectionPointContainer)
|
---|
| 128 | COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
|
---|
| 129 | COM_INTERFACE_ENTRY(IQuickActivate)
|
---|
| 130 | COM_INTERFACE_ENTRY(IPersistStorage)
|
---|
| 131 | COM_INTERFACE_ENTRY(IDataObject)
|
---|
| 132 | COM_INTERFACE_ENTRY(IProvideClassInfo)
|
---|
| 133 | COM_INTERFACE_ENTRY(IProvideClassInfo2)
|
---|
| 134 | COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
|
---|
| 135 | COM_INTERFACE_ENTRY(_IKernelLogEvents)
|
---|
| 136 | END_COM_MAP()
|
---|
| 137 |
|
---|
| 138 | BEGIN_PROP_MAP(CKernelLogControl)
|
---|
| 139 | PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
|
---|
| 140 | PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
|
---|
| 141 | // Example entries
|
---|
| 142 | // PROP_ENTRY("Property Description", dispid, clsid)
|
---|
| 143 | // PROP_PAGE(CLSID_StockColorPage)
|
---|
| 144 | END_PROP_MAP()
|
---|
| 145 |
|
---|
| 146 | BEGIN_CONNECTION_POINT_MAP(CKernelLogControl)
|
---|
| 147 | CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
|
---|
| 148 | CONNECTION_POINT_ENTRY(DIID__IKernelLogControlEvents)
|
---|
| 149 | END_CONNECTION_POINT_MAP()
|
---|
| 150 |
|
---|
| 151 | BEGIN_MSG_MAP(CKernelLogControl)
|
---|
| 152 | CHAIN_MSG_MAP(CComControl<CKernelLogControl>)
|
---|
| 153 | DEFAULT_REFLECTION_HANDLER()
|
---|
| 154 | END_MSG_MAP()
|
---|
| 155 | // Handler prototypes:
|
---|
| 156 | // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
---|
| 157 | // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
---|
| 158 | // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
|
---|
| 159 |
|
---|
| 160 |
|
---|
| 161 |
|
---|
| 162 | // IViewObjectEx
|
---|
| 163 | DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
|
---|
| 164 |
|
---|
| 165 | // IKernelLogControl
|
---|
| 166 | public:
|
---|
| 167 | STDMETHOD(get_Param)(long index, /*[out, retval]*/ long *pVal);
|
---|
| 168 | STDMETHOD(get_isValid)(/*[out, retval]*/ BOOL *pVal);
|
---|
| 169 | STDMETHOD(get_Logtim)(/*[out, retval]*/ long *pVal);
|
---|
| 170 | STDMETHOD(get_Type)(/*[out, retval]*/ long *pVal);
|
---|
| 171 | STDMETHOD(Close)();
|
---|
| 172 | STDMETHOD(Open)();
|
---|
| 173 |
|
---|
| 174 | HRESULT OnDraw(ATL_DRAWINFO& di)
|
---|
| 175 | {
|
---|
| 176 | RECT& rc = *(RECT*)di.prcBounds;
|
---|
| 177 | Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
|
---|
| 178 |
|
---|
| 179 | SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
|
---|
| 180 | LPCTSTR pszText = _T("ATL 3.0 : KernelLogControl");
|
---|
| 181 | TextOut(di.hdcDraw,
|
---|
| 182 | (rc.left + rc.right) / 2,
|
---|
| 183 | (rc.top + rc.bottom) / 2,
|
---|
| 184 | pszText,
|
---|
| 185 | lstrlen(pszText));
|
---|
| 186 |
|
---|
| 187 | return S_OK;
|
---|
| 188 | }
|
---|
| 189 | // IKernelLog
|
---|
| 190 | // _IKernelLogEvents
|
---|
| 191 | STDMETHOD(OnKernelStart)()
|
---|
| 192 | {
|
---|
| 193 | Fire_OnKernelStart();
|
---|
| 194 | return S_OK;
|
---|
| 195 | }
|
---|
| 196 | STDMETHOD(OnKernelExit)()
|
---|
| 197 | {
|
---|
| 198 | Fire_OnKernelExit();
|
---|
| 199 | return S_OK;
|
---|
| 200 | }
|
---|
| 201 | STDMETHOD(OnLogEvent)(LONG sz, byte __RPC_FAR data [])
|
---|
| 202 | {
|
---|
| 203 | if(buffer != NULL)
|
---|
| 204 | ::GlobalFree((HGLOBAL)buffer);
|
---|
| 205 |
|
---|
| 206 | log = reinterpret_cast<DBIFLOG *>(data);
|
---|
| 207 | Fire_OnLogEvent(*(int *)data);
|
---|
| 208 | log = NULL;
|
---|
| 209 |
|
---|
| 210 | return S_OK;
|
---|
| 211 | }
|
---|
| 212 |
|
---|
| 213 | CComPtr<IKernelLog> manager;
|
---|
| 214 | DWORD cookie;
|
---|
| 215 | DBIFLOG * log;
|
---|
| 216 | void * buffer;
|
---|
| 217 | };
|
---|
| 218 |
|
---|
| 219 | #endif //__KERNELLOGCONTROL_H_
|
---|