visual studio 2019 + WinDDK 7600.16385.0编写驱动

2023-05-16

驱动版本WinDDK 7600.16385.0

IDE:visual studio 2019

新建空白项目

配置类型从exe改为生成文件

 配置完后,配置属性中就只剩基础配置了,没有C/C++、链接器等配置,因为驱动程序需要通过ddk编译,所以其他配置也是没用,自己配置编译程序的命令行即可

添加makefile和source文件

makefile是默认的,不需要修改的

#
# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the  components of the Windows NT DDK
#

!INCLUDE $(NTMAKEENV)\makefile.def

source文件主要指定c文件和目标名称

# $Id$
TARGETNAME=..\testDriver
TARGETPATH=obj
TARGETTYPE=DRIVER

# Create browse info
#BROWSER_INFO=1
#BROWSERFILE=<some path>

TARGETLIBS=

# Additional defines for the C/C++ preprocessor
C_DEFINES=$(C_DEFINES)

SOURCES=main.c \

TARGETNAME是相对于编译输出目录的,project目录\objfre_win7_amd64\amd64

配置编译命令行

 理论上需要4个配置的,不同debug/release+win32/x64,对应4个bat文件,例如x64 release版本

echo build x64 release
call ddkbuild.bat -W7X64 fre . %1
del /f /q *.log *.err *.wrn
echo done...

其中最重要的只有一行,即第二行调用ddkbuild.bat,该文件来自于DDKWizard。

右键生成就会调用【生成命令行】对应的命令

还有另一种编译方式:使用WinDDK 7600.16385.0中自带的编译工具命令行

然后cd到编译目录,执行build

 如果写成命令行,x64-release版本的命令行如下:

set curPath=%~dp0
call %W7BASE%\bin\setenv.bat  %W7BASE%\ fre x64 WIN7
echo curPath %curPath%
echo setenv done
%curPath:~0,2%
cd %curPath%
build

W7BASE是自行设置的一个环境变量 ,指向WinDDK的安装目录,如D:\WinDDK\7600.16385.0

命令行安装驱动:

测试阶段不想写一个安装程序,所以先用命令行安装

C:\Users\Administrator>sc create testDrive binPath= C:\Users\Administrator\Desktop\testDrive.sys type= kernel
[SC] CreateService 成功

C:\Users\Administrator>sc start testDrive
[SC] StartService 失败 577:

Windows 无法验证此文件的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。

如上一行sc create命令即可创建服务,sc start启动服务,提示签名错误,windows7和windows10禁用驱动签名的方式不一样,可以自行百度

禁用驱动签名后再次启动

C:\Users\Administrator>sc start testDrive

SERVICE_NAME: testDrive
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :

启动之前打开dbgView的话,可以看到驱动内的输出

关闭服务,也就是停止驱动

C:\Users\Administrator>sc stop testDrive

SERVICE_NAME: testDrive
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

visual studio 2019 + WinDDK 7600.16385.0编写驱动 的相关文章

  • YOLOv5之autoanchor看这一篇就够了

    简单粗暴 xff0c 废话也不罗嗦了 xff0c 学习目的就是解决下面三个问题 xff0c 1 默认anchor t设置为4 xff0c 这个参数如何调整 xff1f 有没有必要调整 xff1f xff08 首先网上很多说这个参数是长宽比是
  • 反转一个长字符串中的子字符串

    第一次练习写博客 xff0c 记录下自己感觉满意的成果吧 include lt stdio h gt include lt string h gt bool findPosition char sur char dst int amp st
  • c中全局变量,全局结构体使用

    1 在A 中定义的函数 xff0c 如何在 B 中调用 xff1f 如果有头文件 xff0c 在头文件中声明 xff0c 在B 文件中 include 头文件就可以了 如果是在 c 文件中声明的 xff0c 在 B 中加 extent 声明
  • Vue3展示Markdown内容

    起因 想要搭建一个个人网站 xff0c 然后在网站上展示个人信息以及平时学习或者使用框架的一些内容 所以需要一个能够将markdown内容转化到页面上展示 xff08 就类似于github或者各大博客网站 xff09 个人网站是vue3 x
  • debian linux 添加永久环境变量

    写在前面的话 搜索linux添加环境变量 xff0c 网上已经有很多的教程 xff0c 本来就几个命令还是把我搞的好惨 xff0c 几个坑大牛们不指出来 xff0c 我这小白就卡在里面了 xff0c 写下血泪史供参考 关于环境变量 expo
  • CLion、IDEA、Pycharm等用WSL访问不了环境变量的解决方案——更新于2021.12

    目录 相关文献PowerShell解决方案 博主全网搜索过很多教程 xff0c 各种碰壁不成功 xff0c 最终使用了PowerShell成功的 本文将介绍PowerShell的成功方法和几个替代方案 博主使用WSL是Ubuntu 20 0
  • Linux下安装xrdp实现远程桌面

    使用rdp协议访问远程Linux桌面 一般情况下 xff0c 如果需要登陆远程Linux系统 xff0c 我们会使用ssh telnet来完成 xff0c 如果需要登陆到远程Linux系统的桌面环境 xff0c 我们可能会使用VNC VNC
  • 树莓派——xrdp win10远程登录以及蓝屏问题

    1 安装xrdp 使用Putty命令行输入以下命令 sudo apt get install xrdp sudo apt get install tightvncserver xrdp 安装完成后 xff0c 重启xrdp服务器 sudo
  • 使用lnmp安装Nextcloud出现404问题解决方法

    最新消息 特大消息特大消息 xff0c 由于答主解决不了后续出现的WEBDAV接口错误问题 xff0c 因此更改了安装方式 61 61 61 61 61 DOCKER xff01 装完之后感慨一下 xff0c docker大法真好 参考教程
  • 笔记:1. Centos 安装 mpicc

    心情 xff1a 历时一年 xff0c 考上了研究生 xff0c 从此踏上第一性原理计算的道路 是有点小开心 xff0c 因为以后可以做自己喜欢的事情 xff0c 剩下的就是怎么通过做自己喜欢的事挣点钱 xff0c 养活自己 正文 目的 x
  • 【Java】对两个Set取交集,差集,并集

    1 取交集 xff08 取两个集合中都存在的元素 xff09 HashSet lt String gt setA 61 new HashSet lt gt HashSet lt String gt setB 61 new HashSet l
  • nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 原因及避坑解决方案

    由于断电 xff0c 服务器重启了 xff0c 当再次跑实验时 xff0c 发现cuda不可用 xff0c 于是输入 nvidia smi 才发现了一个错误 xff0c 如下 xff1a NVIDIA SMI has failed beca
  • 【Linux】Debian的下载、安装、图形化界面,多图杀猫

    Linux的版本众多 xff0c 同时相对于非专业用户少见 不像Windows系统那样大众 xff0c 稍微有些知识都知道 xff0c 配置低一点的机器就选择Windows XP Professional SP3 xff0c 搞Asp的用W
  • 【iOS】表视图

    iOS的表视图并不简单 xff0c 它是需要修改 h中加两个委托进去 xff0c 同时在 m文件实现一系列固定的函数 xff0c 才能完成表视图的创建 一切犹如当初点击空白处关闭键盘需要一段代码才能实现一样 xff0c 表视图的创建也不像安
  • win10+anconda+tensorflow安装

    最近由于需要用到深度学习 xff0c 经过一番调研发现tensorflow依旧是工业界模型实现的主流框架 xff0c 于是自己尝试安装tensorflow 原以为直接采用pip就可以直接搞定 xff0c 只能怪自己太天真 xff0c 刚开始
  • Ubuntu 19.04编译Android源码缺少libtinfo.so.5问题

    Ubuntu 19 04 Manjro编译Android Pie源码缺少libtinfo so 5问题 背景 使用ubuntu19 04编译Android源码的时候 xff0c 报缺少libtinfo so 5 解决方法 通过find命令查
  • shell编程的控制结构及其if语句

    控制结构 shell具有般高级程序设计语言所具有的控制结构和其他复杂功能 xff0c 如if语句 case语句 循环结构 函数等 其实在shell 中 xff0c 这些控制结构也被称为命令为了符合程序设计的习惯 xff0c 才把它们称为语句
  • 快速给图片加水印的方法

    快速给图片加水印的方法 xff01 图片添加水印后可以杜绝图不被别人随意使用 xff0c 能保护自己的知识产权不被侵犯 xff0c 所以我们在工作中经常先给图片添加水印 xff0c 然后再将图片对外发布 xff0c 这是一个比较常见的事情
  • OpenCvSharp 棋盘格标定助手

    使用的是VS调用OpenCvSharp资源库进行一个Winform操作界面编写 xff0c 网上找了很多开源的程序 xff0c 发现根本用不了的 xff0c 用的时候还需要你配置各种电脑系统变量 xff0c 显得好麻烦 现在弄了个简单的标定
  • 最长回文子串(Manacher算法)

    又是刷OJ的一天 上题 题目描述 xff1a JiangYu有一个长度为n的仅包含小写字母的字符串 他想找出其中最长的回文子串 输入 xff1a 一个字符串s xff0c s 1e6 输出 xff1a 一个整数 xff0c 最长回文子串长度

随机推荐