- 博客(21)
- 收藏
- 关注
原创 UCHome安装中遇到的问题
从UCHome官网上看有详细的安装步骤:http://faq.comsenz.com/usersguide/uchome但是笔者在安装过程中会出现如下错误:UCenter无法正常连接,返回错误 ( ),请确认UCenter的IP地址是否正确,网上教程一般是采用如下操作:在浏览器地址栏直接输入,http://你的Ucenter Home地址/install/index.php?s
2013-11-26 21:36:08
2683
原创 LinkIssue: Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or cor
使用VisualStudio 编译链接中可能出现如下错误:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt网上有如下解决方法:1. disable incremental linkingProject Properties -> Configu
2013-11-22 17:31:28
23282
1
原创 VirtualBox linux install
Today, I have started to installed Ubuntu with virtualbox on my laptop. When install the X64 version Ubuntu, it poped up a dialoge said that "v-TX, or AMD-v" not supported, so you should enable i
2013-08-10 16:58:29
618
原创 Windows display driver(一)
显卡驱动入口如其它WDDM driver一样, 需要一个入口函数: NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) 在这一入口函数中,驱动需要完成填充 DriverInitializationData 结构,然后调用 DxgkInitialize() 来完成驱
2013-07-29 19:28:24
1945
原创 VSS Get Latest Version 没有提示recursive的对话框解决
今天按照VSS使用时,当“Get Latest version”时,不小心勾选了 “Only show this dialog when the Shift key is down”,因此当我再“Get Latest version”,该对话框不会出来,所以造成没发获取全部code。 解决办法:按住Shift键 再获取就会弹出对话框, 设置“Only show this dialog w
2013-07-29 16:27:36
3925
原创 奇妙的BSOD:Bug Check 0xDA
根据Microsoft文档可以知道,页表项被不恰当的方式使用。笔者在开发开发过程中遇到一个custom报告的一个bug check0xDA的问题,可是在Local无法重现。问题出现在UnMap memory的时候。问题发生时,如果我们map了一段memory,但是后来并没有访问该地址,在我们unmap该地址时会发生bugcheck 0xDA.后来给这个问题这个没有找到原因的BSOD p
2011-06-23 13:40:00
1619
原创 (小技巧)如何快速查在线msdn
<br />很多人说自己电脑中没有装msdn这个软件。<br />其实,如果没有安装msdn,这不要紧,因为只要能上网,可以在网上查更详细更全面的msdn.<br />方法如下:<br />比如,你想查sscanf这个函数怎么用,可以在google的查询框中中输入<br />sscanf site:microsoft.com 即可很快打开需要的在线msdn<br /> <br />会了吗?<br />你可以演练一下,试试查查别的API,或关键字,或者MFC的类或类的方法。<br /> <br />很多人打开
2010-08-18 21:34:00
5342
原创 所谓“软件”和“硬件”
<br /> 当你做关于硬件的驱动开发时,你一定会用到很多操作硬件的接口函数,如通过对端口的操作可以对硬盘进行读写操作;系统提供的中断也可以在显示设备上显示出一些字符和图形...等等<br /> 作为软件工程师,我们都知道,高级语言编写的程序最后编译后的binary都是0,1,1,0等组成的二进制文件。那么软件编译后的“软件”概念的0,1如何最后控制硬件呢?比如,我们写一个0,最后如何让硬件知道它的某一个引脚应该设为低电平呢?我们编程一般都有硬件操作的抽象接口,如HAL硬件抽象层,将我们
2010-07-26 20:26:00
1255
原创 Windows 内核下系统线程的创建与终止
<br /> 今天在公司遇到一个WLK测试failed的Issue,failed的原因是driver在unload时,发生了BSOD。<br /> Check了MiniDump File后,bug check 0xCE:<br /> DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS<br /> 可能的原因是:<br /> This driver failed to cancel lookaside lists, DPCs
2010-07-15 23:17:00
2851
原创 BATCH file 与Makefile 之Batch篇
最近闲来研究了一下Batchfile和makefile的使用。 稍稍总结如下: Batch file 1.关于batch file:Wiki中的定义如下: In DOS, OS/2, and Microsoft Windows, a batch file is a text file containing a series of commands intended to be executed by the command interpreter. When a b
2010-07-03 17:10:00
5932
原创 Windows程序员与Makefile的情缘
<br /> 作为一个Windows下的程序员,我们一般习惯使用VisualStudio IDE作为自己的开发工具,作为一个大的工程,通常包含很多Project,为了使得编译的自动化,也常常采用makefile的方式编译。<br /> 下面是我初步研究了某Windows驱动程序,结合《寒江独钓Windows内核安全编程》的source code的编译过程来讲述,如何在Visual Studio2008中配置,内核驱动开发的过程。<br /> <br /> <br />
2010-07-03 16:55:00
1204
原创 内核下的中断请求
<br /> 今天在公司fixed了一个BSOD D1的bug。<br /> 这个bug的引出,是开发者没有注意到,在内核下的中断级别造成---在一个DPC中调用了可分页的CODE。<br /> <br /> <br /> 现在总结一下内核下中断请求。<br /> 1.中断请求分为外部中断,也就是硬件产生的中断;另一种是由软件指令int n产生的中断。<br /> 在C语言代码中,有时候为了Debug的需求,加上软件中断int 3.<br /> 如:<br />
2010-06-21 22:37:00
1350
原创 存储设备的设备惟一标示符(DUID)
<br />由于文件系统构架变得更复杂,操作系统组件数目倍增,启动程序访问存储目标通过激增的多样的硬件和软件路径等原因,识别存储设备的方法变得不充足。<br />例如,即插即用管理器为计算机中每一设备产生了一个实例标示符(instance identifier )。每一实例标示符相当于设备树中一个单独设备节点,并惟一标示该设备,如果设备保留在相同的位置。当计算机重启时,实例标示符仍然存在,但是当你移除设备到一个不同的总线上或不同的计算机上时,实例ID并不保持相同。因此,实例ID,对于存储区域网络(SAN)和
2010-06-10 23:37:00
10414
原创 写缓存属性查询
<br />在写数据前,存储驱动程序缓冲数据到非易失性媒介,如磁盘盘片。这一类型缓冲改进了设备性能,但是也降低了数据完整性。如果写缓存没有电压备份,电源关闭可能导致缓冲数据丢失。<br />一个弥补数据丢失问题的方法是刷新写缓存(在SCSI设备上使用SCSI SYNCHRONIZE CACHE命令)。然而,刷新写缓存是昂贵的操作,如果频繁操作,它可能会显著的降低性能。取代刷新写缓存的方法,许多存储设备允许write-through请求。Write-through请求绕开写缓存而直接送数据到媒介。<br />
2010-06-10 23:35:00
1643
原创 存储驱动程序中可分页代码的限制
<br />为防止死锁,用于读写请求的驱动存储驱动程序不应包含可分页代码,也不应试图去访问可分页内存。这是因为驱动程序的读分发例程DispatchRead和写分发例程DispatchWrite能在IRQL > PASSIVE_LEVEL调用,而缺页page I/O发生在IRQL = APC_LEVEL。<br />类似的规则应用于存储驱动的设备控制分发例程DispatchDeviceControl和一些限制条件。存储驱动程序的设备控制分发例程不应包含任何可分页代码和访问可分页内存。分发例程必须可以接受IOC
2010-06-10 23:34:00
879
翻译 System Header Files for Storage Drivers
存储驱动程序的系统头文件 <br /> 系统提供的存储驱动包含头文件scsi.h,该头文件包含大多数SCSI兼容驱动程序使用的CDB和其它数据节后SCSI兼容定义。头文件定义了接口,由系统的端口驱动程序为下一更低层存储类和过滤性驱动程序提供。<br /> 操作系统独立的SCSI微驱动程序,能被设计为在所有基于NT操作系统平台和X86 Microsoft Windows系统上运行,其包含系统提供的头文件miniport.h和scsi.h,scsi.h包含srb.h。<b
2010-06-10 23:33:00
945
原创 Windows 内核下的多线程开发
预备知识: 1.PsCreateSystemThread PsCreateSystemThread例程创建一个在内核模式下运行的系统线程,并为线程返回一个句柄。NTSTATUS PsCreateSystemThread( OUT PHANDLE ThreadHandle, IN ULONG DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN H
2010-06-10 22:36:00
6726
原创 机器如何区分和判定指令和数据
<br /> 指令和数据都是应用上的概念。汇编语言,通过编译器编译,最后送给CPU的都是二进制数,那么CPU在一堆纷繁复杂的二进制,0110000110001中如何区分指令和数据呢?<br /> 我们需要明白以下几点:<br /> (1)每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。二进制,作为一种机器码,计算机可以直接识别,不需要进行任何翻译<br /> (2)计算机硬件主要通过不同的时间段来区分指令和数据,即:取指周期(或取指
2010-06-09 20:57:00
2805
翻译 SCSI HBA设备对象例程
下图显示了为具有PCI IEEE1394控制器的系统、具有CD-ROM的PCI SCSI适配器和可分区磁盘设备创建的设备对象。附属于IEEE1394控制器的设备对象显示并描述于IEEE 1394控制器设备对象例程。 SCSI主控总线适配器上CD-ROM和磁盘设备的设备对象树 从图的下部开始,下面描述了每一设备对象及其相关驱动程序: 1.存
2010-04-06 23:27:00
1358
翻译 存储驱动和设备对象
储存设备栈由处理系统上存储设备I/O的驱动创建的树状设备对象组成。树的根节点是存储适配器或集成于其它存储栈的驱动栈的功能性设备对象(FDO)。树的子节点是文件系统和用户模式应用程序使用的设备对象。 如任一PnP驱动相同,通过IoCreateDevice创建设备对象,IoAttachDeviceToDeviceStack将其连接到设备栈,使用初始化期间PnP管理器传递给驱动程序的AddDe
2010-04-06 23:24:00
1087
翻译 存储驱动构架
由于文件系统构架变得更复杂,操作系统组件数目倍增,启动程序访问存储目标通过激增的多样的硬件和软件路径等原因,识别存储设备的方法变得不充足。例如,即插即用管理器为计算机中每一设备产生了一个实例标示符(instance identifier )。每一实例标示符相当于设备树中一个单独设备节点,并惟一标示该设备,如果设备保留在相同的位置。当计算机重启时,实例标示符仍然存在,但是当你移除设备到一个不同的
2010-04-06 23:11:00
1463
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人