2015年11月19日

IRP 与 派遣函数

摘要: 什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。也就是说,派遣函数是用来处理驱动程序提交过来的 I/O 请求。 那什么是 I/O 请求呢? 上层程序与驱动程序之间通信时,上层会发出I/O请求,即输入... 阅读全文

posted @ 2015-11-19 20:57 I_am 阅读(1850) 评论(0) 推荐(0) 编辑

RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用

摘要: 要解释“驱动对象”,就得先从 DriverEntry() 说起: 做过C语言开发的都知道程序是从 main() 函数开始执行。在进行 Windows 驱动程序开发的时候没有 main() 函数作为函数入口,取而代之的是 DriverEntry(). DriverEntry() 的原型如下: extern "C" NTSTATUS DriverEntry... 阅读全文

posted @ 2015-11-19 10:29 I_am 阅读(3734) 评论(0) 推荐(0) 编辑

2015年11月18日

基类 的薄弱之处

摘要: 基类 的薄弱之处 这个怎么解释呢?比如说:程序总是由人来设计与编写的,所以工作开始时考虑不到某些问题当然也是很正常的事,所以可能在工作进行了一段时间后发现基类需要变更。 你想, 如果我在基类中更改了成员的数据类型,以及那些允许重写的那些方法和属性, 那派生类及其子类还能正常工作吗?尤其是当一个团... 阅读全文

posted @ 2015-11-18 18:26 I_am 阅读(454) 评论(0) 推荐(0) 编辑

2015年11月17日

类 的重载(Overloads)与隐藏(Shadows)

摘要: 我在上篇文章中讲解了类 的继承和重写,如果想要在派生类中重写基类了方法或函数,那首先基类必须要有用 Overridable 关键字的公开声明的方法或函数,这样,基类的派生类才能用 Overrides 关键字来重写基类带有 Overridable 关键字的公开方法或函数。 重载是什么意思呢? 重载(Overloads): 就是我们可以用同样的名称,在派生类中用不... 阅读全文

posted @ 2015-11-17 17:49 I_am 阅读(1375) 评论(0) 推荐(0) 编辑

VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)

摘要: ------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015;微软在 “WDK7600” 以后就不再提供独立的内核驱动开发包了,而是必须首先安装微软集成开发环境VS,然后再从微软官网下载集成的WDK驱动程序开发包、或者离线安装的开发包。 地址: https://msdn.micro... 阅读全文

posted @ 2015-11-17 13:45 I_am 阅读(11706) 评论(1) 推荐(4) 编辑

2015年11月8日

类 的继承性(Inherits)与 重写(Overrides)

摘要: (类) 与 (结构) 类似,让我们可以定义并封装成一组相关项的数据类型。比如封装成结构,那么这个封装包的数据类型就为值类型;如封装成类,那么这个封装包的数据类型就为引用类型。 然而与结构的一个重要区别就是:类可以继承和扩展其他类的特性。 作为新类的基础的类称为“基类”;从基类派生出来的类称为“派生类”。派生类继承基类中定义的所有字段、属性、方法 和事件。我们只要对类进行一次开发和调试,就可以将其作... 阅读全文

posted @ 2015-11-08 12:08 I_am 阅读(1045) 评论(0) 推荐(0) 编辑

2015年11月7日

VB.NET 结构(Structure)和类(Class)的区别

摘要: 类是我们用来构造 VB.NET 应用程序时的最基本的编程结构了。 那结构与类有什么相似之处与不同之处呢? 结构和类, 相同之处是都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件,都可以实现接口,都有共享的构造函数,都能对成员进行封装。 没错都有构造函数,那结构的构造函数是什么,结构难道也可被实例化成对象? 看这一段代码: Module Module1 Private Struc... 阅读全文

posted @ 2015-11-07 17:48 I_am 阅读(4789) 评论(0) 推荐(0) 编辑

VB.NET Shared(共享)和 Static(静态)关键字的区别

摘要: 共享成员(Shared): VB.NET现在是支持真正的面向对象编程,可以继承、使用多态、共享成员 和静态成员。 共享成员就是在所有类和所定义派生类的实例之间共享的方法、属 性、字段和事件。所有使用类创建的对象都可以访问相同的数据、共享实现过程 ,并且收到相同的激发事件。 要实现函数过程的共享性,只需在 Public 或 Private 成员修饰符后加上 Shared 关键字即可了。 Share... 阅读全文

posted @ 2015-11-07 16:47 I_am 阅读(4931) 评论(0) 推荐(0) 编辑

2015年11月6日

多窗体应用中的注意点

摘要: 创建两个窗体 ,每个窗体上各有一个按钮,点击时隐藏其所在的那个窗体,切换出另一个窗体 来 其实只需要两句写在按钮的单击响应中的语句就行了: 两个窗体:Form1与Form2。 Form1上的按钮为: Button1,Form2上的按钮为: Button2 于是,我毫不犹豫地在VS.NET中内开始我的第一个VB.NET的项 目了。首先,新建了一个VB.NET的Windows应用程序项目,自动生成了... 阅读全文

posted @ 2015-11-06 16:53 I_am 阅读(647) 评论(0) 推荐(0) 编辑

垃圾回收器 Dispose 和 Finalize 的互补作用

摘要: 假如我们程序有两个窗口 Form1、Form2; 当我们关闭一个窗口的时候,会发出一个 终止响应,并将该窗口对象送入终止队列,公共语言运行库的垃圾回收器跟踪着这个对象的生存期,此时就会调用此对象的基类,比如 Form2的Dispose方法,用于销毁对象并收回资源。 如果我们在 Form2 窗体中建立一个关闭后显示 Form1 的窗体,代码如下: Public Class Form2 Pri... 阅读全文

posted @ 2015-11-06 16:00 I_am 阅读(1076) 评论(0) 推荐(0) 编辑

导航