首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

windows驱动开发教程_windows内核驱动开发

Windows驱动程序入门: Windows 驱动程序入门 – Windows drivers | Microsoft Docs Github: https://github.com/Microsoft...开发环境 Visual Studio + WDK(Windows Driver Kit) 其中WDK需要自己手动下载安装 笔者是在Windows平台上开发,使用的开发环境为 Visual Studio...实现方式 WDM vs WDF 对于刚接触驱动开发的新手来说,笔者不建议采用WDM(Windows 驱动程序模型)进行开发。...目前在网上能找到的关于驱动开发的中文书籍基本上都是围绕WDM模式进行讲述的,而关于WDF(Windows 驱动框架)开发的书籍寥寥无几,《竹林溪径——深入浅出Window驱动开发》和《Developing...Drivers with the Windows Driver Foundation》算是两本讲述基于WDF开发驱动的书籍,两者都能在网上找到电子书资源。

1.6K20

1.1 Windows驱动开发:配置驱动开发环境

在进行驱动开发之前,您需要先安装适当的开发环境和工具。首先,您需要安装Windows驱动开发工具包(WDK),这是一组驱动开发所需的工具、库、示例和文档。...然后,您需要安装Visual Studio开发环境,以便编写和调试驱动程序。在安装WDK和Visual Studio之后,您还需要配置适当的项目设置,以便能够正确编译和构建驱动程序。...,根据机器配置不同可能需要等待一段时间;图片接着读者还需要继续安装Windows Driver Kit 8.1工具包,请将该工具包解压缩到桌面,并双击wdksetup.exe进行安装,过程中只需要一直下一步...图片虚拟机模板创建完成后,读者可根据如下配置选择编辑虚拟机设置,并在磁盘位置处将课件中的cn_windows_10_consumer_editions_version_1903_x64_dvd_8f05241d.iso...挂载到虚拟机上;图片点击开启虚拟机,并按照提示将Windows系统正确的安装,需要注意的是在选择版本时,读者最好使用教育版与笔者开发环境保持一致,至此只需等待系统安装完毕,根据系统差异安装时间可能有所差别

35810
您找到你想要的搜索结果了吗?
是的
没有找到

8.4 Windows驱动开发:文件微过滤驱动入门

MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单...,多数IRP操作都由过滤管理器(FilterManager或Fltmgr)所接管,因为有了兼容层,所以在开发中不需要考虑底层IRP如何派发,更无需要考虑兼容性问题,用户只需要编写对应的回调函数处理请求即可...,这极大的提高了文件过滤驱动开发效率。...[Version] Signature = "$Windows NT$" Class = "ActivityMonitor" ;指明了驱动的分组,必须指定....,本人更推荐使用此方式安装,此种方式的原理同样是向注册表中写出子健,但同时具备有启动与关闭驱动的功能,比INF安装更灵活易于使用,完整代码如下所示; #include #include

43710

windows 驱动开发入门——驱动中的数据结构

最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书——《独钓寒江 windows安全编程》 和 《windows驱动开发技术详解》。...驱动开发过程中,主要使用的C语言,虽说C中定义了许多数据类型,但是一般来说在编码上还是习惯与使用WDK的规范,虽说这个不是必须的,比如有这样一句 unsigned long ul = 0; 这个数据的大小根据不同的机器不同的编译器环境略有不同...,每个驱动都有一个唯一的驱动对象,就好像每个Win32应用程序有一个唯一的实例句柄。...设备对象 在windows平台将每个设备抽象为一个设备对象,驱动层一般通过设备对象来操作具体的设备,每个驱动可以有多个设备对象。...DriverObject: 指向所属驱动驱动对象的指针 2. NextDevice:指向下一个设备驱动的指针 3.

1.3K20

谈WDM与WDF (windows驱动开发)

开发驱动程序必以WDM为基础的,但其开发难度之大,根本不能奢望像用户模式应用程序开发那样容易。...为改善这种局面,微软推出了新的驱动程序开发环境。要预先指出的是,这不是另起炉灶改弦更张,而是以WDM为基础进行了建模和封装,显著特点是降低了开发难度。...现在WDF则将驱动程序与操作系统内核之间进行了分离,驱动程序与操作系统交互工作交给框架内封装的方法(函数)完成,这样驱动开发者只需专注处理硬件的行为即可。...Windows Device Kit (WDK): 把测试套件(test suites)集成进来,DDK 就成了WDK。WDK是针对微软操作系统系列的驱动器集成开发系统。...6、 虽然经过封装并引入基于对象的技术,所开发驱动程序在执行效率上并不比原来逊色。 WDF和WDM的关系有点类似于MFC和Windows SDK的关系。

2.9K30

v4l2驱动框架(Windows驱动开发技术详解)

下面介绍一下V4L2整体情况: V4L2提供一套数据结构和底层V4L2驱动接口规范供Linux下的视频设备程序使用,主要是一系列回调函数,如设置摄像头频率,帧率,视频压缩格式和图像参数等,还可用于其他多媒体开发...videodev2.h文件中,在采集图像过程中,就是通过操作这些数据结构来获得最终图像数据,Linux系统对V4L2的支持是从Linux 2.5.x版本开始的,它可在内核编译阶段配置,或后期安装,默认情况下都有此开发接口...,上例中用到 VIDIOC_ENUM_FMT:获取当前驱动支持的视频格式 VIDIOC_S_FMT:设置当前驱动的视频捕获格式 VIDIOC_G_FMT:读取当前驱动的视频捕获格式 VIDIOC_TRY_FMT...,多个缓存可用于建立FIFO,来提高视频采集的效率,控制命令为VIDIOC_REQBUFS 主要功能:请求V4L2驱动分配视频缓冲区,也就是申请V4L2视频驱动分配内存,V4L2是视频设备的驱动层,它位于内核空间...若成功,则会在V4L2驱动层分配好视频缓冲区。

2.1K10

8.3 Windows驱动开发:内核遍历文件或目录

在概述中提到过,目录遍历的核心是ZwQueryDirectoryFile()系列函数,该函数可返回给定文件句柄指定的目录中文件的各种信息,其微软官方定义如下; ZwQueryDirectoryFile是Windows...pBeginAddr); ZwClose(hFile); return TRUE; } VOID UnDriver(PDRIVER_OBJECT driver) { DbgPrint("驱动卸载成功...\\C:\\Windows"); MyQueryFileAndFileFolder(ustrQueryFile); DbgPrint("驱动加载成功 \n"); Driver-...>DriverUnload = UnDriver; return STATUS_SUCCESS; } 编译如上驱动程序并运行,则会输出C:\\Windows目录下的所有文件和目录,以及创建时间和修改时间...你是否会觉得很失望,为什么不是递归枚举,这里为大家解释一下,通常情况下ARK工具并不会在内核层实现目录与文件的递归操作,而是将递归过程搬到了应用层,当用户点击一个新目录时,在应用层只需要拼接新的路径再次发送给驱动程序让其重新遍历一份即可

26210

2.5 Windows驱动开发:DRIVER_OBJECT对象结构

Windows内核中,每个设备驱动程序都需要一个DRIVER_OBJECT对象,该对象由系统创建并传递给驱动程序的DriverEntry函数。...驱动程序使用此对象来注册与设备对象和其他系统对象的交互,并在操作系统需要与驱动程序进行交互时使用此对象。...本章将探索驱动程序开发的基础部分,了解驱动对象DRIVER_OBJECT结构体的定义,一般来说驱动程序DriverEntry入口处都会存在这样一个驱动对象,该对象内所包含的就是当前所加载驱动自身的一些详细参数...,例如驱动大小,驱动标志,驱动名,驱动节等等,每一个驱动程序都会存在这样的一个结构,首先来看一下微软对其的定义;typedef struct _DRIVER_OBJECT { CSHORT Type...pListEntry->Flink都将会指向下一个驱动对象,通过不断地循环CONTAINING_RECORD解析,即可输出当前系统内所有驱动的详细信息。

21960

2.5 Windows驱动开发:DRIVER_OBJECT对象结构

Windows内核中,每个设备驱动程序都需要一个DRIVER_OBJECT对象,该对象由系统创建并传递给驱动程序的DriverEntry函数。...驱动程序使用此对象来注册与设备对象和其他系统对象的交互,并在操作系统需要与驱动程序进行交互时使用此对象。...本章将探索驱动程序开发的基础部分,了解驱动对象DRIVER_OBJECT结构体的定义,一般来说驱动程序DriverEntry入口处都会存在这样一个驱动对象,该对象内所包含的就是当前所加载驱动自身的一些详细参数...,例如驱动大小,驱动标志,驱动名,驱动节等等,每一个驱动程序都会存在这样的一个结构,首先来看一下微软对其的定义; typedef struct _DRIVER_OBJECT { CSHORT Type...pListEntry->Flink都将会指向下一个驱动对象,通过不断地循环CONTAINING_RECORD解析,即可输出当前系统内所有驱动的详细信息。

13330

6.2 Windows驱动开发:内核枚举SSSDT表基址

Windows内核中,SSSDT(System Service Shadow Descriptor Table)是SSDT(System Service Descriptor Table)的一种变种,...其主要用途是提供Windows系统对系统服务调用的阴影拷贝。...SSSDT表存储了系统调用的函数地址,类似于SSDT表,但在某些情况下,Windows系统会使用SSSDT表来对系统服务进行引导和调用。 SSSDT表的存在是为了加强系统的安全性和稳定性。...SSDT表的枚举功能,本章继续实现对SSSDT表的枚举,ShadowSSDT中文名影子系统服务描述表,SSSDT其主要的作用是管理系统中的图形化界面,其Win32子系统的内核实现是Win32k.sys驱动...NumberOfServices); return pWin32k->NumberOfServices; } VOID UnDriver(PDRIVER_OBJECT driver) { DbgPrint(("驱动程序卸载成功

15710
领券