自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BpLife

free and true love

  • 博客(25)
  • 收藏
  • 关注

原创 sysenter/sysexit 原理

1.从ring0到ring3最开始是用的int2E,此模式切换过程设计很多次内存访问,还有两次查表操作机访问权限的检查,这导致模式切换的开销很大从PentiumII 处理器开始,Inter引入了新的指令sysenter/sysexit,来实现快速的模式切换。2.其做法尽可能避免内存访问,而通过处理器的内部寄存器来指定必要信息。sysenter使用3个MSR寄存器来指定跳转目的地址和栈位

2013-12-12 16:10:15 1848

原创 IO设备控制操作--DeviceIoControl

1.除了ReadFile和WirteFile以外,应用程序还可以通过另外一个API DeviceIoControl 操作设备。DeviceIoControl内部会使操作系统创建一个IRP_MJ_DEVICE_CONTROL类型的IRP,然后操作系统会将这个IRP转发到派遣函数中。2.I/O控制码(IOCTL)一个32位值。DDK提供一个宏CTL_CODE(devicetype,Func

2013-12-11 16:32:24 3386

原创 缓冲区读写操作

1.在驱动程序创建设备对象的时候,需要考虑好该设备时采用何种读写方式。当IoCreateDevie创建设备后,需要对设备对象的Flags进行设置。2.设备对象有3中读写方式:1.DO_BUFFER_IO2.DO_DIRECT_IO3.其他读写操作一般由ReadFile或者WriteFile函数引起的。3.DO_BUFFER_IO 是系统在内核中申请一块空

2013-12-10 18:01:31 1792

原创 测试IRP 和Dispatchroutin

下面是NT驱动demo#include "ntddk.h"void MyUnload(PDRIVER_OBJECT pDriverObj);NTSTATUS CreateDevice(PDRIVER_OBJECT pDriverObj);NTSTATUS MyDispatchRoutin(PDEVICE_OBJECT pDevObj,PIRP pIrp);extern "C" NTST

2013-12-10 16:01:03 753

原创 WINDOWS I/O 模型

1.对计算机的处理器来说,I/O硬件设备其实只是一些符合某些接口规范的控制器而已。处理器并不直接与设备打交道,而是向设备控制器发号施令,或者接收设备控制器的通知和命令。控制器和处理器之间通过总线进行通信2.I/O系统由5个部分组成:i/o管理器,即插即用管理器,电源管理器,WMI例程,以及驱动程序。3.I/O管理器除了支持与设备相关的驱动程序设计以外,它也允许与设备无关的驱

2013-12-10 13:42:18 603

原创 IO_STACK_LOACKTION结构体

typedef struct _IO_STACK_LOCATION { UCHAR MajorFunction; UCHAR MinorFunction; UCHAR Flags; UCHAR Control; // // The following user parameters are based on the service that is

2013-12-10 09:59:48 807

原创 执行体线程--ETHREAD

typedef struct _ETHREAD { KTHREAD Tcb;//内嵌了KTHREAD对象作为第一个数据成员 LARGE_INTEGER CreateTime;//包含了线程创建时间,他是在线程创建时被赋值的。 union { LARGE_INTEGER ExitTime;//包含了线程的退出时间, LIST_ENTRY L

2013-12-09 17:23:45 2628

原创 执行体进程--EPROCESS

执行体层位于内核层之上,它侧重于提供各种管理策略,同时为上层应用层程序提供基本的功能接口。// Process structure.//// If you remove a field from this structure, please also// remove the reference to it from within the kernel debugger// (nt\p

2013-12-08 20:35:38 1356

原创 内核线程结构--KTHREAD

WRK中KTHREADtypedef struct _KTHREAD { // // The dispatcher header and mutant listhead are fairly infrequently // referenced. // DISPATCHER_HEADER Header;//线程对象也是个分发器对象。 LIST

2013-12-08 19:38:32 1886

原创 内核层的进程机构--KPROCESS

1.WRK中的KPROCESStypedef struct _KPROCESS { // // The dispatch header and profile listhead are fairly infrequently // referenced. // DISPATCHER_HEADER Header;//此域表明KPROCESS对象也是一个分

2013-12-08 16:55:50 2327

原创 进程和线程

1.进程是各种资源的容器,它定义了一个地址空间作为基本的执行环境;而线程是一个指令执行序列。直接访问所属进程中的资源2.抢占式调度算法需要一个时钟中断来获得对处理器的控制权,而非抢占式算法并不需要时钟中断。3.三种典型的线程调用算法:1.先到先服务算法。(FIFO)队列2.时间片轮转调度算法。处理器的时间被分成最大长度不超过某个值的时间片段,称为时间片。这种方法存在

2013-12-08 15:21:09 541

原创 并发和同步

1.并发指多个控制流同时在执行,即可能是真正的并发执行,也可能是分时的并发执行,同步则是保证在并发执行的环境中各个控制流可以有效执行,包括对资源的共享或互斥访问,以及代码功能逻辑循序。2.为了保护对一个内存单元操作,我们必须使该操作称为一个院子操作。Intel x86 指令体系中,有些运算指令加上lock就可以保证其原子性。如add,adc,and btc,bts 等等。windows

2013-12-07 20:31:18 1459

原创 IRP与派遣函数

1.派遣函数是WINDOWS驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求时在派遣函数中处理的。2.用户模式下所有驱动程序的I/O请求,全部由操作系统化为一个叫做IRP的数据结构,不同的IRP数据会被“派遣”到不同的派遣函数(Dispatch Functin )中,这也是派遣函数名字的由来。3.IRP的处理机制类似Windows应用程序的

2013-12-06 10:53:26 1344

转载 最常被程序员们谎称读过的计算机书籍

马克·吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说。这种说法同样适用于“经典”的计算机书籍。在Stack Overflow(以及其它很多软件论坛)上,诸如”程序员最应该读的计算机书籍有哪些?“这样的问题会周期性的出现。这样的问题不断的被提出、被回答,只是形式不同罢了。相同的几本书总是会出现在清单的前几名内,所以,如果想知道人们谈论的都是些什么,你有必要去读

2013-12-06 08:41:48 563

转载 认真过好你的二十几岁

“别活得太认真,你逃不出你的命运。” – Van Wilder这句流行的名言,对于如今的20几岁的青年,看起来就是让他们没有任何目标的自由生活,尽可能的为所欲为,不接受任何指引。作为一个工作狂、一个创业者,从我自学校毕业,这句话就没有和我产生过共鸣,不仅如此,我甚至还十分慎重的过好每一分钟,因为我知道,20几岁,这是一生中一段非常独特的时间,是人生的其它时间代替不了的。一个朋友

2013-12-06 08:29:52 518

原创 WDM式驱动的基本结构

1.对于WDM驱动程序来说,一般都是基于分层。也就是说,完成一个设备操作,至少要由两个驱动设备共同完成一个是物理设备对象(Physical Device Object)PDO,另一个是功能设备对象(Function Device Object)FDO。关系是附加与被附加的关系。当PC插入某个设备的时,PDO会自动创建。确切的说,是由总线驱动创建的。PDO不能单独操作设备,需要配合FDO一起使用。系

2013-12-05 16:54:54 1138

原创 windows系统概念

1.从系统启动一直到内核能够正常工作,再到用户登录到系统,windows系统中的各个组件都要完成相应的初始化任务2.系统内核接收应用程序的请求,与硬件设备进行通信;另一方面,硬件设备向计算机发送信号,驱动程序收到信号后,与系统内核一起把信号传递给恰当的应用程序。3.ntoskrnl.exe 包含2层,一层是微内核(micro-kernel),这一层包含了基本的操作系

2013-12-05 10:41:19 771

原创 WinDbg 内核调试常用命令

1. vertarget 命令可以显示目标系统的基本信息,如系统版本,计算机名,内核基质等kd> vertargetWindows 7 Kernel Version 7601 (Service Pack 1) MP (1 procs) Free x86 compatibleBuilt by: 7601.18113.x86fre.win7sp1_gdr.130318-1533Machine

2013-12-05 09:46:07 1780

原创 NT式驱动基本结构

1.对于NT式驱动来说,主要的函数是DriveEntry函数,卸载函数,以及各个IRP的派遣函数2.驱动加载过程与驱动入口函数(DriverEntry)   NTSTATUS DriveEntry(IN PDRIVER_OBJECT pDriverobject,  IN PUNICODE_STRING pRegistryPath);//函数名可以自己定义DriverEntry主

2013-12-04 19:03:49 1155

原创 设备对象(DEVICE_OBJECT)

1.每个驱动程序会创建一个或多个设备对象(下文称DO),用DEVICE_OBJECT数据结构表示。每个DO都会有个指针指向下一个DO,因此就形成了一个DO链。DO链的第一个DO是由DRIVER_OBJECT 结构体中的 PDRIVER_EXTENSION 指明的.DO保存DO特征和状态信息,以下是字段信息:typedef struct _DEVICE_OBJECT { CSHORT

2013-12-03 20:09:03 1592

原创 驱动对象(DRIVER_OBJECT)

每个驱动程序会有唯一的DRIVER_OBJECT驱动对象与之对应,并且这个DRIVER_OBJECT是在驱动加载时候,被内核中的对象管理器所创建。它作为驱动一个实例被内核加载,并且内核对一个驱动只加载一个实例。确切的说,是由内核的I/O管理器负责加载的。驱动程序需要在DriveEntry中初始化。typedef struct _DRIVER_OBJECT { CSHORT Type;

2013-12-03 19:10:44 921

原创 驱动程序是怎么操作硬件设备的

这里以CreateFile API 为例,其他操作设备的API类似。首先应用程序调用CreateFile Api,这个API是由Win32子系统的三大模块中的Kernel32.dll实现的。CreateFile函数会调用Ntdll.dll中的NtCreateFile函数,其中NtCreateFile是未文档化的函数,最好不要直接调用NtCreateFile 的作用是穿越用户模式的边界,

2013-12-03 15:08:37 2965

转载 如何阅读大型代码库?

Casey问我:“对于新手,有什么有针对性的诀窍来阅读大型代码库吗?”碰巧,我认为这是一个非常好的问题。我觉得想要成为一个优秀的开发者,阅读代码库并弄清清楚内部是怎么回事的能力非常重要。在你的职业生涯中你会中途加入一个现有的项目并被要求迅速融入进去。或者,甚至更难,会有一个项目丢给你让你自己一个人搞清楚。最坏的情景就是你被带入一个项目,要你替换掉让工程运行失败的“那些肆无忌惮的*杂

2013-12-03 14:05:25 480

原创 驱动笔记

1.对PNP(plug and play )and IRP 处理 ,是NT式驱动和WDM驱动的重大区别之一2.windows 的I/0 操作死基于异步设计的。也就是线程在发起一个I/0操作的时候,可以不等待这个I/o操作完成。就发起另一个I/O操作请求。这样CPU就不会将时间浪费在等待I/O 操作完成上。这样就大大提高了操作系统设计对I/O的吞吐能力。编写驱动程序的时候尽量让驱动程序支持异步操作

2013-12-03 11:29:13 762

转载 坐得越久 死得越快

又一项研究显示,久坐对你的健康是真的、真的、真的非常有害。请买一个可站着工作的桌子吧!可站着编程的电脑桌一项对超过20万个澳大利亚人的研究结果给这样一个事实又增加了一份活体证明:坐得越久的人死得越快。研究同时还发现,锻炼不能改变这种趋势——尽管它能有效降低这种风险。研究结果清晰的告诉我们这样一个简单的信息:多站立、少坐着,这样能延长你的寿命。尽管

2013-12-02 12:17:32 719

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除