美文网首页
内核编程-开发环境搭建+编写第一个驱动

内核编程-开发环境搭建+编写第一个驱动

作者: DF_Sky | 来源:发表于2023-03-04 21:41 被阅读0次

我用的环境是vs2022

微软官网下载驱动工具包
按照1-3步骤全部下载安装 已经安装的跳过
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk

image.png

#include "ntddk.h" //引入内核开发所需头文件

//驱动停止函数
VOID DriverUnload(PDRIVER_OBJECT DriverObject) {
    if (DriverObject != NULL) {
        DbgPrint("[%ws]Driver Upload,Driver Object Address:%p", __FUNCTIONW__, DriverObject);
    }
    return;
}
//驱动入口函数
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
    DbgPrint("[%ws] Hello Kernel World\n", __FUNCTIONW__);
    if (RegistryPath != NULL) {
        DbgPrint("[%ws]Driver REgistPath:%wZ\n", __FUNCTIONW__, RegistryPath);
    }
    if (DriverObject != NULL) {
        DbgPrint("[%ws]Driver Object Address:%p\n", __FUNCTIONW__, RegistryPath);
        DriverObject->DriverUnload = DriverUnload;
    }
    return STATUS_SUCCESS;
}

然后编译 可能会出现以下错误
error LNK2019: 无法解析的外部符号 DriverEntry,该符号在函数 GsDriverEntry 中被引用
导致该问题的原因是使用了.cpp后缀的文件格式,解决方法很简单, 可以直接把它换成.c结尾。或者加上extern"C"让它以C语言方式链接就可以了

我采用的是debug编译方式,编译完后 在debug目录会有一个first.sys文件 我名称用的first

接下来我们让驱动运行起来
我们在虚拟机中运行 避免一些意外情况发生 影响我们本机
我装的是win10系统
首先我们去掉驱动签名
开始->设置->更新与安全->恢复->高级启动下面 点击立即重启
重启后 会出现 启动选项 选择7 就是 禁用驱动程序签名

把编译好的驱动文件 放到虚拟机的C盘目录下

下一个dbgview工具 百度自己找 为了查看我们刚刚代码中的DbgPrint函数打印的日志
下载完后打开它

然后打开cmd窗口 记得要以管理员权限
注册驱动服务 demand 表示手动启动方式
sc create FirstDriver binPath= "C:\first.sys" type= kernel start= demand
启动服务 sc start FirstDriver

启动服务后 我们看dbgview工具的打印日志


image.png

这就表示成功了
和我们上面的代码一致

其他命令
停止服务 sc stop FirstDriver
删除服务 sc delete FirstDriver

相关文章

  • Linux内核与驱动开发

    Linux系统的使用与开发中,内核与驱动是比较重要的一块;而驱动开发类似系统编程,用到的是内核函数。驱动开发难点在...

  • Java基础语法_Day01

    一、Java开发环境搭建 Java概述 众所周知Java是一门编程语言,编程语言就是用来编写软件的。那么使用Jav...

  • HelloWorld入门程序

    3.1 程序开发步骤说明 开发环境已经搭建完毕,可以开发我们第一个Java程序了。 Java程序开发三步骤:编写、...

  • Flask Web 测试驱动开发最佳实践之 Flask 实例

    前言 前一篇讲到了 TDD 测试驱动开发的相关概念和环境搭建,这篇就着手开始用TDD方式开发了。首先这篇需要编写用...

  • nvidia-docker gpu环境搭建

    docker gpu环境搭建 前言 搭建GPU的开发环境需要安装nvidia的驱动、cuda、cudnn等,还要安...

  • Mybatis学习总结

    1、第一个Mybatis程序 思路:搭建环境->导入Mybatis->编写代码->测试 1.1搭建环境 搭建数据库...

  • 项目驱动的Java学习 - 第一个项目

    第一个项目 #Java开发环境搭建, 下载&配置JDK #Tomcat环境搭建 #Eclipse环境搭建 # 运行...

  • 以太坊智能合约开发环境搭建以及第一个Dapp

    本文包括三个部分: 1. 开发环境搭建 2. 开发环境的账户 3. 编写智能合约 1. 开发环境搭建 包括安装ID...

  • Java 入门程序

    1.程序开发步骤说明 开发环境搭建完成后,就可以开发我们的第一个Java程序了。Java程序开发三个步骤:编写、编...

  • android 自定义驱动(第一篇:驱动)

    简介 案例内容:我们不会为真实的硬件设备编写内核驱动程序,这里为了方便描述Android系统编写内核驱动程序的过程...

网友评论

      本文标题:内核编程-开发环境搭建+编写第一个驱动

      本文链接:https://www.haomeiwen.com/subject/pmwyldtx.html