qintangtao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 31 下一页

2013年4月14日

摘要: //结构化异常处理(try-except块)__try{}__except(filter_value){}在被__try{}包围的块中,如果出现异常,会根据filter_value的数值,判断是否需要在__except{}块中处理。filter_value的数值会有三种可能。(1)EXCEPTION_EXECUTE_HANDLER,该数值为1。进入到__except进行错误处理,处理完后不再回到__try{}块中,转而继续执行(2)EXCEPTION_CONTINUE_SEARCH,该数值为0。不使用__except块中的异常处理,转而向上一层回卷。如果已经是最外层,则向操作系统请求异常处理函 阅读全文
posted @ 2013-04-14 21:24 qintangtao 阅读(1420) 评论(0) 推荐(0) 编辑

摘要: 这两个函数不是返回该段内存是否可读写,而是当不可读写的时候引发一个异常(Exception)。这个异常需要用到微软的编译器提供的"结构化异常"处理变法。"结构化异常"机制会轻松的检测到这种异常进而做出相应的异常处理/************************************************************************* 函数名称:ProbeForRead* 功能描述:检查该内存是否可读* 参数列表: Address:血药被检查的内存的地址 Length:需要被检查的内存的长度,单位是字节 Alignment:描. 阅读全文
posted @ 2013-04-14 12:46 qintangtao 阅读(562) 评论(0) 推荐(0) 编辑

摘要: /************************************************************************* 返回状态值*DDK大部分返回值类型是NTSTATUS类型。查看DDK.h文件,可以看到:*************************************************************************/typedef LONG NTSTATUS;//NTSTATUS就是一个32位的整数,其每位有着不同的含义在执行为内核函数后,应该查看该函数的返回状态如果状态码高位为0,无论其它位置是否设置,该状态码代表成功绝对不 阅读全文
posted @ 2013-04-14 12:35 qintangtao 阅读(716) 评论(0) 推荐(0) 编辑

摘要: /************************************************************************* 数据类型定义* c语言的定义 DDK中的定义* void VOID* char CHAR* short SHORT* long LONG* wchar_t WCHAR* ... 阅读全文
posted @ 2013-04-14 12:09 qintangtao 阅读(513) 评论(0) 推荐(1) 编辑

2013年4月10日

摘要: 分配内核函数/************************************************************************* 函数名称:ExAllocatePool* 功能描述:分配内核内存* 参数列表: PoolType:是个枚举变量 NonPagedPool:分配非分页内存 PagedPool:分配分页内存 NonPagedPoolMustSucceed:指定分配非分页内存,必须成功 DontUseThisType:未指定 ... 阅读全文
posted @ 2013-04-10 11:28 qintangtao 阅读(816) 评论(0) 推荐(0) 编辑

摘要: 注意:LIST_ENTRY ListEntry; //LIST_ENTRY需要作为_MYDATASTRUCT结构体的一部分判断链表是否为空IsListEmpty(&head)从首部插入链表InsertHeadList(&linkListHead, &pData->ListEntry);从尾部插入链表InsertTailList(&linkListHead, &pData->ListEntry);从首部删除链表PLIST_ENTRY pEntry = RemoveHeadList(&linkListHead);从尾部删除链表Remove 阅读全文
posted @ 2013-04-10 10:51 qintangtao 阅读(1024) 评论(0) 推荐(0) 编辑

2013年4月9日

摘要: 设备对象用于保存设备特征和状态的相关信息。一个设备对象表示一个逻辑的、虚拟的或物理的设备,设备对象的I/O请求由一个驱动对象操控着。每一个内核模式的驱动必须创建设备对象,它通过调用IoCreateDevice函数一次或多次来创建。设备对象用结构体DEVICE_OBJECT表示。每个设备对象有一个指针(NextDevice)指向下一个设备对象,从而形成一个设备对象链表。该链表的第一个设备是由驱动对象结构体中的DeviceObject成员指明的。设备对象结构体DEVICE_OBJECT的具体定义如下:typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_A 阅读全文
posted @ 2013-04-09 12:11 qintangtao 阅读(3748) 评论(0) 推荐(0) 编辑

摘要: typedef struct{PDEVICE_OBJECT DeviceObject; //指向驱动程序创建的设备对象PUNICODE_STRING HardwareDatabase; //记录的是设备的硬件数据库名,这里同样用Unicode字符串记录PFAST_IO_DISPATCH FastIoDispatch;//文件驱动中用到的派遣函数PDRIVER_INITIALIZE DriverInit;//指向DriverEntry函数的,这是通过IO管理器来建立的。PDRIVER_STARTIO DriverStartIo;//记录StartIO例程的函数地址,用于串行化操作PDRIVER_ 阅读全文
posted @ 2013-04-09 12:08 qintangtao 阅读(1123) 评论(0) 推荐(0) 编辑

2013年4月4日

摘要: winhex教程winhex数据恢复分类:硬恢复和软恢复。所谓硬恢复就是硬盘出现物理性损伤,比如有盘体坏道、电路板芯片烧毁、盘体异响,等故障,由此所导致的普通用户不容易取出里面数据,那么我们将它修好,同时又保留里面的数据或后来恢复里面的数据,这些都叫数据恢复,只不过这些故障有容易的和困难的之分;所谓软恢复,就是硬盘本身没有物理损伤,而是由于人为或者病毒破坏所造成的数据丢失(比如误格式化,误分区),那么这样的数据恢复就叫软恢复。这里呢,我们主要介绍软恢复,因为硬恢复还需要购买一些工具设备(比如pc3000,电烙铁,各种芯片、电路板),而且还需要懂一点点电路基础,我们这里所讲到的所有的知识,涉及面 阅读全文
posted @ 2013-04-04 13:40 qintangtao 阅读(1239) 评论(0) 推荐(1) 编辑

2013年4月2日

摘要: 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n ); //本意是预先分配n个字节给字符串String ( const char* p ); // 用C风格的字符串p作为... 阅读全文
posted @ 2013-04-02 16:21 qintangtao 阅读(211) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 31 下一页