📄 devicecontrol.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2002 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * 惧淡螟侯涪荚は·Free Software Foundation によって给山されている * GNU General Public License の Version 2 に淡揭されている掘凤か·笆 * 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ * アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ * ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 * に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· * この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 * み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ * (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する * ことˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚を倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· * 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ * ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい * かなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: devicecontrol.h,v 1.2 2002/04/10 11:26:20 takayuki Exp $ */#ifndef __DEVICECONTROL_H_#define __DEVICECONTROL_H_#include "resource.h" // メイン シンボル#include <atlctl.h>#include "deviceCP.h"/////////////////////////////////////////////////////////////////////////////// CDeviceControlMIDL_INTERFACE("DA93137D-FB52-4421-B95D-9077340AD03B")_IDeviceEvents : public IUnknown{public: virtual HRESULT STDMETHODCALLTYPE OnRead(long address,long sz,byte __RPC_FAR data[]) = 0; virtual HRESULT STDMETHODCALLTYPE OnWrite(long address,long sz,byte __RPC_FAR data[]) = 0; virtual HRESULT STDMETHODCALLTYPE OnKernelStart(void) = 0; virtual HRESULT STDMETHODCALLTYPE OnKernelExit(void) = 0;};MIDL_INTERFACE("6575FAAB-8750-42D2-ADDD-4BE764AA2767")IDevice : public IUnknown{public: virtual HRESULT STDMETHODCALLTYPE IsValid(BOOL __RPC_FAR *valid) = 0; virtual HRESULT STDMETHODCALLTYPE SetDeviceName(BSTR devname) = 0; virtual HRESULT STDMETHODCALLTYPE Map(unsigned long address,unsigned long size) = 0; virtual HRESULT STDMETHODCALLTYPE Unmap(unsigned long address) = 0; virtual HRESULT STDMETHODCALLTYPE RaiseInterrupt(unsigned long inhno) = 0;};class ATL_NO_VTABLE CDeviceControl : public CComObjectRootEx<CComSingleThreadModel>, public IDispatchImpl<IDeviceControl, &IID_IDeviceControl, &LIBID_ATLDEVICELib>, public CComControl<CDeviceControl>, public IPersistStreamInitImpl<CDeviceControl>, public IOleControlImpl<CDeviceControl>, public IOleObjectImpl<CDeviceControl>, public IOleInPlaceActiveObjectImpl<CDeviceControl>, public IViewObjectExImpl<CDeviceControl>, public IOleInPlaceObjectWindowlessImpl<CDeviceControl>, public IConnectionPointContainerImpl<CDeviceControl>, public IPersistStorageImpl<CDeviceControl>, public ISpecifyPropertyPagesImpl<CDeviceControl>, public IQuickActivateImpl<CDeviceControl>, public IDataObjectImpl<CDeviceControl>, public IProvideClassInfo2Impl<&CLSID_DeviceControl, &DIID__IDeviceControlEvents, &LIBID_ATLDEVICELib>, public IPropertyNotifySinkCP<CDeviceControl>, public CComCoClass<CDeviceControl, &CLSID_DeviceControl>, public _IDeviceEvents, public CProxy_IDeviceControlEvents< CDeviceControl >{public: CDeviceControl() { DataPointer = 0; Limitation = 0; Offset = 0; KernelStarted = false; manager = 0; cookie = 0; m_bWindowOnly = TRUE; AccessSize = 1; }DECLARE_REGISTRY_RESOURCEID(IDR_DEVICECONTROL)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CDeviceControl) COM_INTERFACE_ENTRY(IDeviceControl) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IViewObjectEx) COM_INTERFACE_ENTRY(IViewObject2) COM_INTERFACE_ENTRY(IViewObject) COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceObject) COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) COM_INTERFACE_ENTRY(IOleControl) COM_INTERFACE_ENTRY(IOleObject) COM_INTERFACE_ENTRY(IPersistStreamInit) COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) COM_INTERFACE_ENTRY(IConnectionPointContainer) COM_INTERFACE_ENTRY(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(IQuickActivate) COM_INTERFACE_ENTRY(IPersistStorage) COM_INTERFACE_ENTRY(IDataObject) COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2) COM_INTERFACE_ENTRY(_IDeviceEvents) COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)END_COM_MAP()BEGIN_PROP_MAP(CDeviceControl) PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) PROP_ENTRY("AccessSize",9,CLSID_NULL) // Example entries // PROP_ENTRY("Property Description", dispid, clsid) // PROP_PAGE(CLSID_StockColorPage)END_PROP_MAP()BEGIN_CONNECTION_POINT_MAP(CDeviceControl) CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink) CONNECTION_POINT_ENTRY(DIID__IDeviceControlEvents)END_CONNECTION_POINT_MAP()BEGIN_MSG_MAP(CDeviceControl) CHAIN_MSG_MAP(CComControl<CDeviceControl>) DEFAULT_REFLECTION_HANDLER()END_MSG_MAP()// Handler prototypes:// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);// IViewObjectEx DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)// IDeviceControlpublic: STDMETHOD(get_Value)(/*[out, retval]*/ long *pVal); STDMETHOD(put_Value)(/*[in]*/ long newVal); STDMETHOD(get_AccessSize)(/*[out, retval]*/ short *pVal); STDMETHOD(put_AccessSize)(/*[in]*/ short newVal); STDMETHOD(get_Offset)(/*[out, retval]*/ long *pVal); STDMETHOD(put_Offset)(/*[in]*/ long newVal); STDMETHOD(get_IsKernelStarted)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(Unmap)(/*[in]*/long address); STDMETHOD(Map)(/*[in]*/long address,/*[in]*/long size); STDMETHOD(RaiseInterrupt)(/*[in]*/long inhno); STDMETHOD(get_Valid)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(Close)(); STDMETHOD(Connect)(); HRESULT OnDraw(ATL_DRAWINFO& di) { RECT& rc = *(RECT*)di.prcBounds; HDC memDC; HINSTANCE hInstance; HBITMAP memImage; HBITMAP oldImage; hInstance = (HINSTANCE)GetWindowLong(GWL_HINSTANCE); memImage = ::LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_DEVICECONTROL_BIG)); memDC = ::CreateCompatibleDC(di.hdcDraw); oldImage = (HBITMAP) ::SelectObject(memDC,memImage); ::StretchBlt(di.hdcDraw,rc.left,rc.top,rc.right,rc.bottom,memDC,0,0,64,64,SRCCOPY); ::SelectObject(memDC, oldImage); ::DeleteObject(memImage); ::DeleteDC(memDC); return S_OK; }// _IDeviceEvents STDMETHOD(OnRead)(long address,long sz,byte __RPC_FAR data[]); STDMETHOD(OnWrite)(long address,long sz,byte __RPC_FAR data[]); STDMETHOD(OnKernelStart)(); STDMETHOD(OnKernelExit)(); DWORD cookie; CComPtr<IDevice> manager; bool KernelStarted; unsigned char * DataPointer; long Limitation; long Offset; short AccessSize;};#endif //__DEVICECONTROL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -