近期有些人问我PCI设备驱动的问题, 和他们交流过后, 我建议他们先看一看<<The Windows NT Device Driver Book>>这本书, 个人感觉, 这本书写得很连贯流畅. PCI设备驱动基本包含了PCI的资源获取, 配置空间的读写, 中断的处理, 中断后半部在DPC中的处理. 同一时候, 也必须了解DMA, ScatterGater, MapRegister, Common Buffer等基础. 1.1 PCI设备资源获取 PCI设备的资源是系统依据设备的属性…
第二十篇(书中 9.1~9.3 节 内容 组件篇) 第八章中的内容. 以上都是基本的Js知识,我就不录入了. 直接来看 第9章. 开始 9.1节. 以上内容告诉你,Egret官方舍弃了GUI,使用了EUI. 至此,9.1节 内容结束. 开始 9.2节 内容. 重点: 1.Label组件的 普通文本使用 和 富文本使用. 操作: 1.Label组件的 普通文本使用 和 富文本使用. 至此,9.2节 内容结束. 开始 9.3节 . 重点: 1.用代码创建按钮. 2.查看按钮的内部构造,以及修改按钮的…
第十七篇(书中 7.4~8.2节 内容) 昨天看到 7.3 节,那么今天. 开始 7.4节.     好吧,这些其他的服务器运行知识,就不搞了... 至此,7.4节 内容结束. 开始 7.5节 内容. 额...后期接触到,我会去整整看的.现在先专心搞Egret. 至此,7.5节 内容结束. 开始 7.6节 内容. · 嗯...这节怎么说呢,其实就是把前面学会的,连贯的做一遍. 好吧,那我就做一遍吧. 我先去找点资源. 好,我找到资源了. 第一步,导入资源. 第二步,创建EUI组件. 在src目录…
综述 在上一篇介绍了linux驱动的调试方法,这一篇介绍一下在驱动编程中会遇到的并发和竟态以及如何处理并发和竞争. 首先什么是并发与竟态呢?并发(concurrency)指的是多个执行单元同时.并行被执行.而并发的执行单元对共享资源(硬件资源和软件上的全局.静态变量)的访问则容易导致竞态(race conditions).可能导致并发和竟态的情况有: SMP(Symmetric Multi-Processing),对称多处理结构.SMP是一种紧耦合.共享存储的系统模型,它的特点是多个CPU使用共…
Windows驱动跑在核心态(Kernel mode),驱动的调用者跑在用户态.如何使用户态进程与核心态驱动共享内存呢 ? 我们知道32位Windows中,默认状态下虚拟空间有4G,前2G是每个进程私有的,也就是说在进程切换的时候会变化,后2G是操作系统的,所以是固定的.既然用户态进程和核心态驱动在同一个进程空间里,是不是只要直接传个内存地址过来,就可以访问了?理论上可以但实际上不行,因为用户态的进程在不断地切换,使驱动运行时没法保证前面的用户态进程是哪个,也就不确定前2G虚拟地址空间的映射情况…
修改静态文本框内容: CWnd* pWnd = GetDlgItem(IDC_STATIC1); pWnd->SetWindowText(_T("Server is on!")); 将静态文本框中显示图标 //添加红绿灰三种图标 DWORD dwStyle = WS_VISIBLE | WS_CHILD | SS_ICON; ::SetWindowLong(Icon_Static.m_hWnd, GWL_STYLE, dwStyle); ::SetWindowLong(Icon_…
年前就想写左右滑动菜单,苦于没有时间,一直拖到现在,这篇代码实现参考了网上流行的SlidingMenu,使用的FrameLayout布局,不是扩展的HorizontalScrollView. 程序中自定义了菜单view:SlidingView,继承自ViewGroup,使用FrameLayout布局.重写了onInterceptTouchEvent(MotionEvent ev)方法实现ontouch的分发拦截,重写了onTouchEvent(MotionEvent ev)方法,实现左右滑动.…
前言 之前写过几篇关于TreeWidget的文章,不过不方便查阅,特此重新整合作为总结.不过关于QtDesigner画图,还是不重新写了,看 第一篇 就OK. 准备工作 1. 用QtDesigner画一个QTreeWidget 2. 自己事先确定好层次与列的类型. QtreeWidget的展开层次类定义. # 节点类型的枚举类型 class TreeItemType(Enum): itGroupItem = 1001 # 群组 itMemberItem = 1002 # 成员 QTreeWidg…
SOUI项目的SVN根目录下有一个doc目录,下面有一份控件属性表.包含了大部分控件的大部分属性,不过也不一定完全准确.最保险的办法还是查源代码. SOUI对象包含控件及ISkinObj等从SObject派生的对象都可以使用XML配置属性.要知道如何查SOUI对象属性,首先要看一下SOUI解释属性的流程. BOOL SObject::InitFromXml( pugi::xml_node xmlNode ) { if(!xmlNode) return FALSE; #ifdef _DEBUG {…
Win32编程中,用户需要一个新控件时,需要向系统注册一个新的控件类型.注册以后,调用::CreateWindow时才能根据标识控件类型的字符串创建出一个新的控件窗口对象. 为了能够从XML描述的字符串中创建出需要的控件对象,和Win32类似,在SOUI中要创建一个新的控件也同样需要向SOUI系统注册新的控件类. 从demo.cpp的main中我们可以看到类似如下的控件注册控件的代码: //向SApplication系统中注册由外部扩展的控件及SkinObj类 SWkeLoader wkeLoa…