<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

文章分类

导航

订阅

Windows Internals

Windows OS Internals
老雷看Win7(5)——发布是硬道理
对于很多大型的软件项目来说,如期发布是一个可望不可即的目标。拿NT系列的Windows来说,延迟也是习以为常的事。第一个版本,即NT3.1,本来计划是18个月,但是实际用了差不多5年,整整晚了三年多。因此Lucovsky在一次演讲中,曾以自嘲的口吻说:“我们不过是延迟了三年么:-(”。 Vista的延迟也是够离谱的,项目从2001年5月开始,先是以Windows XP的代码为基础,最初计划是在2003年下半年完成,但是到了2003年时,可谓是八字还没一撇,于是索性返工,改为以Windows Server 更多...

发布于 2010年2月7日 14:11Raymond3 篇评论

老雷看Win7(4)——发疯内幕
【本文曾发表在《程序员》杂志的调试之剑专栏中】 现代人生活在重重压力中,有时压力太大无法忍受时,便以疯狂的方式来释放压力,有的大喊大叫,有的打人骂人,也有动刀动枪的……其实软件世界也有类似的问题,随着软件被应用到越来越多的重要岗位,人们对软件的期望也越来越高:要长的漂亮,有华丽的外表;要跑的快,反应神速;要功能强大,啥都能干;要灵活通用,能在所有带CPU的盒子上跑;要坚韧鲁棒,能适应千差万别的使用环境;要开放,能以有线无线、局域网、互联网等各种方式通信;而且还要安全,铜墙铁壁,百毒不侵……看看人们对软件的这些要求,您说软件的压力大不大?在如此重负下,软件也难免会有“发疯”的时候。 更多...

发布于 2010年1月24日 21:32Raymond6 篇评论

从堆里寻找丢失的数据
这是刚刚发生的一个故事,笔者亲历。 因为年底一个月很忙碌,所以久未写博客了,这几天放假,略有空闲,于是想写点东西出来,一来练练手,免得本来就不熟练的文笔变得更加生疏;二来与大家交流一下,免得朋友也生疏了。于是上网,打开网页,准备写个短文。写什么呢?这几天放假,就写点闲话吧,放假前去了次闵行老街,就写这个吧,怀怀旧。:-) 写文章不是件简单的话,很多时候的确像赵本山说的那样,半天憋不出俩字。:-)于是乎,就一篇简简单单的《重访闵行老街》,前前后后也用了几个小时。当然中间有一些停顿,有时陪女儿玩一会,有时喝杯茶,这样到中午时,基本写好了,检查一遍就可以发出去了;但中饭时间到了,女儿强烈要求煮意大利面给她吃,于是只好把写完大半的文章放下了。 更多...

发布于 2010年1月3日 15:13Raymond10 篇评论

调试笔记:模拟执行实模式代码的栈回溯
以下是Vista的VGA驱动程序发起调用BIOS的显示服务(INT 10)时系统模拟执行实模式代码的过程(栈回溯)。以Xm开头的那些函数是HAL中专门用来实现模拟功能的。 kd> kPL 100 ChildEBP RetAddr  803d0a1c 828c250c nt!RtlpBreakWithStatusInstruction 803d0a24 828c24be nt!KdCheckForDebugBreak+0x22 803d0a44 828c202d nt!KeUpdateRunTime+0x271 更多...

发布于 2009年8月30日 12:20Raymond2 篇评论

调试笔记:系统挂在DPC(上)
这是发生在我的笔记本电脑上的一次系统挂死,发生在唤醒过程中,屏幕没有任何显示,因为我的电脑始终是启用通过热键(Ctrl+ScrollLock)来触发蓝屏的,所以可以通过热键触发蓝屏和产生转储。 以下是分析转储文件的简要过程,转储的类型是内核转储。系统中只有一个CPU。 kd> !cpuinfoCP  F/M/S Manufacturer  MHz PRCB Signature    MSR 8B Signature Features 0  更多...

发布于 2009年8月10日 22:47Raymond4 篇评论

润物细无声——Windows Intermals第5版印象
前两天拿到了Windows Internals的第5版,把玩了一番后,这两天仔细读了部分章节,与大家分享如下。 以作者在鸣谢一节的落款中的时间来看,上一节的时间是2004年9月,这一版的时间是2009年5月。二者相差不四年半有余。与很多写书计划和软件项目类似,这一版也是延迟了多次。但是好饭不怕晚,看了书之后,的确觉得改动和新增的内容不少。 单单从页数来看,第4版是935页,包括书后的索引,而第5版是1232页,多了297,差不多是一本普通技术书的长度。 从副标题来看,上一版的副标题叫Micorosoft 更多...

发布于 2009年7月19日 15:29Raymond10 篇评论

老雷看Win7(3)——低调
这是一个需要大吹大擂的时代,东西好,还得吆喝的好。指望“酒香不怕巷子深”,“桃李无言,下自成蹊”,那么只能“门前冷落车马稀”。 但是吆喝是件很讲究技巧的事情,吆喝不好就会把气球吹破,或者变成放羊的孩子,没人听他的了。 在这种大背景下,便衍生了一种重要的处世哲学,或者叫智慧,那就是低调,Low profile! 用这种智慧的眼光来回头看Vista,那简直就像今天回头看大跃进,“怎么那么傻呢?”把目标定的老高老高,然后让全天下的人都知道,然后说在现有的时间和空间条件下,我实在做不到了,延迟一下子吧,还不行,再延迟一下子吧,相信我这会说的是真的。 更多...

发布于 2009年7月19日 10:46Raymond2 篇评论

调试笔记之侦查广告插件
朋友的电脑出了一个“怪”毛病,当使用资源管理器的时候,冷不丁会跳出一个非法访问对话框(其实就是应用程序错误对话框,也称GPF对话框),点击确定按钮关闭后,Explorer进程便会退出,然后重启,导致开始菜单和任务栏也消失片刻后再出现。 在把WinDBG设置为JIT调试器后,重现问题,于是WinDBG被自动唤起。崩溃现场的信息如下: (680.c4c): Access violation - code c0000005 (first/second chance not available)eax=00000000 更多...

发布于 2009年6月30日 21:33Raymond4 篇评论

老雷看Win7(2)——NUMA
何谓NUMA(Non-Uniform Memory Access),简单来说就是在一个多CPU的系统中,每个CPU有自己的内存(local memory),当然一个CPU也可以访问其它CPU的内存,但是访问速度要比访问自己的内存慢很多。例如,下图所示的至强系统便是使用NUMA架构的。 与NUMA相对的是UMA(Uniform Memory Access),目前的很多x86系统(IA)都是UMA架构,多个CPU通过前端总线(FSB)访问主内存,每个CPU看到的主内存是一样的。 IA架构是从代号为Nehalem的CPU开始采用NUMA架构,针对台式机市场的产品便是Core 更多...

发布于 2009年6月8日 21:48Raymond1 篇评论

调试笔记:LPC循环等待挂死
在XP SP2系统中,打开一个WORD文件时,WORD启动后便失去响应,而且无法杀掉这个进程。这种情况通常是挂在内核态了。 以下是使用Ctrl+ScrollLock触发蓝屏后,分析转储文件的概要信息。 观察WinWord进程的唯一线程,其情况如下: kd> !THREAD 885eb468THREAD 885eb468  Cid 11ac.106c  Teb: 7ffde000 Win32Thread: e248a770 WAIT: (Executive) KernelMode 更多...

发布于 2009年2月8日 18:08Raymond1 篇评论

《软件调试》导读之操作系统篇
在今天的计算机架构中,操作系统是整个系统的统治者,它指挥着系统中的软硬件。如果拿人类社会来类比,那么操作系统好比是国家机器,应用软件是公民,操作系统的各个执行体是国家机构。从这个角度来看,操作系统与应用软件之间是统治与被统治的关系。 对于最终用户来说,他们需要的是应用软件,大多用户说不清什么是操作系统,只知道没有它不行。用户之所以肯掏出钱买操作系统是因为有了它才能跑自己需要的应用软件。从这个角度来说,应用软件是操作系统从用户那里拿到钱的资本,应用软件是前台唱戏的主角,操作系统是藏在后面的支持者。 更多...

发布于 2008年12月30日 14:05Raymond3 篇评论

老雷看Win7(1)——序
Windows 7(Win7)是Windows操作系统的下一个客户端版本,计划在明年中正式发布。在前不久的WinHec上,每个参会者都得到了一份Win7的预览版本,是比Beta版本还早的所谓Milestone 3(M3)版本。 老雷曾经说过他是使用调试器来了解和学习操作系统的。但到底可以怎么用调试器来帮我们了解新的操作系统或者它的新版本呢?这个系列文章就想以这种方法来学习一下Win7。今天是第一个部分,到底写多少次还没有计划,如果大家喜欢,老雷写的高兴,那么就一直写下去,不然可能就这一篇。 首先该介绍一下道具(工具),第一,当然少不了WinDBG,老雷机器上有从WinDBG2.x开始的n个版本,但大多数时候用的还是6.X。第二,要有目标机来运行Win7,为了可以随时唤出来把玩,我还是把它运行在虚拟机里,用的是VPC2007。第三,要有一些附属的小工具,比如观察符号的SymView小工具,触发异常的I'm 更多...

发布于 2008年12月22日 21:48Raymond9 篇评论

在内核调试会话中设置用户态断点
使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点。但这样做与使用用户态调试器有什么不同呢?我们就以向NTDLL.dll模块的ZwTerminateProcess函数(Stub)为例谈谈二者的区别。 区别一、在内核调试会话中设置这个断点的“难度”略大些。这是因为NTDLL不属于内核态的模块,所以内核会话通常不会加载这个模块(的符号),因此当执行bp命令时很可能被自动蜕化为bu命令。 0: kd> bp ntdll!ZwTerminateProcessBp expression 更多...

发布于 2008年11月18日 22:19Raymond7 篇评论

感受伟大
他1979年加入英特尔,是286和386设计团队的关键成员,80486的最初架构师。 1986-1989年他担任80486团队的设计经理。1989-1992年,担任负责设计Pentium Pro的部门(division)的总经理。 目前他是英特尔公司的高级副总裁(VP),DEG(Digital Enterprise Group)Group的总经理。 他便是帕特·基辛格(Pat Gelsinger)。很多人可能听说过Programming the 80386这本书。他的两位作者之一便是帕特。 更多...

发布于 2008年11月14日 21:37Raymond4 篇评论

海森伯效应一例
我们把调试过程对被调试程序所产生的影响称为海森伯效应(详见《软件调试》28.6.1)。设计调试工具时,当然应该努力降低可能的海森伯效应,以便可以在调试器中调试时看到的症状与没有被调试时是一样的。 但正像这个名字的由来(海森伯的测不准原理)那样,海森伯效应一定是存在的。只不过是很小,大多数时候都不会对我们的调试造成明显的影响。 前两天,jlflyfox提出了一个问题,这个问题其实是一种非常典型的海森伯效应。 为了讨论简单,可以使用下面的代码来重现jlflyfox所提出的问题。 /*-------------------------------------------------------------- 更多...

发布于 2008年10月31日 22:13Raymond5 篇评论

调试笔记之GMail挂死
在GMail进入Inbox前,挂死在Loading页面,数分钟后仍纹丝不动。唤WinDBG附身,远程中断方法不能工作: Break-in sent, waiting 30 seconds...WARNING: Break-in timed out, suspending. 挂起方法可以开始非入侵式调试会话:(1374.1134): Wake debugger - code 80000007 (first chance)eax=00a22d68 ebx=00000000 ecx=0000002a 更多...

发布于 2008年10月19日 9:57Raymond1 篇评论

调试笔记之观察中断
中断好比计算机系统的脉搏,是系统生命力的源泉。在WinDBG做内核调试时该如何观察系统的中断分配和响应情况呢?WinDBG的帮助文件对此描述甚少,已经有的几个重要扩展命令居然也没有出现在帮助文件中。下面就以调试一个双核的G33系统为例简介绍一下常用的几个命令。 !pic 显示传统ISA中断(8259)的当前状态,例如: 1: kd> !pic----- IRQ Number ----- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0FPhysically 更多...

发布于 2008年10月14日 12:46Raymond1 篇评论

WinDBG扩展命令的工作原理
要理解WinDBG扩展命令的原理应该先理解WinDBG软件的架构,下图是以模块为单位所画出的架构示意图。最上层是四个EXE模块,它们提供了不同形式的用户接口,简称UI层。中间是调试引擎模块,它是WinDBG调试器的核心模块,大多数调试器的工作逻辑都包含在这个模块中。调试引擎下面是几个支撑模块。内核态的部分是操作系统提供的调试支持。 因此以调试引擎为中心,向上看是调试器与用户的接口,向下看便是与系统的接口。调试器作为一种相对独立的软件产品,保持其核心代码的稳定性和广泛的适用性是很重要的。像WinDBG这样的调试器,它要支持很多种版本的内核和应用程序,因此,保持这两个接口的稳定性是很重要的。向下的接口基本上是靠API的稳定性来保证的。 更多...

发布于 2008年10月13日 20:41Raymond7 篇评论

亲历误删......
昨天中午,一个朋友打电话给我说他的XP系统“开始”菜单不见了。询问了他一番后,感觉确实出了什么问题,可能是explorer程序(explorer.exe)被插件搞乱了,或者中其它招了。 晚上又收到他的电话,显然比中午更加焦急,说系统进不去了。完整的故事是,他使用了某种【隐去真名,不想引来不必要的争议】杀毒软件,杀毒软件“确实”发现了问题,并提示要执行删除动作,他发出确认命令同意这么做了,而后重启,但是再也起不来了,XP的启动进度条滚了一阵后,是杀毒软件的Splash,而后便是黑屏,黑屏持续几秒后,自动重新启动,如此往复不已。 更多...

发布于 2008年9月25日 22:22tudouni3 篇评论

[WinDBG]新闻组拮趣之私有符号
在Windows底层开发圈里,OSR的几个邮件新闻组很是有名。具体来说就是讨论调试的windbg,讨论一般驱动开发问题的ntdev和讨论文件系统有关问题的ntfsd。 浏览这些新闻组的邮件是我闲暇时的一件乐事。除了可以了解信息、学到一些知识和技巧外,还可以提高英文,领略地道的美式幽默,或者看如何用英文“发牢骚”和“斗嘴”。 很早就想把阅读这些新闻组的收获写成短文与大家分享,但是都没有真正实施。今天算做这个系列的正式开始吧! 首先,一位名为Joe的先生发出信息求助,遇到的问题是找不到可以用于Server 更多...

发布于 2008年9月24日 22:16Raymond1 篇评论

《软件调试》导读之CPU篇
《软件调试》的第2篇是CPU的调试支持,由第2~7章组成,共有136页,是全书的第一个核心部分。写作和阅读这一篇的主要目标有如下几个: 介绍大多数软件工程师需要补充的CPU基础。 CPU对软件调试核心功能的支持。 CPU对软件调试扩展功能的支持。 CPU中用于调试系统故障和自身问题的设施。 现代CPU和集成芯片所使用的硬件调试方案。 针对以上目标,第2、3章是满足目标1的,4~7章依次是满足另外四个目标的。下面对各部分的重点内容分别略作介绍。 一、介绍一个调试高手应该掌握的CPU层的基础知识。第2章和第3章是专门服务于这一目的的。调试好比行医看病,病人是计算机系统,要能看懂这个系统的毛病然后再对其施以治疗或者手术,那么必须了解其五丈六腑的结构,血脉流通的路线,生息运转的机理。要做到这一点,深刻理解计算机系统中硬件部分的核心——CPU——很重要。有人说,CPU是重要,但有什么必要在一本《软件调试》的书中写这个呢?调试高手还需要数学基础和语文基础呢,怎么不开两章讲讲呢?这一拮问不是没有道理,因此作者考虑到这一点,慎重选择了要讲的内容,并严格控制了篇幅。入选的内容要符合三个条件:一是够重要,二是够常用,三是与调试密切相关。于是,《软件调试》最后选择如下一些内容: 更多...

发布于 2008年9月21日 20:32Raymond1 篇评论

D1蓝屏、指针和安全的代价
在从Hibernate恢复时,发生D1蓝屏,蓝屏的基本信息为: DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)An attempt was made to access a pageable (or completely invalid) address at aninterrupt request level (IRQL) that is too high.  This is usuallycaused by drivers using improper addresses.If 更多...

发布于 2008年9月14日 17:31Raymond0 篇评论

调试笔记之Check Build
这两天使用Virtual PC(2004)安装了Windows XP SP3的Check版本。有些要点值得分享和备忘。 1 安装过程中的蓝屏 在安装程序复制好文件,重新启动时,会出现蓝屏,蓝屏代码是未处理的内核态异常,异常代码是80000003,即断点异常。看到这个蓝屏后,我想到是Check版本中的某些ASSERT所导致的,保留了更多的断言是Check版本的最大特色。对于断言,如果有调试器,那么系统就会中断到调试器,然后继续也可以了。 但是此时还不能进入系统启用调试选项,怎么办呢?于是想到了按F5在高级启动选项中选择调试选项。关于这个默认调试选项采用的连接参数,一种说法是COM1,一种说法是可以枚举到的最大编号COM口。实验下来,是第二种。也就是当调试器中使用COM2时,成功与虚拟机中的KD建立了连接。这验证了《软件调试》所采信的说法(18.3.3,P478)对于XP 更多...

发布于 2008年9月11日 21:18Raymond1 篇评论

术语当译否?
在《Showstopper试译》一文的评论中,几位朋友都建议不要把术语翻译成中文。我很能理解这种观点。但是线下调查时,也有一种意见建议尽可能翻译。单纯的讨论可能很难得出结论。不妨以实际的一段来比较一下两种效果。 以下是英文原文,加粗的当属术语。 When the builders needed outlets for their nervous energy, they practiced spinning basketballs on one finger or tossed baseballs 更多...

发布于 2008年9月1日 22:18Raymond4 篇评论

Showstopper试译
Showstopper是本好书,几乎每个深刻思考过软件的人都喜欢这本书。这本书的英文版已经卖完,而且目前也还没有重印的计划。作者对出中文版非常高兴和期待。这两天,尝试翻译了该书的第8章。对于这样一本具有报告文学性质的著作,翻译起来真是很难。为了将这本书翻译好,现拿出第一部分的草稿,来征集大家的意见。特别是以下几个问题: 1)人名地名要不要翻译成中文? 2)计算机术语要不翻译成中文? 3)语言风格。   8                           更多...

发布于 2008年8月30日 23:12Raymond6 篇评论

内核调试的EXDI方式
除了串行口、1394和USB 2.0这些链接方式外,WinDBG还支持一种很特殊的连接方式来做内核调试。这种方式被称为EXDI,通常写为eXDI。简单来说,EXDI是WinDBG与硬件调试器协同工作的一个接口。 《软件调试》的第7章介绍了JTAG调试协议和Intel CPU的JTAG支持,即ITP/XDP接口。ITP调试器借助专用的硬件设备(ITP调试仪)通过CPU的专用信号引脚与CPU通信,实施调试任务。 ITP/XDP调试器都有自己的软件,可以观察内存、设置断点、接收CPU的事件等。但如果使用ITP调试器调试Windows操作系统或者其中的驱动程序时,一个明显的问题便是难以处理调试符号和支持操作系统相关的观察功能,比如WinDBG的那么多个扩展命令所提供的功能。于是,一种很自然的想法便是把ITP调试器当作一种读写数据的特殊连接方式,让其为WinDBG传递数据。 更多...

发布于 2008年8月6日 21:30Raymond1 篇评论

《软件调试》导读之提纲挈领
拙作《软件调试》出版两个月了,有热心读者建议我讲些阅读这本书的方法。有读者愿意读自己的书,当然是好事,再说读者是客户,他们的意见就是命令,不能怠慢。粗略思考一番,计划先为《软件调试》的每一篇写一个导读短文。总为开篇,今日先谈谈《软件调试》这本书的篇章结构,用软件的术语就是架构,用写作的术语也就是提纲。 从最初的书名说起 早在2003年,我就萌生了写一本关于软件调试的书的念头。但是软件调试是个大话题,有很多东西可以写,必须选择好一个角度才能写出一本好书来。于是我开始搜索当时已经有的书,无论是美国出的,还是英国出的,一共找到了十来本。而后,逐一了解了已有的这些书,归纳了它们的主要内容和特色。 更多...

发布于 2008年8月2日 10:55Raymond3 篇评论

Vista的启动调试
在Vista之前,NTLDR是Windows操作系统的加载程序,它负责将CPU从实模式切换为保护模式,加载内核文件和启动类型的驱动程序,然后把执行权交给内核文件的入口函数,即KiSystemStartup。 从要完成的任务角度来看,NTLDR内部又分为两个部分,一部分负责接受执行权,做模式切换,硬件检查,即启动的准备工作,这部分通常称为boot;另一部分负责加载内核文件,并为内核的运行做必要的准备,通常称为OsLoader。 Vista将以上两个部分分成两个独立的程序文件,即BootMgr和WinLoad.exe。下图描述了BootMgr和WinLoad的相互关系和它们在启动过程中的作用。 更多...

发布于 2008年7月28日 21:54Raymond4 篇评论

汇编与反汇编之小技巧
大家都知道,对于位于当前调试目标中的指令,可以使用WinDBG的u命令进行反汇编。u命令的参数是要反汇编代码的地址值或者符号,如果不指定,那么WinDBG会使用当前程序指针寄存器所指向的代码,例如: 0:001> untdll!DbgBreakPoint:7c901230 cc              int     37c901231 更多...

发布于 2008年7月3日 22:34Raymond2 篇评论

API的威力
有人说,Windows成功的一个关键是Win32 API。这句话可能有所偏颇,但也不无道理。作为一个操作系统,其成功的关键是上面要有丰富的应用软件,因为用户花钱买操作系统的目的绝不是为了整天折腾控制面板或者“观赏”启动过程。要想有丰富的应用软件,那么必须有一大批程序员愿意在上面开发。要有程序员喜欢在上面开发,那么就要有便捷的开发接口,和高效的开发环境。从这角度来看,精湛的Win 32 API确实对Windows的辉煌有着举足轻重的作用。 Win32 API的主要缔造者是Mark Lucovsky,与Windows调试子系统的缔造者相同。 更多...

发布于 2008年6月30日 22:48Raymond3 篇评论

使用WinDBG观察启用PAE后的分页机制
我在《软件调试》一书的2.7节介绍了CPU的分页机制,因为这属于这本书的支持性内容,考虑篇幅限制,没有介绍启用PAE的情况。书出版后,很多读者对这一内容很感兴趣,也有读者遇到了启用PAE的情况。因此决定写这篇短文来介绍一下PAE的概况,以及如何在启用PAE后的系统中做2.7.5节的试验。 PAE是Physical Address Extension的缩写,即物理地址扩展。简单来说,就是把IA-32处理器的寻址能力从原来的4GB扩展到64GB。寻址4GB空间,要求物理地址的宽度为32位。类似的,要寻址64GB空间,那么物理地址的宽度就是36位。因为这个原因,PAE又被称为PAE-36bit。 更多...

发布于 2008年6月26日 18:47Raymond2 篇评论

手捧汗水的感觉
今天收到了编辑部快递给我的《软件调试》! 下班一进门,就看到了邮包,迫不及待的打开外面的包装后,里面是印有博文标记的纸袋,包裹的严严实实。因为《软件调试》的体型比较大,所以将其从纸袋中取出来还是费了点劲,也许是因为我有些激动。:-) 小女儿跑过来,要拿过来看一看,抱在怀里没走几步就喊重,显然这本书对她来说是有些重(后来称了下,1800克:-))。我把书接在手中,看着好亲切。仔细看了封面和封底后,大致翻阅了一下序言和正文,字体、行距、代码和插图看着都很舒服。特别是我担心的几幅插图,印刷出来后也很清晰。接下来,我想对它做一个“压力测试”。把书翻到差不多中间一页,向两侧用力掰了掰,然后再合上,看看书脊,没留下任何印记。看来装订的很牢固(不比担心像有些书那样一本被翻成几本)。而且翻开到中间页时,两边两页的文字都清楚可见。这样检查一番后,心中悬了许久的石头落地了。或者说持续了三年多的一次马拉松长跑终于到终点了。 更多...

发布于 2008年6月3日 23:22Raymond2 篇评论

《软件调试》的主页
《软件调试》于上周进入工厂印刷,第一本有望在本周装订完成。第一本审查无误后,那么第一批600册将在下周完成! 同时,《软件调试》的主页也初步建成,网址为http://advdbg.org/books/swdbg/。欢迎大家访问和提宝贵意见!   更多...

发布于 2008年5月27日 23:31Raymond8 篇评论

Showstopper中文版签约
好消息,今天一早看到了Gregg的来信,他兴奋的告诉我机械工业出版社(华章)已经购买了Showstopper中文版的版权,双方正式签约。因此,这本英文名著的中文版本应该在今年年内就能与大家见面了。:-) 接下来应该是比较艰辛的翻译工作。这本书首先是一本好的报告文学,作者笔触灵动,妙语连珠,因此最好有一位文科的人来翻译。但同时,这本书又涉及到较深的技术和对软件工程的深刻思考,所以翻译的人还是要懂计算机。 书名也体现了这一点!不论是主标题和副标题都不那么容易翻译!:-)欢迎大家来试一试呀! 主标题: 更多...

发布于 2008年3月14日 23:12Raymond1 篇评论

从DUMP文件判断目标系统的CPU个数
OSR新闻组中有人询问如何知道一个DUMP文件对应的目标系统中有几个CPU。其实这有很多方法,聊举数例(:-))。 1)首先如果使用WinDBG打开DUMP文件,那么从WinDBG输出的概要信息中就可以判断出CPU的个数。举例来说,以下是打开一个来自双核CPU系统(Vista)的DUMP文件时WinDBG所显示的信息: Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatibleProduct: WinNt, suite: 更多...

发布于 2007年12月29日 15:52tudouni4 篇评论

SEH无法捕捉内核代码的除零异常
在下面这小段代码中,存在一个故意的除零操作,并且使用了Windows操作系统的结构化异常处理(SEH)机制对其进行了保护。     59: n=1;     60: m=0;     61: __try     62: {     63:         n=n/m; 更多...

发布于 2007年12月14日 23:11Raymond0 篇评论

NT的设计文档
开发软件应该写文档么?如果是应该写成什么样?是拿个template然后填充些不痛不痒的废话么? 先看一下下面这幅图: 这是NT团队开发NT时使用的文档。仔细看那个标签,NT OS/2 Design Workbook。我首先留下深刻印象的是Workbook这个名字,非常的平实,工作手册——帮助设计的手册,备忘和方便查阅。而后,对于这个厚度,有人可能吃惊有这么厚!对于NT这样复杂的系统,这么厚应该都是非常精练的语言了。如果像今天的很多文档那样,翻了几页还没看到正文,那么不知要有这样的多少册。 更多...

发布于 2007年8月15日 21:52Raymond2 篇评论

让WinDBG显示自己的调试信息
WinDBG是个调试器,但其本身也是个软件,也有BUG,这就好像医生也会生病一样。如何调试WinDBG呢?WinDBG的设计者们早考虑到了。比如.dbgdbg命令就是启动一个调试器来调试当前的调试器。 再如,使用.outmask命令可以让WinDBG输出自己的调试信息。参数可以是下表中的各个标志位的组合。 Value Default setting Description 1 On Normal output 2 On Error output 更多...

发布于 2007年7月30日 12:51Raymond0 篇评论

Showstopper中文版
不论是Windows XP/2000,还是刚兴起的 Windows Vista,它们都是基于经典的Windows NT内核。 NT内核从1988年[此处曾经误写为1998年,感谢chinaclastar留言指出]开始开发,历时将近5 年与1993年7月26 日发布,即NT 3.1。 在开发NT内核的近 5年中,有很多精彩的故事,和发人深省的东西,这些东西既有软件工程方面的、技术方面的,也有团队协作、和最基本的人性方面的。 幸运的是,有一本书很好的记录了开发NT内核的人和事,这本书的名字叫 《Showstopper》。 更多...

发布于 2007年6月29日 12:25Raymond5 篇评论

Alex加盟Windows Internals第五版
Windows Internals第一版的书名叫Inside Windows NT,出版日期是1992年11月,作者是Helen Custer。Helen是NT团队的技术编辑。从出版日期看,这个日期比NT 3.1正式发布的日期还要早8个月。 第二版的书名还叫Inside Windows NT,尽管已经介绍了一些处于开发中的Windows 2000(NT 5.0)的内容。这一版的出版日期是1998年4月27日,作者是David Solomon。以下链接是当年的新闻发布资料。 http://www.microsoft.com/presspass/press/1998/apr98/winntpr.mspx 更多...

发布于 2007年6月27日 12:27Raymond4 篇评论

对ReactOS几个主要设计者的采访
在ReactOS的网站上(http://www.reactos.org/en/interviews.html),有去年年底时对几个主要设计者的采访纪录,值得一看。 Art Yerkes Art, born in Philadelphia, PA, USA in 1974. He's been involved with ReactOS since 2002 ...by frik85 on 2006-12-28 Johannes Anderwald Johannes Anderwald, born 更多...

发布于 2007年1月28日 14:17admin0 篇评论

Alex Ionescu
Alex是ReactOS的设计者之一。以下是ReactOS网站上他的简介(http://www.reactos.org/wiki/index.php/Alex_Ionescu): Early Life Alex Ionescu was born on April 26th, 1986, in the city of Bucharest, RomaniaSon of a doctor and an engineer, he took up a passion with computers at 更多...

发布于 2007年1月28日 14:02admin0 篇评论

关于早期PDC的简单介绍
不知道这是不是第一届PDC大会,但可以看到很多重量级的人物在其中演讲。再也不会有这样的PDC了! Microsoft Win32 Professional Developers Conference VideotapesMicrosoft University is pleased to announce the availability of a set of 22 videotapes of key sessions from the Win32 Professional Developers 更多...

发布于 2006年10月15日 14:34Raymond0 篇评论

在VirtualPC 2004上运行Vista RC1
之前看到了很多人在虚拟机上安装Vista的经历,大多都是有这样那样的问题。不是安转有问题(Windows Vista Beta 2 and Virtual PC 2004: Installation Cannot Be Completed),就是运行的不好(Windows Longhorn/Vista Beta1 on Virtual PC)。今天自己实际安装了一把,记录如下。 Host机器:Windows XP SP2,IBM T40笔记本电脑,1G内存,80G硬盘。 虚拟机:Virtual 更多...

发布于 2006年9月25日 23:06Raymond0 篇评论

Singularity ——挑战目前OS和进程架构的新理念
针对目前OS和进程架构的诸多问题,MSR的一个名为Singularity 的项目小组提出了很多新的理念,并实现了一个原型。 他们的主页是: http://research.microsoft.com/os/singularity/ 这是发表在MSDN杂志上的文章: {End Bracket} James Larus, Galen Hunt, and David Tarditi When the C and C++ programming  languages were invented, 更多...

发布于 2006年8月31日 0:43admin0 篇评论

调试驱动程序安装错误
使用SetupAPI安装驱动程序时,如果出现问题,往往比较难以调试。MSDN介绍了如何让SetupAPI输出更多信息到记录文件,和如何理解记录文件的信息。 Setting SetupAPI Logging Levels [This is preliminary documentation and subject to change.] You can control the amount of information that is written to the SetupAPI log, 更多...

发布于 2006年8月25日 21:55tudouni2 篇评论

微软吸纳Winternals/Sysinternals
2006,7月18日,微软宣布吸纳Winternals/Sysinternals。 http://www.microsoft.com/presspass/press/2006/jul06/07-18WinternalsPR.mspx Winternals/Sysinternals的两位创始人Mark Russinovich和Bryce Cogswell也分别到了微软的Platforms and Services Division (PSD)和Core Operating Systems Division部门。 更多...

发布于 2006年7月19日 12:11Raymond0 篇评论

WinFS开发团队的BLOG
想知道关于WinFS开发的一些内幕信息么?想了解WinFS开发的最新情况么?WinFS团队的BLOG是寻找这些问题答案的不二选择。 以下两篇特别值得推荐: Monday, June 26, 2006 8:26 PM Update to the Update Hi. Wow there has been a lot of, let’s say, interest in the posting Friday. I knew there would be interest, and I knew 更多...

发布于 2006年7月2日 22:18Raymond0 篇评论

Vista的新增网络功能(转载)
Windows Server“Longhorn”与 Windows Vista 中的新增网络功能   注意: 本文所述的功能可能随时发生变化。由于市场、技术或其它方面的原因,有些功能可能不会包含在最终的产品中。 本页内容 摘要 简介 协议与核心网络组件 无线和基于 802.1X 的有线连接 网络基础结构 弃用的技术 总结 相关链接 摘要 Microsoft?Windows Server?“Longhorn”(目前处于 更多...

发布于 2006年6月13日 21:40tudouni0 篇评论

Windows XP的内核变化
微软网站的文章,尽管有点老,但是读起来仍觉得津津有味,归纳的很不错。有一篇关于Vista的这样的文章就好了。 Kernel Enhancements for Windows XP 更新日期: 2003 年 1 月 13 日 本頁內容 Introduction Registry Enhancements Windows Support Enhancements I/O Subsystem Memory Management 更多...

发布于 2006年6月8日 13:56admin0 篇评论

A good explanation about why checked build?
Don Burn: ...the checked build of Windows when they pry it from my cold dead workstation. This artical is abstracted from?WHDC website by Don. The checked build of Windows is the Rodney Dangerfield of Redmond, "It don't get no respect," even from many 更多...

发布于 2006年5月12日 22:22Raymond0 篇评论

刷CPU
大家一定听说过刷系统BIOS、刷网卡(上面的firmware)、刷显卡。其实CPU也是支持并可以刷新升级的。 随着CPU复杂度的不断提高,以及一些复杂指令(如多媒体和浮点运算)的引入,测试CPU的复杂度也在成倍提高。再加上集成芯片的生产特征使得可以通过软件刷新产品化的CPU成为必要。 刷新的具体过程和刷其它firmware很相似,通常是由BIOS程序在POST的早期阶段通过CPUID指令把新的数据(2048字节)更新到CPU内部的可擦写ROM上。 不过也有工具可以在操作系统启动后来更新(http://www.urbanmyth.org/microcode/) 更多...

发布于 2006年5月12日 22:22Raymond3 篇评论

通过XP的新命令行工具查询DRIVER信息
Windows XP附带了一个很好的小工具driverquery,使用它可以很轻松的查询出本机或远程系统中的驱动信息。尤其是给系统管理员和驱动程序开发人员带来了很大方便。 Driverquery是个控制台程序,位于Windows系统的system32目录下(大小50多K),因此你可以在任何控制台窗口运行它。 不带任何参数,便可以列出目前系统中已经加载的所有驱动,是按名字列出的。 Module Name  Display Name           更多...

发布于 2006年5月12日 22:21Raymond0 篇评论

Deploy new driver builds to debuggee machine
When we debug kernel drivers through a 1394 or COM cable using windbg, we can use .kdfiles command to transfer new driver build to the debuggee machine from the debugger machine or a share foler at any place accessable. The steps are as below. 1, Create 更多...

发布于 2006年5月12日 22:19Raymond0 篇评论

Windows全局标志(Gflags)
Gflags Flag Reference 摘自TechNet,原始链接为:http://technet2.microsoft.com/WindowsServer/en/Library/6a183942-57b1-45e0-8b4c-c546aa1b8c471033.mspx Buffer DbgPrint output Abbreviation ddp Hexadecimal value 0x08000000 Symbolic Name 更多...

发布于 2006年5月4日 17:58Raymond0 篇评论

使用Virtual PC进行Windows内核调试的详细过程
使用WinDbg进行Windows内核调试通常需要两台计算机,一台是Debuggee,一台作为Debugger,又成为Host。使用Virtual PC可以在同一台电脑上进行内核调试,对于某些调试任务来说还是非常有用的。 下面以Virtual PC 2004为例,介绍一下利用Virtual PC进行Windows内核调试的详细过程。 1,下载并安装Virtual PC 2004,从略。 2,启动Virutal PC Console(控制台),创建一台新的虚拟PC,安装向导的提示配置硬盘、内存等参数。 更多...

发布于 2006年4月27日 21:19Raymond2 篇评论

BlackHat的高端培训
BlackHat的历年高端培训资料: http://www.blackhat.com/html/bh-media-archives/bh-multi-media-archives.html#USA-2005 将由微软的两个人(Jason Geffner & Scott Lambert)deliver的培训: http://www.blackhat.com/html/bh-usa-06/train-bh-us-06-sl-advmal.html 大家有空时慢慢挖掘吧,其中有用的内容应该不少 更多...

发布于 2006年4月23日 10:52Raymond0 篇评论

"checked" build 和"free" build的来历
Where do "checked" and "free" come from? By Larry Osterman People who have MSDN or the DDK know that Windows is typically built in two different flavors, "Checked" and "Free".  The primary difference between the two is that the "checked" build 更多...

发布于 2006年4月18日 14:24admin0 篇评论

Dr. Watson的作者
根据Raymond Chen的关于Dr. Watson的文章,Dr. Watson的第一作者名为Don Corbitt。以下是关于他的一篇报道。   Downed Bellevue Pilot Was An Inventor Sherry Grindeland Seattle Times Eastside Bureau BELLEVUE Don Corbitt of Bellevue was developing instrumentation to make general 更多...

发布于 2006年4月17日 14:29admin0 篇评论

VISTA大事记——时间表
最近,VISTA再次宣布延期,企业版本从2006年10月延迟到11月,普通用户版本从2006年年底推迟到2007年1月。看来VISTA当之无愧成为微软历史上开发时间最久的一个Windows版本。让我们一起记下VISTA的时间表: 2001年10月25日: Windows XP发布,微软内部开始筹划Windows的下一个版本,代号为Longhorn。 2004年8月6日: 微软完成Windows XP Service Pack 2的开发,SP2包含了很多安全方面的增欠,也加入了部分其它新功能,从SP2的近200MB的安装包就可以知道,SP2决不是一个单纯的补丁。SP2的开发占用了很多开发力量,这无疑成为Longhorn延期的一个原因。 更多...

发布于 2006年4月14日 22:58Raymond0 篇评论

通过USB接口进行内核调试
至少两年前就听说Windows将支持通过USB 2.0接口进行内核调试。Vista推出后从它的配置文件中终于看到了配置USB的选项,安转WinDbg6.6后,在建立内核调试的对话框中也可以看到USB的TAB了。 但是帮助文档中却没有详细的说明介绍如何具体操作。于是很多人开始询问: Yeah yeah yeah ... we've heard THAT before ... :) Gary G. Little -----Original Message-----From: bounce-247538-27300@lists.osr.com[mailto:bounce-247538-27300@lists.osr.com] 更多...

发布于 2006年4月7日 22:40Raymond0 篇评论

ReactOS散记
ReactOS是开源的仿Windows系统,与WINE只模拟WIN32 API不同,ReactOS是一个彻头彻尾的'Windows'系统——从内核到API。 但是近一段时间传出了很多ReactOS涉嫌抄用Windows源代码的评论和消息。比如下文是ReactOS的开发者之的发言。 by sedwards on 2006-01-27 Hello,There has been a lot of talk about possible tainted code in ReactOSand or 更多...

发布于 2006年4月7日 22:09Raymond0 篇评论

KeBugCheck2的第6个参数
大家知道,DDK公开了两个内核API用于产生BSOD,分别是KeBugCheck()和KeBugCheckEx()。其原型分别如下: VOID   KeBugCheck(IN ULONG  BugCheckCode    ); VOID   KeBugCheckEx(IN ULONG BugCheckCode,    IN ULONG_PTR  BugCheckParameter1,    更多...

发布于 2006年3月13日 10:38Raymond1 篇评论

高端培训的价格
Windows Internals可谓是迄今为止讨论Windows深层结构的最好资料。该书的二位作者David Solomon和Mark Russinovich(严格说来他们是从从第三版开始合作的)也在业界有着非同凡响的声誉。早听说他们有关于Windows内核的培训,心中估计价格也一定不菲,但是觉得应该和MindShare的培训差不多,通常3~5天的课,每个人要800~1000美金。 但是今天仔细看了一下2006年Windows Internals培训的计划和价格,哇,不仅吃了一惊,5天的培训(包括实验)居然近3000美金。每也就是天的价格约600美金。看来要想听听大师的声音(或者说面对面提问和讨论)真的不是那么容易! 更多...

发布于 2006年3月10日 22:47advdbg1 篇评论

Captive, 另一种虚拟技术
听说过Captive么?简单说它是Linux下完全读写NTFS文件系统的一个免费方案。因为其它Linux下的免费NTFS驱动大多在写NTFS文件系统时会有问题。所以这个Captive号称彻底解决了这一问题,因此受到很多人的特别青睐。之所以能彻底解决问题呢?原因是使用微软的NTFS驱动来访问NTFS文件系统,可谓原汤化原食! 那么如何让NTFS驱动在LINUX下跑起来呢?很多人自然想到虚拟机技术。但是细想仍然有问题,如果使用虚拟机,那么虚拟机里的NTFS驱动如何与作为HOST OS的LINUX进行文件操作这样的密集型通信呢,岂不是很慢? 更多...

发布于 2006年3月2日 13:36admin0 篇评论

感受底层
<占位,待续> 更多...

发布于 2005年12月19日 12:28Raymond0 篇评论

Channel9中关于Windows内核的采访录像
今年一月份起,Channel9陆续访谈了一些微软内部的高级设计师和架构师,每次探讨Windows内核的一个方面。尽管录像和采访水准比.NetShow差很多,但是正因为采访的场合就在办公室,气氛也很随意,又很有针对性,因此谈的内容还是很值得一看的。建议大家茶余饭后边听边消遣一下。 Surendra Verma: Vista Transactional File System 42:35 12/2/2005 8 9,379 Singularity Revisited 更多...

发布于 2005年12月7日 12:42dbg1 篇评论

Powered by Community Server Powered by CnForums.Net