06 2010 档案
摘要:Writing Windows CE Device Drivers: Principle to PracticeBy David G. Heil, CalAmp, September 22, 20060CommentsDavid Heil of CalAmp provides an overview of the new Windows CE 6.0 kernel architecture and describes the various driver models and device types supported, as well some guidance in creating C
阅读全文
摘要:下面转个老外写的介绍FSDMGR的文章,不错,转到这里,权当备份。INTERACTING WITH FSDMGRIn interacting with the FSDMGR and its helper functions, there are two pseudo-handle types that will be used: HDSK and HVOL (these types are defined in fsdmgr.h). While there is a one-to-one mapping of HDSK to HVOL, they are not the same constr
阅读全文
摘要:各种各样的编解码在各种领域得到广泛的应用,下面就把各种codec的压缩率进行一下比较。现主要有的speech codec 有: G.711, G.723, G.726 , G.729, ILBC, QCELP, EVRC, AMR, SMV主要的audio codec 有: real audio, AAC, AC3, MP3, WMA, SBC等各种编解码都有其应用的重点领域。本文主要对speech codec相关指标进行总结: ITU 推出G.7XX系列的speech codec, 目前广泛应用的有:G.711,G.723, G.726, G.729. 每一种又有很多分支,如G.729就有g
阅读全文
摘要:微软的AVI文件格式是一种用于捕获、编辑和回放audio-video序列的RIFF文件规范。总体上讲,AVI文件包含多个针对不同数据的流。 大部分AVI序列使用audio和video流。 一个简单的AVI序列特例可以只包含video数据而不包含audio数据。本部分并没有介绍OpenDML对于AVI文件格式的扩展。如果要对其深入研究, 请参考OpenDML AVI M-JPEG文件格式小组委员会出版的《OpenDML AVI File Format Extensions》。FOURCCs一个FOURCC( four-character code,4字符码)是一个包含4个ASCII码字符串的32
阅读全文
摘要:函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。malloc()函数有一个参数,即要分配的内存空间的大小:void*malloc(size_tsize);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void*calloc(size_tnumElements,size_tsizeOfElement);如果调用成功,函数malloc()和函数calloc()都将返回所分配的内存空间的首地址。函数malloc()和函数calloc() 的主要区别是前者不能初始化所分配的内存空间,而后者能。如果由mal
阅读全文
摘要:52 49 46 46 -> FORCC码'RIFF'的ASCII值,说明是一个RIFF文件。RIFF( resource interchange file format ) 。84 CF 4A 00 -> 表示文件大小的4个字节,由于windows是小头的,所以文件大小为0x004ACF84,即4902788字节,由于该size不包含开头的8字节,所以文件总大小为4902796字节41 56 49 20 -> FOURCC码'AVI '的ASCII码,文件类型,说明是一个avi文件。AVI(AudioVideoInterleaved)。 4C
阅读全文
摘要:驱动程序是通过设备句柄来控制设备的,应用程序要控制设备,也需要获得设备句柄,然后使用驱动程序体提供的DeviceIoControl接口来控制设备。那么应用程序是如何获得设备句柄的呢?通常流接口驱动程序会使用两个结构体,驱动上下文结构体和设备上下文结构体。设备句柄会保存在设备上下文结构体中,驱动上下文结构体会保存设备上下文结构体的地址。这样通过驱动上下文结构体就能够得到设备句柄。下面我定义一个驱动上下文指针dwDriverContext来说明这个指针是如何被传递的。1、 在执行USBDeviceAttach的函数中,函数ActivateDevice用来激活流接口,它将dwDriverContex
阅读全文
摘要:有人也许和我一样比较心急,想尽快知道如何去写一个具体的驱动程序,这里,假设您对驱动程序已经有比较好的了解,告诉大家一个快速上路的方法。当然,如果您有足够的时间我建议在动手之前还是深入了解一下CE整个系统架构。在CE中,最简单的一个驱动程序莫过于一个内置(Built-in)设备的流接口驱动。对于一个不支持热拔插的设备,最快捷的方法就是为其实现一个内置的流接口的驱动。对于这样一类驱动程序,我们只需要按一种特定的规则实现一个动态库,其中实现对所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在系统启动时设备管理器能识别并且加载这个设备即可。1 实现动态链接库此动态链接库与应
阅读全文
摘要:静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在.
阅读全文
摘要:我们可以创建一种文件里面包含了很多函数和变量的目标代码,链接的时候只要把这个文件指示给链接程序就自动地从文件中查找符合要求的函数和变量进行链接,整个查找过程根本不需要我们操心。这个文件叫做 “库(Libary)”,平时我们把编译好的目标代码存储到“库”里面,要用的时候链接程序帮我们从库里面找出来。静态链接库: 在早期库的组织形式相对简单,里面的目标代码只能够进行静态链接,所以我们称为“静态库”,静态库的结构比较简单,其实就是把原来的目标代码放在一起,链接程序根据每一份目标代码的符号表查找相应的符号(函数和变量的名字),找到的话就把该函数里面需要定位的进行定位,然后将整块函数代码放进可执行文件.
阅读全文
摘要:目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链接导
阅读全文
摘要:.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接 库。静态链接库与静态链接库调用规则总体比较如下。对于静态链接库(比较简单):首先,静态链接库的使用需要库的开发者提供生成库的.h头文
阅读全文
摘要:今天在CE 6.0中添加了一个驱动,在buid我的驱动的时候,显示有链接错误。是我驱动中调用FSDMGR_AdvertiseInterface,等几个fsdmgr中的函数,链接有问题。由于以前在网上看到的资料,说产生链接错误,很有可能是环境配置有问题。基于此,我换了个机器,重新配置环境,结果错误照常产生。后来请教了一位大侠,大侠提醒,很有可能是链接的lib有问题。在大侠的帮助下,进行了一下尝试:一、驱动的sources文件中调用的是coredll.lib,怀疑ce6.0中的lib分为用户(coredll.lib)和内核(k.coredll.lib),所以将coredll.lib换成了k.cor
阅读全文
摘要:■ 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL。只需要 <FRAMESET> <FRAME> 即可,而所有框架标记需要放在一个总起的 html 档,这个档案只记录了该框架 如何划分,不会显示任何资料,所以不必放入 <BODY> 标记,浏览这框架必须读取这档 案而不是其它框窗的档案。<FRAMESET> 是用以划分框窗,每一框窗由一个 <FRAME> 标 记所标示,<FRAME>必须在 <FRAMESET> 范围中使用。如下例: <frameset cols="50%,*
阅读全文
摘要:#、%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分。在这里笔者简单介绍它们的相应用途。1.#符号的用途一般有三种。1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(”msg”) 。2)用于过滤和投影(projecting)集合,如示例中的persons.
阅读全文
摘要:MyEclipse8.5默认不支持SVN插件,需要手动安装,新版本的插件管理做了较大的调整,需要到MyEclipse Configuration Center中管理插件1.SVN插件安装方法一,MyEclipse->Help—>MyEclipse Configuration Center,选择Dashboard,右下角有个栏目是Quick-Add Popular Plug-ins,选择Subclipse 1.6.x,其中Subclipse 中的Subcilpse Integration for Mylyn 3.x这一项不要选,然后next安装,重启eclipse即可方法二,MyEc
阅读全文
摘要:转自[foreverphoenix的专栏]数字1、Ruby支持整数和浮点数。整数可以使任何长度。一定范围内的整数是Fixnum类的对象。范围之外的整数存储在Bignum类的对象中。这种处理是透明的。2、可以在一个ASCII字符前加一个问号来获得其对应的整数值。Ctrl组合键可以由?/C-x或?/cx(x&0x9f)来产生。Meta字符(x|0x80)可以由?/M-x来产生。3、一个带有小数点"或/和"指数的数字字面量被认为是Float对象。Float对象和本机上的double类型大小一样。4、Float精度有限,若需要更好精度的小数,可以使用标准库中BigDecim
阅读全文