摘要: By Joel SpolskySunday, January 06, 2002Sometimes I just can't get anything done.Sure, I come into the office, putter around, check my email every ten seconds, read the web, even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just do 阅读全文
posted @ 2013-03-01 16:57 onemuji 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.blogjava.net/killme2008/archive/2012/05/22/378885.html你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。2.阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。3.如果该项目有提供现成的example工程,首.. 阅读全文
posted @ 2013-01-30 11:49 onemuji 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 内核态尝试缓存handle(file object)遇到的问题及解决思路内核态LOG模块实现中,考虑到频繁打开关闭用户态LOG文件开销较大,考虑缓存handle(或对应的file object)。思路:首次通过ZwCreateFile()获得handle然后利用ObReferenceObjectByHandle()来获得对应的file object,将得到的file object缓存起来,想后续通过它来直接读写文件。实现中发现这种方法存在问题:若在获得file object之后关闭handle,则驱动后续无法利用file object来读写文件,错:"STATUS_FILE_CLOS 阅读全文
posted @ 2012-12-20 12:13 onemuji 阅读(429) 评论(0) 推荐(0) 编辑
摘要: WDM驱动改可手动加卸载的NT驱动测试工具:osrloader把一个WDM类型的驱动改成可动态加载/卸载,需要做以下2个修改:1. 把SOURCES文件夹中的DRIVERTYPE=WDM去掉2.去掉AddDevice()例程 阅读全文
posted @ 2012-11-14 20:47 onemuji 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 关键词: windows驱动开发 删除符号链接出错 变量作用域问题RtlInitUnicodeString摘要:NT式驱动中,在DriverUnload()中尝试删除之前创建的符号链接失败,最后发现原因是变量作用域和RtlInitUnicodeString的问题原始存在问题的简化代码如下:typedef struct _DEVICE_EXTENSION { UINT32 magicNum; PDEVICE_OBJECT pDevice; UNICODE_STRING symLinkName; } DEVICE_EXTENSION, *PDEVICE_EXTENSION; PDE... 阅读全文
posted @ 2012-11-06 23:51 onemuji 阅读(593) 评论(0) 推荐(0) 编辑
摘要: http://msdn.microsoft.com/zh-cn/library/ff554739(VS.85).aspx 在 Windows Vista 版本的 WDK 之前,用于驱动程序开发的主要头文件为 Wdm.h、Ntddk.h 和 Ntifs.h,它们包含很多重复声明。 从 Windows 阅读全文
posted @ 2012-10-26 15:33 onemuji 阅读(1399) 评论(0) 推荐(0) 编辑
摘要: Linux IO调度器相关算法介绍转自:http://www.realzyy.com/?p=984IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法。存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间。然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平衡这两者,IO调度器提供了多种调度算法来适应不同的IO请求场景。其中,对数据库这种随机读写的场景最有利的算法是DEANLINE。接着我们按照从简单到复杂的顺序,迅速扫一下Linux 2.6内核提供的几种IO调度算法。1、NOOPNOOP算法的全写为No Operation。该算法实现了最最简单的FIF 阅读全文
posted @ 2012-10-19 14:25 onemuji 阅读(212) 评论(0) 推荐(0) 编辑
摘要: Process Explorer(官方下载地址http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)下载后解压,直接运行就能看到详细的系统信息,包括CPU、IO、网络、进程等。要查看进程对应的句柄需要做以下操作(Process Explorer的使用一目了然,就查看句柄费了点劲,blog存档备用):打开process explorer选中想要查看句柄或者加载的dll的进程菜单点击view——Lower Pane View,其下有DLLS和Handles,选中即可。同时,需要勾选Show Lower Pane才能显示出来 阅读全文
posted @ 2012-09-24 19:06 onemuji 阅读(631) 评论(0) 推荐(0) 编辑
摘要: CCB ContextControlBlock 是存Private信息的,这个FO的特殊信息FCBFileControlBlock 是存全局信息的FO FileObject 代表一个文件打开实例之间关系:FO 与 CCB 是1:1的即一个FO有一个CCB根着FCB 与 CCB 是1:n的 (n >= 1)即一个FCB可能有n个CCB和它关联.FO->FsContext2指向CCBFO->FsContext指向CommFCB////////////////////////////////////////////////////////////////////////////// 阅读全文
posted @ 2012-05-19 10:11 onemuji 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/Sonic2007/archive/2008/07/08/1238167.html任何时候系统内存资源相对磁盘空间来说都是相形见拙的。因为虚拟内存机制,使我们可以有相对丰富的地址资源(通常32bit的虚拟地址,可以有4G的寻址空间),而这些资源对物理内存来说一般情况是总是绰绰有余的。所以在现代操作系统中,总是在相对紧张时使用一些策略,如FIFO、LRU等将物理内存的一些页面置入相对便宜的磁盘空间资源中。一般的UNIX系统,独立使用一个分区,即swappartition。而这方面Windows只是使用普通的文件,通常命名为pagefile.sy 阅读全文
posted @ 2012-04-27 11:59 onemuji 阅读(425) 评论(0) 推荐(0) 编辑