- 博客(80)
- 资源 (28)
- 收藏
- 关注
原创 Zephyr评估
请保留:【作者:张佩】 【原文:www.yiiyee.cn/blog】对Zephyr进行快速的学习之后,得到了下面的5条总体认识。Zephyr的内核模式是宏内核,不是微内核;设备驱动都被集成在内核中;内核编译采用Kconfig脚本配置,资源配置也通过它在编译时指定Zephyr支持的平台:arm、x86、RISC-v、ARC、NIOS 2、POSIX等ARM平台支持不完全:只支持arm 3...
2019-10-18 10:34:58
1409
原创 鸿蒙OS速览
鸿蒙在HDC 2019上作为最重要的产品被隆重推出,现在已经为世人所知。它的三个重要特点是:第一,它基于微内核的实现,可以很好地运行于IoT及安全相关的嵌入式场景中;第二,它是分布式架构,使得它可以很好地运行于多端协作的场景;第三,它面向的是全场景的应用,囊括了像智能穿戴这样的IoT设备、智慧大屏、智能终端以及PC机等。其中荣耀大屏(电视)是它第一个产品。鸿蒙OS主要特性速览和解析全场...
2019-08-29 17:32:42
4366
2
原创 GPU异步V-Sync技术方案
2014年中,我在Intel内部提交了一个名为“异步Timing”(又名“异步V-Sync”)创新方案,用于解决GPU使用V-Sync同步所导致的问题。但十分可惜的是,Intel的创新审核委员没有通过我的方案,只礼貌性地回了一封感谢邮件。这件事情本来尘埃落定,我已不作多想。但最近很多IT新闻介绍了AMD在今年CES上所展示的一项FreeSync技术,惊喜颇多。我发现AMD的FreeSyn技术所要解决的问题和采取的策略,与我的“异步Timing”的设计方案十分相似。我写作此文,向大家介绍V-Sync的基本概念
2015-02-12 10:00:47
4531
1
原创 对Windows安全软件的思考
最近以来,我重新翻阅了几本Windows系统下的安全类书籍,同时上网查阅资料,很意外地发现,很多几年前流行的牛叉技术,虽然还在书本和网页上历历在目,但实际上多数已不能在新系统中使用了。我由此也发生了一些个人的思考。总是因为存在安全隐患,才有了攻击动作的发生;而因为有了大量的攻击,才继而产生了安全防护的需求。所以一定要研究安全隐患的来源。总体上分类,安全问题可以划分为本地和分布式两种,所以安全攻击的方法也可以分为本地攻击和分布式网络攻击。先看存在于本地机器上的安全隐患,也就是在一台安装了Windows
2014-12-24 10:47:16
3419
1
原创 多了一个“星号”
国庆假期我看WDK 8.1中的sample项目,遇一极有趣问题,和基本的指针使用有关,特缀文于此。请看下面是WDK8.1 msplot项目中的一段代码(经我简化过),三行而已,作一个减法运算。注释中的例值,其期望结果应是0x10,但意外得到一个溢出后的大值。
2014-10-21 10:20:05
5488
7
原创 假货泛滥是淘宝的毒瘤
其实每一个顾客都是反假生力军。哪怕那些卖假货的卖家,当他们成为买家时,也一样对假货深恶痛绝。所以通过买家的举报、取证来打假,是直接而有效的。并且,和主动打假相比,成本也一定更经济。打假覆盖面不用达到100%,甚至不用50%。假如一家店铺卖10样假货,而被打了两次假,那这家店铺必不敢继续销售剩下的全部8件假货了,而可能会主动撤下其中风险较大的几项。所以打假的效率是很大的,打其一而灭其二三,是可能的。但淘宝并没有利用买家的打假能力。一方面,他担心恶性打假,对卖家生意产生消极影响;另一方面,中国是一个巨大
2014-09-16 11:47:39
11417
13
原创 Win8开始菜单方案第N+1种
软件市场上已经有很多种Win8开始菜单的解决方案了,要么是以替换原生桌面Shell的方法,从全局解决,要么是以一个软件的形式Pin在任务栏上,点击之后显示类似开始菜单的界面。种种软件、小工具,不一而足,不知多少,统称有N种之多!今天我要介绍的这个方案,是第N+1种。简单而不简陋XD。
2014-04-15 20:02:11
3733
1
原创 奇妙的系统性能问题(2)
这篇文件是对上一篇《奇妙的系统性能问题》的补充。我在经历那次性能陡降问题困扰的过程中,还碰到了一次BSOD。当蓝屏发生的时候,我甚至是兴奋的。因为在此之前,我一直都认为问题是系统或软件模块导致的。而蓝屏正好是分析的切入点。所以当分析了这个dump后,我立刻扭转了方向,判断认为:确实是磁盘坏了。这个结论是正确的,但却不完备的。因为最后的结果是磁盘并没有坏,而是受到了外部环境的干扰。这个dump文件弥足珍贵,因为正常情况下,这种伤硬盘的实验我们是不会主动去做的。所以这个dump文件完全得于碰巧,在此进行
2014-04-13 16:48:53
4269
原创 奇妙的系统性能问题
在前一家公司时,我借了一台测试板用于开发和测试。这块板子在正常运行了一段时间后,忽然遇到持续性的系统性能问题。问题来得非常突然,是某一天早晨上班的时候突然发生的。像电影里面马师爷抱怨的那样,吃着火锅还唱着歌,就突然遇到劫道的了。都太突然了。问题的特征非常明显,就是系统性能无限下降。登录到系统登录界面,往往要十几分钟。Win 8.1的Metro UI出来,又要若干分钟时间。所以常态下看到的界面,就是Metro UI上面一个个磁贴只有边框,图标内容则完全没画出来。
2014-04-08 21:18:58
3695
1
原创 虫趣:当NV显卡驱动碰上Verifier
今天开电脑的时候,刚完成用户登陆,就遇到一个蓝屏。桌面还没有进去呢。趁着系统正处于抓取dump文件的过程中,赶紧拍了一张照,留作纪念。造成蓝屏的不是别人,乃是负责图形渲染和显示的显卡驱动:Nvidia显卡驱动。
2014-04-08 21:13:29
6895
1
原创 马年快乐
马年到了,祝大家新年快乐,马上有福!新的一年里,编程和技术都不重要,博客不重要,文章不重要。什么重要呢?希望自然环境越来越好,空气越来越清新;人民越来越文明,社会暴戾越来越少;政治越来越清明,祖国早日统一!!最好全都马上实现!
2014-01-31 10:01:54
3806
2
原创 IOCTL助手 V1.1
我在2010年写《竹林》这本书时,写了一个分析IOCTL值的工具,一直想着可以把界面再改善一下,功能更完善一点。今天正好有一点时间,就做了这件事情。用户可以使用这个工具查看、定义IOCTL值。如果你有一个IOCTL值,想查看它的具体定义。只要把它的16进制值输入到IOCTL值(Hex)编辑框中,再点击分析按钮。分析出的值以三种形式呈现出来:一种是数值形式,分别由设备、缓冲、权限、功能这四个编辑框(组合框)显示。一种是图片形式,图片将IOCTL的32 Bits进行了组成划分,并显示各部分的值。
2014-01-25 16:43:22
3656
原创 VS2012驱动项目时间戳验证失败
前几天的一个早晨,大概5点钟就醒了,再也睡不着。想到有一个驱动程序还需要debug,就爬起来继续coding。起来打开电脑,运行VS2012并打开项目。把代码逻辑仔细的看过一遍,想了想,有了一点小发现,改了几行代码。按下F7开始编译。很惊讶,发现了一个错误。通过VS2012 IDE环境创建的驱动项目(solution)中总是包含两个工程:一个是驱动工程,用来编译并生成驱动文件(一般是.sys文件);一个是package工程,用来把编程成功的驱动文件整合到一个可安装驱动包中。我看了一下错误,第一个工程已编
2014-01-10 15:15:43
12620
原创 Win8驱动的兼容性问题
最近我发现为Win8开发的驱动程序,有些能安装在Win7上(包括更早系统),有些则不能。那些不能安装的情况很可怕:一旦安装并加载驱动,系统就会立刻蓝屏。针对这个问题,做了一番调查研究。发现了一个简单的规律:如果开发时使用的是WDM驱动框架,则存在此问题;如果使用KMDF驱动框架,则正常。这是为什么呢?一起来看看吧。
2014-01-06 21:40:42
5368
原创 Large Pool 错误
引用注明>> 【作者:张佩】【原文:www.yiiyee.cn/blog】我前几个月曾经分析了一个BAD_POOL_CALLER的问题(链接),今天收到的这个dump文件,系统是Win7 X64,最后发现问题和前者非常相似,但二者的分析过程却截然不同。引子打开dump文件后,首先进行自动分析。蓝屏号是0x4E。********************************************
2013-12-27 15:41:33
4180
转载 程序员遇到Bug的30种反应
英文原文:HONGKIAT 中文翻译:CSDN开发应用程序是件压力很大的事情,尤其是当编写完代码后,突然冒出个Bug,这真是让人百感交集、痛不欲生。那么,如何平心静气地解决每一个Bug,是每个程序员都要修炼的地方。下面本文将分享程序员遇到Bug时,最常说的30句话,不知道你中枪了没?1.我不知道该删掉还是重写。2.在开始项目之前,我应该先在Github上找找有没有合适的框架3.为什么这个脚本会需
2013-11-07 13:44:20
3532
原创 虫趣:抓一个Intel显卡驱动的臭虫
同事给我发过来一个dump文件,说是在做S4压力测试的时候挂掉的。蓝屏号0x9F。因为前几天刚好解决了一个0x9F的蓝屏,怀疑是不是类似问题?拿过来一分析,风牛马不相及。可见同样是简称LYF,对应的可能是刘亦菲,也可能是罗玉凤。
2013-11-05 17:21:06
8375
原创 虫趣:FAST_MUTEX死锁
问题到此可告一段落了:线程1在处理IRP_MJ_POWER的时候,试图获取一个FAST_MUTEX同步对象,但因获取失败而进入休眠状态(并因休眠过久,而导致BSOD)。在成功获取FAST_MUTEX对象的地址后,从它的结构体中得到了当前拥有此同步对象的线程2地址。切换到线程2,发现线程2有一个无法处理的页错误,也同样处于等待状态中。
2013-10-30 15:03:13
5208
1
原创 梦
这些日子比较累,故而常常能够轻易地就进入了虚无缥缈的境界。恍惚之中,来到一个不知所以的所在。周围的一切当然是极新鲜的,完全不认识。而自己的心境,竟也奇妙起来。虽然不认识,却莫名地感到有点亲切。景致非常的古老,简直是幻境。像神仙洞府——但我不敢就这么确认,怕因此而有自抬身价的嫌疑。 踟蹰了片刻,忽然有一道力气作用在了我后背上。我所以说是“一道力气”,是因为我不能确认是被一只手,还是被一阵风所推。
2013-10-28 17:41:25
2538
1
原创 Windbg调试命令详解(4)
5. 内存命令这一节里面,我们学习如何查看内存信息。内存是存储数据、代码的地方,通过内存查看命令可以分析很多问题。相关命令可以分为:内存查看命令和内存统计命令。内存统计命令用来分析内存的使用状况。5.1 查看内存 有非常丰富的内存查看命令,它们被统一为d*格式,如下所示:d[类型] [地址范围] d代表Display,类型包括:字符、字符串、双字等。具体来说,d*命令共有这几种:d、 da、db、dc、dd、dD、df、dp、dq、du、dw、
2013-10-12 14:15:02
5617
原创 Windbg调试命令详解(3)
3 进程与线程既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息。调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺。3.1 进程命令进程命令包括这些内容:显示进程列表、进程环境块、设置进程环境。进程列表多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|、.tlist、!process和!dml_proc。竖线命令显示当前被调试进程列表的状态信息,这个命令在本章开头已作过介绍,命令格式如下:| [进程号]请注意这里的定语:被调试进程列
2013-10-08 16:03:21
6480
原创 视频:60分钟理解Windows内核驱动
内核驱动视频,介绍内核驱动编程相关知识。如需要高清视频的(1920×1080),可以联系我。下载ppt:http://www.yiiyee.cn/Blog/video1/
2013-09-08 10:26:57
6321
原创 几首诗
玩开心网是前年的事了,我曾经通过它的日记功能,发表过一些文章。此后,两三年里面,再没有上去过。今天忽然想起一件事,记得在日记里的,便又登陆上去看,庆幸用户名和密码都记得。记忆简直断片了,原来我在上面写过三十几篇日记呢。我从上小学开始,喜欢古诗。偶尔还写一些。我写的东西,不能用好、坏论。就好比学生要学造句,我不过用文言文造句罢了。这样的造句,我持续了近二十年。家里曾有最早的一本11岁时候的结集,存了十几首。这样的造句,最近也已不能够了。但三年前,还是可以的。开心网很少再去了,把那几首诗,记在这里(有几
2013-09-05 13:23:00
2648
1
原创 Windbg调试命令详解(2)
符号与源码是调试过程中的重要因素,它们使得枯燥生硬的调试内容更容易地调试人员读懂。在可能的情况下,应该尽量地为模块加载符号和源码。大部分情况下源码难以得到,但符号却总能以符号文件的形式易于得到。什么是符号文件呢?编译器和链接器在创建二进制镜像文件(诸如exe、dll、sys)时,伴生的后缀名为.dbg、.sym或.pdb的包含镜像文件编译、链接过程中生成的符号信息的文件称为符号文件。具体来说,符号信息包括如下内容:全局变量(类型、名称、地址);局部变量(类型、名称、地址);函数(名称、原型、地址
2013-09-01 09:53:30
6374
原创 Windbg调试命令详解(1)
用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe、ntsd.exe、kd.exe和Windbg.exe。其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控制台界面,以命令行形式工作。Windbg.exe在用户态、内核态下都能够发挥调试功能,尤其重要的是,它不再是命令行格式而是采用了可视化的用户界面。所以绝大部分情况下,我们在谈及Windows调试工具的时候,都
2013-09-01 09:47:18
6237
原创 Windbg中查看计算机名
使用Windbg调试目标对象的时候,用户发现到它的一个缺陷,就是不能自动识别目标设备的机器名。实际上Windbg总是标出了Machine Name的关键字,但却从来都没有显示。可以认为Windbg在这个地方有点小缺陷。见下面的例子://示例见原文在调试一些很困难问题的时候,比如目标系统boot失败、桌面不能正常显示、dump分析,这些情况下,我们没法通过登录到目标机器上去查看机器名,只能借助Windbg来实现。虽然Windbg没有自动显示功能,但仍然可以通过两种方法来实现手动实现。我们分两种情况来讲
2013-08-23 11:00:41
39648
1
原创 Windows的PNP和电源特性概述
PNP是Plug And Play的简称,代表和外部设备插拔有关事件的处理。PNP是现代操作系统必须支持的基本特性,其目的是希望操作系统能够在软硬件支援下,在基本无需用户干预的情况下,即可很好地处理外部设备的接入和移除操作;当设备配置发生动态变更时,系统也能悄没生息地处理好,并一切正常地使用它们。有些笔记本是当成工作站来用的,这样就需要很多外部接口。但一般的笔记本,局限于物理空间,不能够提供过多的外部接口,会使用接口坞来扩展。大的接口坞上通常有十几、数十个扩展接口,来满足工作站的接口要求。其实,一些移动
2013-08-20 10:32:05
4012
原创 安装DirectX SDK失败,报错“Error Code: S1023”
在使用Windows的过程中,我多次遇到过SDK、KB补丁安装不成功的情况。究其原因,大抵是一些很白痴的问题导致的。本例中,我机器上原有的VS2010再发行组件版本是10.0.40219,DirectX SDK试图安装10.0.30319版本,无法更新而导致整个安装过程失败 。微软在这方面的用户体验上,做得实在差劲。
2013-08-13 17:19:50
8840
原创 虫趣:不同模块对同一变量类型的不同定义
欢迎转载 【作者:张佩】【镜像:http://www.yiiyee.cn/Blog/dll-1/】引子周末写了一个简单的程序(后文以Test.exe代指),通过Iphlpapi.dll提供的API函数GetAdaptersInfo,读取系统中的网卡信息,通过网卡名找到我想要的虚拟网卡后,将网卡信息结构体(IP_ADAPTER_INFO)保存到一个全局变量中。逻辑很简单,写完之后测试也没有发现问题。
2013-08-13 15:13:18
2611
原创 BSOD分析之空指针引用
这是一个BSOD 0x3B的dump文件,BSOD 0x3B所代表错误的描述是:SYSTEM_SERVICE_EXCEPTION,表示在一个系统线程里面发生了不可解决的系统异常,导致的系统错误。系统线程是一个笼统的概念,凡是通过内核函数IoCreateSystemThread创建的线程,都是系统线程。内核是一个混沌的整体,内核里面不存在进程的概念。但是它却需要分配一些独立执行的任务,线程是
2013-08-08 16:46:33
4310
原创 Windows显示驱动(WDDM)编程初步(2)
欢迎转载【作者:张佩】【原文:http://www.yiiyee.cn/Blog/wddm2/】第二部分专门只讲VIDPN。这是后面内容的基础。WDDM框架用VIDPN这个概念,来描述它所要处理的显示关系。VIDPNVIDPN的全称是Video Present Network,这个因为词组不太好翻译(直译可以是:视频提交网络,但颇为难听),所以一般都直接讲它的英文。
2013-08-05 16:31:43
5173
原创 别动系统的奶酪——违法Windows内核保护的错误(CRITICAL_STRUCTURE_CORRUPTION)
欢迎转载:【作者:张佩】【原文:http://www.yiiyee.cn/Blog/0x109-1/】引子下班的时候准备关掉调试机,却遇到蓝屏。本想直接拔电源,但蓝屏总是让我好奇,于是决定多待十分钟,看看这个蓝屏是怎么回事。主机的windbg调试器已经用DML标记出了自动分析命令!analyze –v。于是点进去:1: kd> !analyze -vERROR: Find
2013-08-01 12:20:06
11149
原创 Windows显示驱动(WDDM)编程初步(1)
欢迎转载【作者:张佩】【原文:http://www.yiiyee.cn/Blog/wddm1/】Windows显示驱动从Vista开始,使用新的WDDM编程框架,称为Windows Display Driver Model。也有一种最初的名称是LDDM,L代表Longhorn,但后来微软在所有产品线上都不再使用Longhorn代号,故而改成现在的名称。虽然在有些地方还能看到LDD
2013-07-26 10:41:12
7878
原创 初学Windbg,从主题布局开始
欢迎转载:【作者:张佩】【原文:http://www.yiiyee.cn/Blog/windbg-theme/】Windbg把和调试相关的所有配置称为workspace,这些配置信息包括:调试窗口类型和位置,打开的文件和窗口位置,符号、源码和可执行文件的路径。Windbg中包含多种不同类型的workspace:基本workspace。打开Windbg并且没有进行任何调试操作的情况下
2013-07-22 17:36:13
4070
原创 虫趣:BAD POOL CALLER (par1: 0x20)
【作者:张佩】 【原文:http://www.yiiyee.cn/Blog/0x19-1/】内核在管理内存的时候,为了提高内存使用效率,对于小片内存的申请(小于一个PAGE大小),都是通过内存池来操作的。系统里面有两种不同的内存池:分页内存池和非分页内存池。这二者的区别是很明显的:分页内存池所使用的内存页面,随时有可能被分页出去;而非分页内存池所使用的虚拟页面,总是留驻在物理内存中。
2013-07-21 12:10:24
4320
原创 虫趣:除0引起的崩溃
【作者:张佩】【原文: http://www.yiiyee.cn/Blog/0x7f-1/】内核之所以脆弱,是因为它没有办法很好地隔离自己。它是一个大整体,属于一荣俱荣、一损俱损的大整体。它需要一切都按部就班地执行有序。否则,一个角落里的蝴蝶扇动翅膀,就能招来太平洋上的绝大风暴。现在看到的是一个内核中的除0错误。用户程序中的除零导致进程崩溃,内核中则系统崩溃。int AlwaysD
2013-07-21 12:07:24
2960
原创 张佩的Dump服务
如果你有一个Dump文件——不管是应用程序还是内核驱动——但不知道从何下手,看不到任何希望,没有半点头绪。还等什么?赶快使用我提供的这项服务吧!1. 传送Dump文件。将Dump文件和必要的符号文件压缩后,通过网盘、GMAIL邮箱或QQ中转站等方式,发送给我(专用mail: zhang.xiaopei@live.com)。2. 分析时间。一般需3-5天左右缓冲时间。如要加急,请事先和我沟通。3. 分析结果。一般来说,我拥有在技术文章中引用dump文件分析过程的权利,但引用时会将模块名、函数进行模糊处理
2013-07-16 13:41:57
2963
原创 虫趣:Win8系统Bug分析一例
【作者:张佩】【原文URL: http://www.yiiyee.cn/Blog/win80x7e/】有肉的地方总能发现蚊蝇。有软件的地方,就有臭虫相随(注1)。操作系统就是个大软件,所以臭虫是少不了的。最近碰到一个Windows 8的系统臭虫,报给微软并得到了确认,他们确保会在Windows Blue上解决此问题。到底是什么问题呢?今日有空,和大家一起来聊聊。发现问题
2013-05-23 19:50:42
3932
原创 怎么用Visual Studio编译内核驱动
这一章驱动小z继续带大家遨游驱动王国。在这块地面上,小z是个地头蛇,跑动跑西惯了。贵读者有什么地方想特别了解的,都可以咨询我,很乐意做半日游的导游。所谓登高必有卑,在把大家引入到高山圣境之前,先要在山脚下徜徉几时,为的是把一些预备的事情交代清楚。这一节讲的是驱动程序编译环境。Windows内核驱动的历史有多久,它的开发环境就要有多久,所以是很有历史的话题。话分两头讲,它起先是很不好,后来则非常好。很不好的时代是旧社会,现在则已是非常好的新时代。
2013-05-20 18:26:20
8466
5
MISRA-C 2012.zip
2020-08-14
Windows驱动签名工具 64Signer
2013-12-24
AdplusUI 1.0
2012-05-31
调试工具:Adplus UI
2012-04-02
驱动视频:windows驱动讲稿1.7 - 符号链接
2012-02-22
ClockInterval
2011-11-20
《竹林蹊径——深入浅出Windows内核驱动开发》
2011-01-29
e-look 胜过VC的errlook的错误查看工具
2010-09-12
驱动安装助手: DrvInst V1.1
2010-05-07
忽略此资源,重复上传
2010-05-06
WDF USB驱动开发指南(中文最佳,驱网原创)
2010-05-06
忽略此资源,重复上传
2010-05-06
SrcToVcproj
2008-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人