0

0

vc++ 加载,卸载自己的驱动程序

php中文网

php中文网

发布时间:2016-06-07 15:05:59

|

1870人浏览过

|

来源于php中文网

原创

用vc加载 自己 的 驱动 程序 主要分为以下几个步骤: 1、加载 驱动 服务 主要要用到以下几个函数 SC_HANDLE WINAPI OpenSCManagerA( __in_optLPCSTRlpMachineName, __in_optLPCSTRlpDatabaseName, __inDWORDdwDesiredAccess ); //创建 驱动 服务 SC_HANDLE WI

用vc++加载自己驱动程序主要分为以下几个步骤:

1、加载驱动服务

主要要用到以下几个函数

  1. SC_HANDLE
  2. WINAPI
  3. OpenSCManagerA(
  4.     __in_opt        LPCSTR                lpMachineName,
  5.     __in_opt        LPCSTR                lpDatabaseName,
  6.     __in            DWORD                   dwDesiredAccess
  7.     );
  8. //创建驱动服务
  9. SC_HANDLE
  10. WINAPI
  11. CreateServiceA(
  12.     __in        SC_HANDLE    hSCManager,
  13.     __in        LPCSTR     lpServiceName,
  14.     __in_opt    LPCSTR     lpDisplayName,
  15.     __in        DWORD        dwDesiredAccess,
  16.     __in        DWORD        dwServiceType,
  17.     __in        DWORD        dwStartType,
  18.     __in        DWORD        dwErrorControl,
  19.     __in_opt    LPCSTR     lpBinaryPathName,
  20.     __in_opt    LPCSTR     lpLoadOrderGroup,
  21.     __out_opt   LPDWORD      lpdwTagId,
  22.     __in_opt    LPCSTR     lpDependencies,
  23.     __in_opt    LPCSTR     lpServiceStartName,
  24.     __in_opt    LPCSTR     lpPassword
  25.     );
  26. //打开驱动服务
  27. SC_HANDLE
  28. WINAPI
  29. OpenServiceA(
  30.     __in            SC_HANDLE               hSCManager,
  31.     __in            LPCSTR                lpServiceName,
  32.     __in            DWORD                   dwDesiredAccess
  33.     );
  34. //启动驱动服务
  35. BOOL
  36. WINAPI
  37. StartServiceA(
  38.     __in            SC_HANDLE            hService,
  39.     __in            DWORD                dwNumServiceArgs,
  40.     __in_ecount_opt(dwNumServiceArgs)       
  41.                     LPCSTR             *lpServiceArgVectors
  42.     );

首先调用OpenSCManager函数 建立一个连接到服务控制管理器,然后再调用CreateService创建服务最后调用OpenService和StartService分别打开服务和启动服务。

当服务启动后就可以用CreateFile函数访问驱动程序了代码如下:

泪无痕工作室网站后台管理系统
泪无痕工作室网站后台管理系统

新闻,案例,下载及前台页全部生成HTML,属于全自动化、全智能的在线方式管理、维护、更新的网站管理系统功能说明:1.系统管理:管理员管理,可以新增管理员及修改管理员密码;添加管理员。并可以分配权限;生成前台页的HTML2.新闻管理:可以添加、删除、修改新闻,并批量生成所有记录的静态页面;3.案例管理:可以添加、删除、修改案例,并批量生成所有记录的静态页面;4.下载管理:可以添加、删除、修改下载程序

下载

立即学习C++免费学习笔记(深入)”;

1.启动驱动服务程序

  1. //启动驱动服务
  2. void LoadDriver()
  3. {
  4.     SC_HANDLE    hSCManager = NULL;
  5.     SC_HANDLE    hService = NULL;
  6.     SC_HANDLE    hService1 = NULL;
  7.     hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  8.     hService = CreateService(hSCManager,
  9.         MYWINRIN0,  //这是驱动服务名称 这里为"MyWinRing0" 可以自定义任意名称
  10.         MYWINRIN0,  //这是驱动服务显示名称,可以自定义任意名称,这里我选择和上面一样
  11.         SERVICE_ALL_ACCESS,
  12.         SERVICE_KERNEL_DRIVER,
  13.         SERVICE_DEMAND_START,
  14.         SERVICE_ERROR_NORMAL,
  15.         gDriverPath,//驱动存放的路径,这里和应用程序同目录
  16.         NULL,
  17.         NULL,
  18.         NULL,
  19.         NULL,
  20.         NULL
  21.         );
  22.     CloseServiceHandle(hService);//上面创建成功后就关闭掉这个句柄
  23.     hService1 = OpenService(hSCManager, MYWINRIN0, SERVICE_ALL_ACCESS);//打开上面创建的服务,名字为"MyWinRing0"
  24.     int result=StartService(hService1, 0, NULL);//启动服务
  25.     CloseServiceHandle(hSCManager);
  26.     CloseServiceHandle(hService1);
  27. }
2.打开驱动服务

  1. //驱动服务启动后,打开驱动
  2. BOOL OpenDriver()
  3. {
  4.     char message[256];
  5.     gHandle = CreateFile(
  6.         _T("\\\\.\\") OLS_DRIVER_ID,//这个地方的名字必须是驱动程序里面IoCreateDevice函数创建设备是 使用的名字
  7.         GENERIC_READ | GENERIC_WRITE,
  8.         0,
  9.         NULL,
  10.         OPEN_EXISTING,
  11.         FILE_ATTRIBUTE_NORMAL,
  12.         NULL
  13.         );
  14.     int code=GetLastError();
  15.     if(gHandle == INVALID_HANDLE_VALUE)
  16.     {
  17.         return FALSE;
  18.     }
  19.     return TRUE;
  20. }
3.停止驱动

  1. //停止驱动
  2. BOOL  StopDriver(SC_HANDLE hSCManager,LPCTSTR DriverId)
  3. {
  4.     SC_HANDLE        hService = NULL;
  5.     BOOL            rCode = FALSE;
  6.     SERVICE_STATUS    serviceStatus;
  7.     DWORD        error = NO_ERROR;
  8.     hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS);
  9.     if(hService != NULL)
  10.     {
  11.         rCode = ControlService(hService, SERVICE_CONTROL_STOP, &serviceStatus);
  12.         error = GetLastError();
  13.         CloseServiceHandle(hService);
  14.     }
  15.     return rCode;
  16. }
4.卸载驱动

  1. //卸载驱动
  2. BOOL RemoveDriver(SC_HANDLE hSCManager, LPCTSTR DriverId)
  3. {
  4.     SC_HANDLE   hService = NULL;
  5.     BOOL        rCode = FALSE;
  6.     hService = OpenService(hSCManager, DriverId, SERVICE_ALL_ACCESS);
  7.     if(hService == NULL)
  8.     {
  9.         rCode = TRUE;
  10.     }
  11.     else
  12.     {
  13.         rCode = DeleteService(hService);
  14.         CloseServiceHandle(hService);
  15.     }
  16.     return rCode;
  17. }
完整示例程序下载:http://download.csdn.net/detail/xiaibiancheng/5449887

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 1.7万人学习

AngularJS教程
AngularJS教程

共24课时 | 2万人学习

麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 4.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号