
windows驱动程序WDM
文章平均质量分 57
windows驱动程序WDM
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
毛毛虫的爹
这个作者很懒,什么都没留下…
展开
-
测试模式
bcdedit.exe /set nointegritychecks onbcdedit.exe /set nointegritychecks offbcdedit /set testsigning onbcdedit /set testsigning off原创 2024-02-23 11:44:10 · 142 阅读 · 0 评论 -
WDF驱动中访问 PCI 设备配置空间
Windows XP 和 Windows Server 2003 及更高版本的操作系统可以独占控制PCI 本地总线规范定义的配置空间标头以及功能链接列表中的所有功能。驱动程序不得尝试修改这些寄存器。但是,驱动程序可以使用 IRP _ MN _ 写入 _ 配置请求或总线接口标准的SetBusData方法, _ 将不属于该标头的配置空间写入到供应商定义的功能列表 _ 。驱动程序还可以使用 IRP _ MN _ read _ CONFIG 请求或总线接口标准的GetBusData方法读取 _ ...原创 2021-01-19 09:54:06 · 1356 阅读 · 0 评论 -
驱动程序(1) win10下Visual Studio 2017的安装以及双机调试搭建
前言:毕业上班以来,现在这个项目比较缺一个做windows下驱动程序开发的,所以本人就负责这方面的工作。之前没有接触过,完全萌新,全靠一本武安河编著的《Windows设备驱动程序WDF开发》和各路网上大神们的博客。现在把这段时间来的一些经历和体会写下来,如有错误还请各位请点轻喷 QAQ主要的一些资料来源和引用:[1] 武安河《Windows设备驱动程序WDF开发》[2] 微软官网Windowsqu驱动程序入门https://msdn.microsoft.com/zh-cn/library/windo原创 2021-01-13 16:37:01 · 832 阅读 · 0 评论 -
用VS2019写驱动报木马的解决办法
原创 2021-01-09 08:24:05 · 1378 阅读 · 0 评论 -
驱动程序与应用程序之间共享内存
共享的方式有很多,我们在应用层编程时,也经常需要进程之间共享内存。可以用过SendMessage,文件映射等。也可以用dll来进行共享。用dll进行共享,大家应该知道#pragma data()这个宏,在这个宏中声明的变量就可以共享了,是系统级全局变量,但是必须进程之间引用的是同一个dll文件。 在驱动进行内存的共享,也可以通过使用文件映射的方式来实现。这个在后续中文章中描述。 我在这里就说一种很简单的方式来实现内存的共享。可以分成一个步骤来实现。 1. 我们在驱动中首先分配一...原创 2021-01-11 10:46:25 · 869 阅读 · 0 评论 -
inf安装驱动方式---win10下使用VS2015+WDK10生成win7 X64的设备驱动的过程
本文主要介绍“win10下使用VS2015+WDK10生成win7 X64的设备驱动”的过程,并在win7 X64下安装的过程。具体如下:1,在win10下,使用VS2015+WDK10新建一个KMDF工程,命名为“MyKMDF”,注意要选择那个“非empty”的KDMF,它会生成如下几个文件:2,查看它的“public.h”文件,有如下的GUID定义:[cpp]view plaincopy// //DefineanInterfaceGuidsothat...原创 2021-01-06 11:08:11 · 1083 阅读 · 0 评论 -
64位驱动签名工具64Signer
微软对于自Vista开始的64位OS有新的数字签名策略,即所有内核驱动都必须是经过可信机构签发过数字证书的,否则系统拒绝加载。此策略的目的是加强系统安全防护,使得一干惯于偷偷摸摸、底细不清的内核模块无法在系统中容身。但它却也给正经的内核开发人员带去一个麻烦:开发过程中会不断生成新的驱动镜像文件,开发者不可能将每一个内部版本都拿去申请数字签名,不仅太麻烦,而且会大大延长开发周期。微软当然也考虑到了这一点,它提供了一个可以禁止签名检验的开机启动项。要运用此启动项,用户必须在启动电脑时,及时在键盘上按下F8键原创 2021-01-06 08:41:45 · 2417 阅读 · 1 评论 -
wdf中的两个宏WDF_DECLARE_CONTEXT_TYPE & WDF_DECLARE_CONTEXT_TYPE_WITH_NAME
WDF_DECLARE_CONTEXT_TYPEWDF_DECLARE_CONTEXT_TYPE宏为指定对象创建一个访问上下文空间方法的名字。 void WDF_DECLARE_CONTEXT_TYPE( _contexttype ); 参数_contexttype驱动定义结构的符号名。这个接口必须描述对象上下文空间。示例以下代码示例定义了一个作为请求对象上下文结构(MY_REQUEST_CONTEXT)。注册这个结构体,然后调用WDF_DECLARE_CO原创 2021-01-05 10:21:22 · 631 阅读 · 0 评论 -
设备扩展(DEVICE_EXTENSION)
设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构。可以用它来保存与特定设备关联的信息。设备扩展其实只是一个未分页的池,由驱动开发者来定义它的大小和内容。并由I/O管理器自动把它分配给设备对象,即设备对象的PVOID DeviceExtension字段。由于此结构是驱动开发者自定义的,所以必须要让系统知道需要给此结构预留多少空间,因此要把设备扩展结构的大小作为参数传递给IoCreateDevice函数。I/O管理器的IoCreateDevice函数将为设备对象和设备扩展对象.原创 2021-01-05 09:51:08 · 1754 阅读 · 0 评论 -
Windows驱动开发错误:MSB8040 此项目需要缓解了Sprctre漏洞的库
VS2019编译WDK驱动时,出现如下错误:MSB8040 此项目需要缓解了Sprctre漏洞的库。从Visual Studio安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构哦安装它们。了解详细信息:http://aka.ms/Ofhn4c。-----------------------------------------------------------------------------------------------------------------------..原创 2021-01-05 09:23:11 · 2480 阅读 · 0 评论 -
WDF 驱动版本及系统支持情况
原创 2019-09-05 14:38:46 · 741 阅读 · 0 评论 -
Windows驱动通过inf文件生成cat文件步骤
编写Windows驱动程序,最后一步就是打包和安装。Windows 7 64位系统以上的版本,如果没有对cat或者sys文件进行数字签名,驱动安装会出现问题,或者驱动使用过程也会出现异常。为了兼容性考虑,我们需要生成cat文件。本人环境win7 x64位,安装了WinDDK。WinDDK提供了 Inf2Cat.exe 工具,该工具在C:\WinDDK\7600.16385.1\...原创 2019-12-11 08:12:03 · 3684 阅读 · 1 评论 -
windows驱动程序wdf--KMDF获取应用程序数据缓冲区地址
有3种常用方式:METHOD_BUFFERED METHOD_IN_DIRECT METHOD_OUT_DIRECT 还有METHOD_NEITHER,《windows设备驱动WDF开发》描述为:源自win 9x的VxD的模式,不建议读者掌握。这个就不管了。 METHOD_BUFFERED:无论读和写都对应同一缓冲区 METHOD_IN_DIRECT\ METHOD_OUT_DIRECT原创 2015-01-04 16:19:07 · 2655 阅读 · 0 评论 -
PCI9054 学习小结
PCI的基本协议这里就不介绍了,因为一般的芯片协议都是集成好的,我只需要大体了解就行,不需要做芯片,我感觉就不需要太了解协议。 这里讲解是基于PLX 的9054(9052)芯片为基础的,本人只是入门,望批评指正。一、地址映射与数据传输上图中间部分是9054的内部结构图,9054实际上充当了一个“桥”的作用,即所谓的“桥片技术”。9054的作用其实是把LOCAL总线端管理的一片地址,和PCI总线端管转载 2016-06-28 10:00:02 · 4106 阅读 · 0 评论 -
USB设备驱动概述
USB设备驱动· 17.1 USB总线协议· 17.1.1 USB设备简介· 17.1.2 USB连接拓扑结构· 17.1.3 USB通信的流程· 17.1.4 USB四种传输模式· 17.2.1 观察USB设备的工具· 17.2.2 USB设备请求· 17.2.3 设备描述符· 17.2.4 配置描述符· 17.2.5 接口描述符· 17.2.6 端点描述符· 17.3.原创 2015-06-10 18:15:34 · 3984 阅读 · 0 评论 -
USB转串口驱动代码分析
1、USB插入时,创建设备[plain] view plaincopyDriverObject->DriverExtension->AddDevice = USB2COM_PnPAddDevice; 步一、调用USB2COM_CreateDeviceObject创建功能设备对象(FDO)(1) IoCreateDevice系统API的原理为:[plain] view plaincopyNTKER转载 2015-06-10 18:16:49 · 4256 阅读 · 0 评论 -
WINDOWS的错误代码对应的故障
WINDOWS的错误代码对应的故障 0000 操作已成功完成。 0001 错误的函数。 0002 系统找不到指定的文件。 0003 系统找不到指定的路径。 0004 系统无法打开文件。 0005 拒绝访问。 0006 句柄无效。 0007 存储区控制块已损坏。 0008 可用的存储区不足,无法执行该命令。 0009 存储区控制块地址无效。 0010 环境原创 2015-04-15 15:15:30 · 2874 阅读 · 0 评论 -
利用Windows性能计数器(PerformanceCounter)监控
一、概述性能监视,是Windows NT提供的一种系统功能。Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器。性能对象,就是被监视的对象,典型例子有Processor、Process、Memory、TCP/UDP/IP/ICMP、PhysicalDisk等。计数器通常提供操作系统、应用程序、服务、驱动程序等的性能相关信息,原创 2015-03-10 10:44:35 · 7655 阅读 · 0 评论 -
检测dll是32/64位 ?
检测dll是32/64位 ?void CCheck32Or64Dlg::OnButton2() { CString fileName = ""; CFileDialog *fileDialog = new CFileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,"Dll Files(*.dll)|*.dll|Exe Files(*.exe)|*.exe||",原创 2015-03-09 08:18:53 · 1765 阅读 · 0 评论 -
DriverStudio开发PCI设备DMA数据传输
DriverWizard向导可以创建基本的wDM驱动程序框架,包括总线类型,地址空间,中断源,DMA资源,以及IOCTL(i/o控制代码)的定义等等。详细情况可参看DriverStudio的帮助文档,以下主要介绍如何用DriverWorks编写DMA方式的驱动程序。 DriverWorks关于DMA操作。封装了三个类:KDmaAdapter, KDmaTransfer和KCommonCma转载 2016-07-05 11:03:18 · 3819 阅读 · 0 评论 -
plx驱动升级
我公司生产的CPCI串口卡,采用了plx9030桥芯片,最要用的PLX4.4 SDK开发包,封装的驱动和DLL API函数库,现在用户在win7上使用发现安装了驱动后,系统会蓝屏、重启等问题,现在把PLXSDK7.20修改适合当前的使用。1. sys修改:2. 安装 WIN7DDK3. 编译驱动,生成的驱动可以再xp下运行4. 修改API高版本的API和数据结构都做了大量修改// List of原创 2017-07-14 15:18:48 · 2424 阅读 · 0 评论 -
如何关闭WIN7自动配置 IPV4 地址 169.254
方法一:1、以管理员身份运行cmd.exe。2、输入:netsh winsock reset catalog 按回车。3、输入:netsh int ip reset reset.log 按回车。4、重新启动电脑,然后根据个人所需填写ip地址、子网掩码、网关,确定即可。方法二:取消IPv6:1、以管理员身份打开CMD运行以下命令关闭IPV6的隧道。nets...原创 2019-04-12 08:49:20 · 25904 阅读 · 1 评论 -
VS2012 ddk驱动编译与虚拟机联机调试设置(vs调试驱动)
一.安装WindowsDriverKit81首先在计算机上安装VS2012(12很容易安装,安装步骤略),然后到官网上下载WindowsDriverKit8下载地址:http://msdn.microsoft.com/zh-cn/windows/hardware/hh852362/下载完毕点击进行安装。安装模式有两种,一种是在线直接安装,一种是下载安装包到本地,之后再进行安...原创 2019-05-27 14:52:20 · 738 阅读 · 1 评论 -
windows驱动环境配置vs2010+wdk7600
1.安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2.新建VC 控制台项目(选择为空项目)3.新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)输入名称(driver)点击确定就可以了,其他的不要动哦!完成后的效果!点击确定按钮之后呈现出来的画面鼠标右击新建的driver属性,会弹出...原创 2019-05-27 16:04:53 · 1381 阅读 · 0 评论 -
VS2012+wdk7600下开发驱动-配置环境
我的环境:win7x64+wdk7.6+vs2012速成版安装流程:先安装vs2012或其他微软的ide,再安装wdk7.6的所有内容安装好wdk之后,先简单测试一下安装是否正常。首先打开wdk的任意一个编译器,例如我打开了windows xp 目录下的x86 free编译器在wdk安装目录下的src文件夹下有很多源码实例,很有参考价值,选择一个实例,进入到这个实例所在的目录,例如...转载 2019-05-28 15:03:42 · 1093 阅读 · 1 评论 -
Windows驱动开发TraceView之日志打印
《Windows驱动开发技术详解》一书中,介绍了一种“Windows驱动程序日志打印和查看的方法”,具体就是:在需要打印日志的地方,调用“KdPrint”函数,该函数类似标准C的printf(print file)函数。然后用“DebugView.exe”软件查看日志。一、引入事实上,微软也提供了一个日志打印和日志查看机制,它可以查看指定的驱动文件的日志,并根据“Level...原创 2019-05-29 10:27:02 · 2571 阅读 · 0 评论 -
CTL_CODE 宏 详解
CTL_CODE宏CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:DeviceType(设备类型,高16位(16-31位)),Function(功能2-13 位),Method(I/O访问内存使用方式),Access(访问限制,14-15位)。这个宏创建一个独特的系统I/O(输入输出)控制代码(IOCTL)。#define...原创 2019-06-11 08:44:25 · 2066 阅读 · 0 评论 -
RTP 协议
实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身具原创 2013-08-16 10:53:07 · 1988 阅读 · 0 评论 -
windows驱动程序wdf--KMDF大致框架
继WDM后微软出了WDF,封装了WDM中的一些基本代码逻辑。本人菜鸟,也不知道本质上有何区别,只觉得是多了Wdf开头的函数,基本的编程框架上有点出入。KMDF是WDF的内核级部分,为了理清KMDF的结构,又觉得内核编程很复杂,HelloWorld类型的程序实在说明不了什么 修改一下《windows设备驱动WDF开发》的CharSample,查了WDK帮助文档加上注释以帮助自己理解KMDF的大致运原创 2015-01-04 16:18:00 · 6027 阅读 · 0 评论 -
PCI-E配置MSI中断流程解析
在调试PCI-E的MSI中断前,需要先保证将传统中断调通,然后再调试这个。MSI中断究其本质,就是一个存储器读写事件。将MSI Address设置为内存中的某个地址(可以为64位),产生MSI中断时,中断源会在MSI Address所在的地址写入MSI Data。也就是说,如果有四条MSI中断线,就会依次写入Data、Data+1、Data+2、Data+3在内存中,依次来区分中断源设备。设备端的原创 2015-01-04 17:30:07 · 23284 阅读 · 3 评论 -
MFC下用sdl 显示bmp、rgb、yuv
#include "SDL.h"#ifdef TEST_VGA16 /* Define this if you want to test VGA 16-color video modes */#define NUM_COLORS 16#else#define NUM_COLORS 256#endifSDL_Surface *screen;void display_b原创 2013-08-16 18:11:06 · 4181 阅读 · 0 评论 -
实战DeviceIoControl 之五:列举已安装的存储设备
Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了。如果事先并不能确切知道设备名,如何去访问设备呢?A 访问设备必须用设备句柄,而得到设备句柄必须知道设备路径,这个套路以你我之力是改变不了的。每个设备都有它所属类型的GUID,我们顺着这个GUID就能获得设备路径。GUID是同类或同种设备的全球唯一原创 2013-09-25 14:48:14 · 1754 阅读 · 0 评论 -
实战DeviceIoControl 之四:获取硬盘的详细信息
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀?A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数。获取磁盘出厂信息的I/O控制码,微软在VC/MFC环境中没有开放,在DDK中可以发现一些线索。早先,Lynn McGui原创 2013-09-25 14:48:23 · 1962 阅读 · 0 评论 -
过滤驱动加密文件(代码)
摘要: 我想做一个unlocker一样的程序,不管这个文件有没有被使用,先实现删除它。在查资料过程中,就知道了如果不访问磁盘扇区的话,除非写驱动才能做到。奈何时间有限,工作匆忙,一直没有完成。而且忽视了更简便的方法——在别的路径下把修改后的OCX控件重新注册一下就可以了。 这些都不要说了,这段闲暇时间,我写了一个过滤加密,就这么简单。在DDK的示例Sfilter基础上改的。原创 2013-09-25 14:40:30 · 2160 阅读 · 1 评论 -
在驱动和应用程序间共享内存
在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是: l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存) l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序。(驱动程序分配共享内存) 使用IOCTL共享Buf原创 2013-09-25 14:37:06 · 2198 阅读 · 0 评论 -
实战DeviceIoControl 之三:制作磁盘镜像文件
Q DOS命令DISKCOPY给我很深的印象,现在也有许多“克隆”软件,可以对磁盘进行全盘复制。我想,要制作磁盘镜像文件,DeviceIoControl应该很有用武之地吧?A 是的。这里举一个制作软盘镜像文件,功能类似于“DISKCOPY”的例子。本例实现其功能的核心代码如下: // 打开磁盘HANDLE OpenDisk(LPCTSTR filename){ H原创 2013-09-25 14:47:34 · 1818 阅读 · 0 评论 -
用DDK开发的9054驱动 .
和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧。因为,很多PCI的例子都是对S5933,就连微软出版的《Programming the Microsoft Windows Driver Model》都提供了一个完整的S5933的例子。在这篇有关DDK的开发论文里。我将分两个例子来构建PLX9054的驱动,第一个,是对《Windows2000 设备驱动程序设原创 2013-09-14 17:24:51 · 2328 阅读 · 0 评论 -
使用DirectDraw直接显示YUV视频数据
最近在编写一个进行视频播放的ActiveX控件,工作已经接近尾声,现将其中显示YUV数据的使用DirectDraw的一些经验总结如下:(解码部分不是我编写的,我负责从网络接收数据,将数据传给解码器,并将解码得到的YUV数据进行显示,最初在显示部分我是先将YUV数据转换为RGB数据,再以位图的形式显示到屏幕上,但发现CPU占用率比较高,后来改用DirectDraw直接显示YUV数据)1.在Dir原创 2013-08-15 11:44:16 · 4470 阅读 · 1 评论 -
在windows XP系统下编译和使用ffmpeg
在windows XP系统下编译和使用ffmpeg原创 2013-08-12 11:12:28 · 3350 阅读 · 0 评论 -
如何在WDM中使用xp系统的DMA用来处理数据
最近做了一款pci的视频采集卡(H264压缩),由于数据传输量比较大,所有想采用dma来传输数据,刚开始感觉很简单,后来感觉还是困难重重。原创 2013-07-26 14:57:15 · 2241 阅读 · 0 评论