上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: 什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着成千上万个字符的非西方字符肯定就不够了,正是如此才引入了UNICODE标准。 在软件开发中,特别是. 阅读全文
posted @ 2011-07-25 15:28 飞翔荷兰人 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么要用异常代替错误码?错误码的缺点:1) 默认是可以忽略的,因为调用函数时可以不处理其返回值,从而错误处理要依赖于程序员的主动性,而不是程序机制的要求;2) 不能跨作用域传送,必须逐层向上转发,即使中间没有对错误码进行重新定义;使用异常可以解决解决这两个问题:1) 异常默认是不可忽略的,抛出的异常必须捕获,否则就会报错;2) 异常可以跨作用域传送,从而错误的发现和处理被很好地分离开来;2. 异常和断言的区别:异常被捕获后可以不作处理,程序从捕获位置继续执行。而断言是完全无法忽略的,程序在断言失败处立即终止。因此断言通常用于调试版本,用来发现程序中的逻辑错误。虽然异常也能起到这样的作用 阅读全文
posted @ 2011-07-25 14:52 飞翔荷兰人 阅读(669) 评论(1) 推荐(0) 编辑
摘要: 1.检查内存可用性在驱动程序开发中,对内存的操作要格外小心。如果某段内存是只读的,而驱动程序试图去写操作,会导致系统的崩溃。DDK提供了两个函数,帮助程序员在不知道某段内存是否可读写的情况下,试探这段内存的可读写性。VOIDProbeForRead(INCONSTVOID*Address,INSIZE_TLength,INULONGAlignment);VOIDProbeForWrite(INCONSTVOID*Address,INSIZE_TLength,INULONGAlignment);这两个函数不是返回该段内存是否可读写,而是当不可读写的时候,引发一个异常。2.结构化异常处理(1) t 阅读全文
posted @ 2011-07-25 14:51 飞翔荷兰人 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 1.Lookaside结构频繁的申请和回收内存,会导致在内存上产生大量的内存“空洞”,从而导致最终无法申请内存。DDK为程序员提供了Lookaside结构来解决这个问题。我们可以将Lookaside对象看成是一个内存容器。在初始化的时候,它先向Windows申请了一块比较大的内存。以后程序员每次申请内存的时候,不是直接向Windows申请内存,而是想Lookaside对象申请内存。Looaside会智能的避免产生内存“空洞”。如果Lookaside对象内部内存不够用时,它会向操作系统申请更多的内存。Lookaside一般会在以下情况下使用:1. 程序员每次申请固定大小的内存。2. 申请和回收的 阅读全文
posted @ 2011-07-25 14:50 飞翔荷兰人 阅读(4231) 评论(0) 推荐(0) 编辑
摘要: 1. 分配内核内存Windows驱动程序使用的内存资源非常珍贵,分配内存时要尽量节约。和应用程序一样,局部变量是存放在栈空间中的。但栈空间不会像应用程序那么大,所以驱动程序不适合递归调用或者局部变量是大型数据结构。如果需要大型数据结构,我们可以在堆中申请。堆中申请的函数有以下几个:(1)PVOID ExAllocatePool( INPOOL_TYPEPoolType, INSIZE_TNumberOfBytes ); (2)PVOID ExAllocatePoolWithTag( INPOOL_TYPEPoolType, INSIZE_TNumberOfBytes, INULONGTag ) 阅读全文
posted @ 2011-07-25 14:48 飞翔荷兰人 阅读(857) 评论(0) 推荐(0) 编辑
摘要: 一、下载并安装WDK 登陆https://connect.microsoft.com/default.aspx 使用MSN账号免费注册 安装完成后在开始->所有程序中可以看到 Windows Driver Kits (Documentation)两个菜单。二、编写一个C文件 按照驱动开发的文件结构编写first.c , 编写 makefile , 编写 sources.三、编译 使用WDK的build工具四、安装并运行 使用srvinstw.exe安装服务:安装服务->本地计算机->输入sys文件的路径(手动)->设备驱动->NT驱动器目标名->手动。五、查 阅读全文
posted @ 2011-07-21 10:27 飞翔荷兰人 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 环境及情况说明 环境:sqlserver2008,Struts1.2和Hibernate; 1、使用Hibernate获得数据库的连接,在hibernate中 使用的都是Transaction事务管理器,这个是一个事务,在其中调用备份数据库语句的时候会出现异常 不能在事务内部执行备份或还原操作 的警告; 解决方法:使用下列语句获得连接, Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); if (conn==null||conn.isClosed()) { conn =DriverManager.ge 阅读全文
posted @ 2011-07-15 09:14 飞翔荷兰人 阅读(700) 评论(0) 推荐(0) 编辑
摘要: WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。1. WinDbg介绍: Debugging Tools and Symbols: Getting Startedhttp://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx A word for WinDbghttp://mtaulty.com/communityserver/blogs/mike_taultys_blog/archive/2004/08/03/4656.as. 阅读全文
posted @ 2011-07-11 16:14 飞翔荷兰人 阅读(360) 评论(0) 推荐(0) 编辑
摘要: Windows内核(一).sys放在Drivers目录下。运行在R0层。在WDK的相应环境中,进行相应代码目录,build.一个内核程序被看作一个PE格式的DLL,它是被Windows整个内核调用的一个DLL,一旦加裁,就成为内核的组成部分。所有的内核内存空间是共享的。内核程序崩溃,Windows系统也就崩溃了。DriverEntry是一个内核程序的入口,以system进程名出现。编写内核的规则:不能调用Windows应用层API函数,而应用内核API。关于字符串,内存处理,打印等,参见前面Rtl函数浮点数要特殊处理在Windows中,不同类型设备的驱动有不同的安装方式,ini文件。非“任何类 阅读全文
posted @ 2011-07-11 15:33 飞翔荷兰人 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 了解机器码X86所有指令的机器码长度不定,且连续排列,因此读取机器码的唯一方法是从头开始逐条解析指令。nop指令是单字节,可以用作填充替换长指令后的多余区域。XDE32反汇编引擎。关于进一步机器码的构成分析,可以看[6]。CPU权限级与分页机制Intel的x86通过ring级别进行访问控制,共分四级。R0最高,R3最低。现在的操作系统只分两级R0和R3.R0代表内核态,R3代表用户态。运行模式:实模式:CPU启动后处于实模式。只能访问1MB内存,单任务,所有任务都运行在R0层。如DOS。保护模式:支持分段、分页,可运行多任务。如Linux,Window.系统管理模式(SMM)虚拟8086模式: 阅读全文
posted @ 2011-07-11 15:33 飞翔荷兰人 阅读(410) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页

I Love Lina~