一、windows内核开发需要的软件

1.WDK

2.WinDbg

3.virtualKD

4.DebugView

5.Visual C++ 6.0

6.VMware Workstation

二、windows内核开发软件的安装


1.WDK的安装和配置

wdk的下载地址:http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO

首先下载驱动开发包GRMWDK_EN_7600_1.ISO,并解压到本地文件夹,解压后WDK安装包:

OK到现在为止,WDK的安装和配置全部完成,接下来的活就是它的使用。

2.virtualKD的安装和配置

在内核驱动开发时,VMware Workstation是必不可少的,VMware
Workstation的安装教程网上很多(问度娘)。

假设VMware
Workstation虚拟机已经安装好了,并且已经成功安装了Windows XP系统。笔者的虚拟机的版本:VMware Workstation10.1,虚拟机里安装的系统版本: Windows XP sp3(目标机),本地安装的系统版本:Windows
XP sp3(宿主机)

virtualKD的下载地址:http://virtualkd.sysprogs.org/download/VirtualKD-2.8.exe

首先下载virtualKD到本地,并解压,如图:

现在从虚拟机xp系统回到本地调试机XP系统中:

OK到现在为止,virtulKD的安装和配置全部完成,接下来的活就是它的使用。

3.内核驱动开发IDE的使用

其实用EditPlus等文本软件工具也可以进行驱动程序的编码,但是不太方便。

由于驱动程序的编写主要是用C/C++,因此我们可以配置一下Visual C++ 6.0来进行驱动程序的简易编写。

三、windows内核驱动程序的编写

一个简单的驱动程序所包含的文件:

Hello.c的源码:

<span style="font-family:Microsoft YaHei;font-size:10px;">//开发NT驱动需要的头文件
#include <ntddk.h> //驱动卸载函数的声明
VOID DriverUnload(
IN PDRIVER_OBJECT DriverObject
); //驱动入口点函数
NTSTATUS DriverEntry(__in struct _DRIVER_OBJECT *DriverObject,
__in PUNICODE_STRING RegistryPath
)
{
//设置驱动的卸载函数
DriverObject->DriverUnload = DriverUnload; //只会在checked版下显示输出
KdPrint(("hello wdk!\n")); return STATUS_SUCCESS;
} //驱动卸载函数
VOID DriverUnload(
IN PDRIVER_OBJECT DriverObject
)
{
KdPrint(("DriverUnload\n"));
} //注:当在VC6.0的Include File里添加了WDK的头文件以后,
//在VC6.0里写代码就会出现代码高亮</span>

makefile文件--对于所有的驱动程序来说,内容是不变的(直接拷贝过来使用)。

sources文件--驱动编译的配置文件

一个简单的驱动程序需要的3个文件都准备好了,现在可以开始编译了:

开始编译:

编译后的文件夹:

编译成功生成的驱动:

windows内核开发环境的简易搭建的更多相关文章

  1. Windows内核开发-5-(2)-内核模式调试

    Windows内核开发-5-(2)-内核模式调试 普通用户模式的调试,采取的是给进程添加一个线程来挂起断点,作为一个调试器的线程在进程中使用.照这样来类推,对操作系统调试相当于添加一个进程来限制操作系 ...

  2. 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建

    本文使用的是cocos2d-x-2.1.4版本 ,截至目前为止是最新稳定版 所谓的开发环境就是制作游戏的地方,打个比方读者就会十分清楚了.比如提到做饭,人们都会想到厨房.这是 因为厨房有炉灶.烟机.水 ...

  3. Windows内核开发-6-内核机制 Kernel Mechanisms

    Windows内核开发-6-内核机制 Kernel Mechanisms 一部分Windows的内核机制对于驱动开发很有帮助,还有一部分对于内核理解和调试也很有帮助. Interrupt Reques ...

  4. Windows内核开发-10-监听对象

    Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程.dll还可以监听特定的对象和注册表.这里先讲一下监听对象. 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行 ...

  5. windows phone7开发环境配置错误

    遇到下面这样一个问题:在配置windows phoe7开发环境的时候出现如下错误,以及相应的解决方案,希望对大家有所帮助. 装完环境后出现下面错误: [caption id="attachm ...

  6. Grails开发环境的高速搭建

    Grails开发环境的高速搭建 1 JAVA环境变量的设置和Grails设置环境变量 个人參考 JAVA_HOME =E:\kaifa\Java\jdk7_32 GRAILS_HOME =E:\kai ...

  7. Windows内核开发-2-开始内核开发-2-内核开发入门

    Windows内核开发-2-开始内核开发-2- 第一个驱动程序: 直接采用vs2019中的Empty WDM Driver 模块创建: 初始的项目文件夹中有一个Driver Files里面会有一个.i ...

  8. Windows内核开发-3-内核编程基础

    Windows内核开发-3-内核编程基础 这里会深入讲解kernel内核的API.结构体.和一些定义.考察代码在内核驱动中运行的机制.最后把所有知识合在一起写一个有用的驱动. 本章学习要点: 1:通用 ...

  9. Windows内核开发-4-内核编程基础

    Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Cr ...

随机推荐

  1. 译文《全新首发JDK 16全部新特性》

    封面:洛小汐 译者:潘潘 JDK 8 的新特性都还没摸透,JDK 16 的新特性就提着刀来了. 郑重申明: 第一次冒险翻译专业领域的文献,可想而知,效果特别糟糕.一般翻译文献特别是 技术专业领域 的内 ...

  2. PHP配置 4. 虚拟主机配置open_basedir

    将/usr/local/php/etc/php.ini中open_basedir注释掉,编辑虚拟主机配置open_basedir #vim /usr/local/apache2 .4/conf/ext ...

  3. 一篇看懂JVM底层详解,利用class反编译文件了解文件执行流程

    JVM之内存结构详解 JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的区域,具体如图1-1所示. 五个区域 JVM分为五个区域:堆.虚拟机栈.本地方法栈.方法区(元空间).程序计数 ...

  4. SHA算法摘要处理

    byte[] input="sha".getBytes();//待做消息摘要算法的原始信息,可以是任意字符串 MessageDigest sha=MessageDigest.get ...

  5. PTA 线性表元素的区间删除

    6-8 线性表元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: ...

  6. 搞懂 ZooKeeper 集群的数据同步

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...

  7. Spring源码之注解扫描Component-scan

    本文主要介绍Spring的component-scan标签,了解spring是如何实现扫描注解进行bean的注册,主要实现实在 NamespaceHandler, NamespaceHandlerSu ...

  8. java例题_18 乒乓球比赛(对手问题)

    1 /*18 [程序 18 乒乓球赛] 2 题目:两个乒乓球队进行比赛,各出三人.甲队为 a,b,c 三人,乙队为 x,y,z 三人.已抽签决定比赛名单. 3 有人向队员打听比赛的名单.a说他不和 x ...

  9. Linux性能优化:内存使用情况分析

    Blog:博客园 个人 目录 什么是内存 Linux内存回收机制 查看Linux内存情况 查看/proc/meminfo 使用free命令查看 Buffer和Cache Swap 内存泄漏和内存溢出 ...

  10. Async Cow Python 七牛异步SDK

    # Async Cow Python 七牛异步SDK > gitee链接 >github链接本SDK基于官方SDK改造而成,但又对其进行了进一步封装,简化了相关操作例如:- 1.不需要使用 ...