NT式驱动加载器

驱动开发(3)使用SCM加载NT驱动(用应用程序加载驱动) 在上一篇中,我简单介绍编写了一个NT驱动空壳,这一篇中,将介绍如何自己编写一个驱动程序加载器,即使用编程的方法加载驱动,而不是使用工具。 我在上一篇中也提到了,驱动程序是通过服务加载的,我以前写过SCM(服务控制管理器)API的文章,详细介绍各函数的具体用法,详见: [Win32] SCManager 服务控制管理器API(1):http://blog.youkuaiyun.com/zuishi 阅读详情

引言


设备驱动程序的动态加载主要是由服务控制管理程序(Service Control Manager,SCM)系统组件完成,SCM组件可以提供许多服务,如,启动、停止和控制服务。
编写加载驱动程序,主要是操作SCM组件。
一般,操作SCM组件的相关API函数有如下几个:
SC_HANDLE WINAPI OpenSCManager(
  __in_opt  LPCTSTR lpMachineName,//计算机名称
  __in_opt  LPCTSTR lpDatabaseName,//SCM数据库名称
  __in      DWORD dwDesiredAccess//使用权限
);

BOOL WINAPI CloseServiceHandle(
  __in  SC_HANDLE hSCObject //要关闭的SCM句柄
);

SC_HANDLE WINAPI CreateService(
  __in       SC_HANDLE hSCManager, //SCM管理器的句柄
  __in       LPCTSTR lpServiceName, //服务名称
  __in_opt   LPCTSTR lpDisplayName, //服务显示出的名称
  __in       DWORD dwDesiredAccess, //打开权限
  __in       DWORD dwServiceType, //服务类型
  __in       DWORD dwStartType, //打开服务的时间
  __in       DWORD dwErrorControl, //关于错误处理的代码
  __in_opt   LPCTSTR lpBinaryPathName, //二进制文件的代码
  __in_opt   LPCTSTR lpLoadOrderGroup, //用什么用户组开发服务
  __out_opt  LPDWORD lpdwTagId, //输出验证标签
  __in_opt   LPCTSTR lpDependencies, //所依赖的服务名称
  __in_opt   LPCTSTR lpServiceStartName,//用户账户名称
  __in_opt   LPCTSTR lpPassword //用户口令
);

SC_HANDLE WINAPI OpenService(
  __in  SC_HANDLE hSCManager, //SCM数据库的句柄
  __in  LPCTSTR lpServiceName, //服务名称
  __in  DWORD dwDesiredAccess //访问权限
);

BOOL WINAPI ControlService(
  __in   SC_HANDLE hService, //服务的句柄
  __in   DWORD dwControl, //控制码
  __out  LPSERVICE_STATUS lpServiceStatus//返回状态码
); 

文件拖拽

要使对话框支持文件拖拽功能,只需3步即可实现
1> 对话框模版的 Accept Files 属性设置成 True
2> 响应主对话框类的 WM_DROPFILES 消息

3> 添加如下示例代码:

	TCHAR szPath[MAX_
Windows驱动开发之HelloWorld Windows驱动开发衔接应用层与内核层,核心区分ring3(用户态,MFC,Win32等应用程序运行层,权限受限且受系统严格管控)与ring0(内核态,驱动程序运行层,拥有系统最高权限,可直接访问硬件与内存)。2.安装驱动开发SDK:打开这个地址下载SDK安装包https://learn.microsoft.com/en-us/windows/apps/windows-sdk/downloads。UWDF:面向用户模式的WDF子框架,适用于摄像头,USB等外设驱动开发,需掌握COM组件相关知识。 阅读详情

相关推荐

vc 简单加载驱动源码

简单易懂..还给加了注释...为了我能下载更多的东西学习..只有收大家10分了...看不懂的可以来找我...3967048

驱动加载工具(附源码)

【源码免费下载链接】:https://renmaiwang.cn/s/8okgv 软件开发项目"驱动加载工具(附源码)"旨在模仿知名驱动加载工具InstDvr的架构进行优化设计。该功能模块的主要作用是辅助开发者在编写驱动程序时更加便捷地完成程序加载与调试任务。基于Win API SDK(Windows应用程序接口软件开发工具包)和C语言实现,该工具通过编译好的可执行文件直接插入系统内存空间来达到驱动加载的目的。 采用C语言进行编程的原因在于其对底层系统的强大交互能力,特别适合编写驱动程序。开发环境选用Visual C++ 6.0这一经典的微软IDE,虽然已逐渐被淘汰,但因其在相关教程和学习资源中仍被广泛使用,因此适合作为初学者实践开发的平台。 本压缩包中的源代码包含完整的项目文件结构,涵盖头文件、源码文件等。具体包括: 1. LoadSys.aps:Visual C++ 6.0工程预编译头文件。 2. LoadSys.c:C语言实现驱动加载逻辑的核心代码文件。 3. LoadSys.dsp和LoadSys.dsw:相关项目配置信息的IDE工作区文件。 4. resource.h:定义系统资源标识符的头文件,包含菜单、对话框等对象描述。 5. LoadSys.ico:程序图标文件。 6. LoadSys.opt:项目编译选项设置文件。 7. LoadSys.rc:非代码资源脚本文件,定义字符串、菜单等内容。 8. 说明.txt:工具使用说明文档。 9. Release:编译完成后生成的可执行文件目录。 通过解析这些相关组件,开发者可以深入了解驱动加载工具的构建与运行流程。源码的开放性特征使其具备高度灵活性,用户可根据实际需求对功能进行调整和扩展,从而获得更加贴合自身开发需求的应用工具。

windows平台驱动加载工具及源码

windows平台驱动加载工具及源码,仅供像我一样的自学者学习参考。

易语言SYS驱动文件安装加载启动工具源码

易语言SYS驱动文件安装加载启动工具源码。@易语言入门教程。

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3426

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography

CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概

weixin_48654804的博客 2279

学术版GPT安装教程——保姆版(附带原生GPT注册教程)

学术版GPT图文安装教程

DBenD的博客 2万+

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 637

视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop

Ps教程之神奇的Photoshop自动化技术 10年以上IT行业工作经验、三...

weixin_28812857的博客 1474

CVE-2021-22205 GITLAB 未授权 RCE 漏洞

简介 GitLab是由GitLab Inc.开发的一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用。 漏洞利用 上工具 python3 poc import sys import requests from bs4 import BeautifulSoup requests.packages.urllib3.disable_warnings() def .

qq_32445755的博客 885

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3534

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 通过修改CR0寄存器绕过SSDT驱动保护
下一篇: Ring3转入Ring0跟踪
曾是土木人
博客等级 码龄15年 67粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值