最简单的驱动程序代码:2023驱动保护学习--

时间:2023-04-06 06:41:36来源:本站整理作者:点击:

一、卸载驱动源代码

BOOL UnloadDriver(const char* 驱动名称) { BOOL 返回值 = FALSE; SC_HANDLE 管理器句柄 = NULL; SC_HANDLE 驱动服务句柄 = NULL; SERVICE_STATUS 服务状态; char 缓存[256] = { 0 }; 管理器句柄 = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (管理器句柄 == NULL) { sprintf_s(缓存, "nxyn:管理器句柄获取失败:%d\n",GetLastError()); OutputDebugStringA(缓存); 返回值 = FALSE; goto BeforeLeave; } else { sprintf_s(缓存, "nxyn:管理器句柄获取成功\n"); OutputDebugStringA(缓存); } 驱动服务句柄 = OpenServiceA(管理器句柄, 驱动名称, SERVICE_ALL_ACCESS); if (驱动服务句柄 == NULL) { sprintf_s(缓存, "nxyn:驱动服务句柄获取失败:%d\n", GetLastError()); OutputDebugStringA(缓存); 返回值 = FALSE; goto BeforeLeave; } else { sprintf_s(缓存, "nxyn:驱动服务句柄获取成功\n"); OutputDebugStringA(缓存); } //停止驱动程序,如果停止失败,只有重新启动才能,再动态加载。 if (!ControlService(驱动服务句柄, SERVICE_CONTROL_STOP, &服务状态)) { sprintf_s(缓存, "nxyn:停止驱动程序失败:%d\n", GetLastError()); OutputDebugStringA(缓存); } else { sprintf_s(缓存, "nxyn:停止驱动程序成功\n"); OutputDebugStringA(缓存); } //动态卸载驱动程序,删除服务 if (!DeleteService(驱动服务句柄)) { //卸载失败 sprintf_s(缓存, "nxyn:动态卸载驱动程序失败:%d\n", GetLastError()); OutputDebugStringA(缓存); } else { //卸载成功 sprintf_s(缓存, "nxyn:动态卸载驱动程序成功\n"); OutputDebugStringA(缓存); } 返回值 = TRUE; BeforeLeave: //离开前关闭打开的句柄 if (驱动服务句柄) { CloseServiceHandle(驱动服务句柄); } if (管理器句柄) { CloseServiceHandle(管理器句柄); } return 返回值; }

二、添加头文件,申明函数

#pragma once BOOL LoadDriver(const char* 驱动名称, const char* 驱动路径); BOOL UnloadDriver(const char* 驱动名称);

三、通过卸载按钮,实现卸载驱动

UnloadDriver("123");

四、卸载效果

最简单的驱动程序代码:2023驱动保护学习--(1)

,
最新文章
儿童视频
推荐文章

关于妃孕岛

Copyright 2022-2026 feiyundao.com 〖妃孕岛〗 版权所有 陕ICP备2022000637号-4

声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告