Windows驱动开发
文章平均质量分 70
bcbobo21cn
具有多年开发经验;
展开
-
windbg查看SSDT表
SSDT,System Services Descriptor Table,系统服务描述符表。见此 https://blog.csdn.net/bcbobo21cn/article/details/52083557这个表就是一个把ring3的Win32 API和ring0的内核函数联系起来。SSDT包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。SSDT定义为下面结构体; typedef struct _SYSTEM_SERVICE_T...转载 2020-09-05 16:38:10 · 1222 阅读 · 0 评论 -
了解Windows WDDM 驱动程序
了解Windows WDDM 驱动程序;转载 2023-02-26 00:35:26 · 935 阅读 · 0 评论 -
内核级进程遍历
内核级进程遍历;转载 2023-01-22 02:12:42 · 368 阅读 · 0 评论 -
DevCon工具基本使用
根据WDK文档,DevCon工具的基本功能如下;DevCon is a command-line tool that performs the following device management functions on local and remote computers;DevCon是一个命令行工具,在本地或远程计算机上执行设备管理功能;Display. 显示Search. 搜索Change. 更改 Enable a device 使能设备 Disable a d...原创 2021-10-10 00:06:44 · 2244 阅读 · 0 评论 -
使用WDK的ChkINF工具验证INF文件语法
Windows 使用 INF 文件安装驱动程序。WDK开发文档中有一些工具用于驱动程序开发过程中。下面来看一下ChkINF。WDK文档的介绍如下;ChkINFThe INF File Syntax Checker, or ChkINF, is a set of Perl scripts and support applications that verify the structure and syntax of setup information (INF) files for driver原创 2021-10-08 00:47:45 · 487 阅读 · 0 评论 -
UMDF驱动开发入门
先安装驱动开发环境;VS2012+WDK 8.0;11原创 2021-06-10 23:26:22 · 1034 阅读 · 0 评论 -
VS2012+WDK8.0搭建WDF驱动开发环境
根据目前资料,如果要调试ReactOS源码,有很多工作要做;安装RosBE,下载ReactOS源码,生成VS工程,由源码生成镜像文件,等步骤;然后VS还要搭建驱动开发环境;然后由虚拟机装载运行j原创 2021-05-29 21:35:31 · 507 阅读 · 0 评论 -
Windows过滤驱动程序的概念
过滤,filter,过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。 举个例子: 实时监控的反病毒程序。任何高层软件或者Windows的文件系统都没有考虑过应该什么时候去检查文件中是否含有某个病毒的特征 码,也不应该要求某个软件或者Windows的文件系统去考虑这些;反病毒程序需要在不改变文件系统的上层和下层接口的情况下,在中间加入一个过滤 层,这样就可以在上层软件读取文件、下层驱动提供...转载 2021-04-04 07:30:08 · 1171 阅读 · 0 评论 -
编程打开Windows服务控制管理器
假设要自己编程来加载Windows下后缀为.sys的驱动程序;首先要使用OpenSCManager 函数打开Windows服务控制管理器;下面先来调用此函数看一下会不会打开成功;代码如下;#include <windows.h>#include <winsvc.h> #include <conio.h> #include <stdio.h> #define DRIVER_NAME "HelloDriver" #defin.原创 2021-02-24 02:19:39 · 615 阅读 · 0 评论 -
Windows驱动开发 - 设备对象初步学习
新建一个myhellodevice.c;代码如下;makefile和sources如前文;#include <ntddk.h> #define NTDEVICE_NAME_STRING L"\\Device\\MytestDevice"typedef struct _DEVICE_EXTENSION { PDEVICE_OBJECT Self; LIST_ENTRY EventQueueHead; // where all the us原创 2021-01-06 21:46:32 · 261 阅读 · 0 评论 -
Windows驱动开发-_驱动对象学习和内核处理字符串初步
新建一个c文件;myhellostr.c;#include <ntddk.h> VOID DriverUnload(PDRIVER_OBJECT driver){ DbgPrint("goodbye");} // DriverEntry,入口函数。相当于main。NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){ UNICODE_STRING str1;原创 2021-01-06 20:06:50 · 255 阅读 · 2 评论 -
win7下一次加载和调试sys驱动程序的过程以及捕捉到内核打印字符串函数的输出
这是以前做的;构建出一个.sys驱动以后,用工具加载,然后查看内核打印函数DbgPrint或KdPrintEx的输出;工具网上都有;有些选项要设置;加载和调试、捕获的过程;并不是每次都会加载sys驱动成功;有兴趣自己操作;捕获到了内核打印函数的输出;KCKJ ......,这字符串是内核打印函数输出的; 有兴趣自己研究;一般来讲驱动没问题不会蓝屏,有问题可能发生蓝屏;...原创 2021-01-05 09:31:33 · 577 阅读 · 0 评论 -
win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别
做一个myhello.c,#include <ntddk.h> VOID DriverUnload(PDRIVER_OBJECT driver){ DbgPrint("goodbye");} // DriverEntry,入口函数。相当于main。NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){ DbgPrint("first: Hello, my salary!");原创 2021-01-04 06:42:19 · 987 阅读 · 0 评论 -
进一步学习WDK驱动程序的SOURCES文件、WMI驱动程序的mof文件和wmidata.h头文件
Win7 WDK 自带示例,wmi,wmisamp驱动程序,未构建之前,文件如下;看一下其sources文件;TARGETNAME=WmiSampTARGETTYPE=DRIVERKMDF_VERSION_MAJOR=1INF_NAME=WmiSampNTTARGETFILE1=$(OBJ_PATH)\$(O)\$(INF_NAME).infPASS1_BINPLACE=$(NTTARGETFILE1)## List of source files to compile.原创 2021-01-03 06:33:20 · 806 阅读 · 0 评论 -
学习构建WDF驱动程序 - 初步了解SOURCE和makefile文件
接此:https://blog.csdn.net/bcbobo21cn/article/details/112074021 在WDK的示例目录下构建出一个.sys驱动程序;下面来构建自己的驱动程序;新建wdkprj目录,源码文件为mytest.c,代码见前文;新建SOURCES文件,无后缀;内容为: TARGETNAME=MYTEST TARGETPATH=OBJ TARGETTYPE=DRIVER SOURCES=mytest.c新建文件MAKE...原创 2021-01-02 07:07:28 · 918 阅读 · 0 评论 -
WDK开发环境构建驱动程序入门、Windows驱动程序的Check Build和Free Build
先安装WDK 7;驱动开发包 7;包含 build环境,调试工具,设备仿真和测试相关;路径;DSF一时不知道是什么;安装过程;完成;开始菜单出来两个一级菜单,调试工具,驱动开发包;看一下构建环境,包含Checked和Free两种;有何区别?"Checked build" 有 traces和asserts, "Free build" 没有;基本上这两者与我们传统的 "Debug" 和 "Release" 相对应;chk表示Checked,f.原创 2021-01-01 22:36:29 · 1775 阅读 · 0 评论 -
Windows 驱动开发头文件wdfchildlist.h
This header is used by wdf.此头文件用于wdf。Windows Driver Framework wdfchildlist.h contains the following programming interfaces:它包含下列编程接口;Functions函数Title Description名称 描述WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_INIT此函数初始化一个 WDF_CHILD_ADDRESS_DE...翻译 2020-12-25 22:57:00 · 333 阅读 · 0 评论 -
Windows内核HAL相关学习
1 硬件抽象层HAL硬件抽象层是系统可移植的关键。HAL是一个可加载的,内模式模块提供了windows当前运行平台的低层接口。它隐藏了与硬件相关的细节,如I/O接口,中断控制器,以及多处理器通信机制等,体系结构或者机器相关的功能。windows内部组件以及用户编写的设备驱动并不直接访问硬件,当它们需要获得与平台相关的信息时,它们可以通过调用HAL例程来保存可移植性。DDK中能找到很多有关HAL在驱动中的用法。(DDK,驱动开发包)虽然windows带了几个HAL,但是安装时只能有一个被选中,转载 2020-12-25 22:02:15 · 873 阅读 · 0 评论 -
Windows驱动开发 - 派遣函数
一 派遣函数驱动程序的主要功能是负责处理I/O请求。其中大部分I/O请求是在派遣函数中处理的。用户模式下所有对驱动程序的I/O请求,全部由操作系统转化为一个叫做IRP的数据结构,不同的IRP数据会被“派遣”到不同的派遣函数中。二 IRP与派遣函数IRP的全称是输入输出请求包。其部分结构如下:typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _IRP { CSHORT Type; USHO...转载 2020-06-06 00:10:12 · 440 阅读 · 0 评论 -
Win 驱动编程 - 内核里操作注册表
一 概述 RING0 操作注册表和 RING3 的区别也不大,同样是“获得句柄->执行操作->关闭句柄”的模式,同样也只能使用内核 API 不能使用 WIN32API。不过内核里有一套 RTL 函数,把 Zw系列的注册表函数进行了封装。接下来说说注册表的本质。注册表其实是文件,它存储在 c:\windows\system32\config这个目录下(打开目录,看到那几个带锁图标的文件就是。为什么带锁?因为被 SYSTEM 进程独占访问了)。注册表文件被称为 HIVE 文件,此格..转载 2020-06-05 22:38:19 · 556 阅读 · 0 评论 -
Windows驱动开发 - 内核模式下的字符串操作
1 ASCII字符串和宽字符串 char型,记录ansi字符集。每个字符一个字节。以0标志结束。在KdPrint中用%s输出。 宽字符型,wchar_t,描述unicode字符集的字符串,每个字符两个字节,以0标志结束。通过L来体现。在KdPrint中用%S输出。CHAR *string = "Hello";WCHAR *string2 = L"hello";KdPrint("%s\n", string);KdPrint("%S\n", string2);2 ANSI_...转载 2020-06-05 20:32:07 · 569 阅读 · 0 评论