一、新建一个cpp文件驱动管理
1、通过OpenSCManager获取管理器句柄
管理器句柄 = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
第一个参数,指向计算机名称,此处为NULL表示指向本机
第二个参数,SCM数据库名称,此用为NULL表示使用默认
第三个参数,使用权限,一般设置为SC_MANAGER_ALL_ACCESS表示所有使用权
2、通过CreateServiceA创建驱动服务
1. 驱动服务句柄 = CreateServiceA(管理器句柄, 2. 驱动名称, 3. 驱动名称, 4. SERVICE_START, 5. SERVICE_KERNEL_DRIVER, 6. SERVICE_DEMAND_START, 7. SERVICE_ERROR_NORMAL, 8. 完整驱动路径, 9. NULL, 10. NULL, 11. NULL, 12. NULL, 13. NULL);
第一个参数,管理器句柄
第二个参数,第三个参数,一般就是驱动的名字
第四个参数,访问权限
第五个参数,加载的服务是驱动程序
第六个参数,驱动程序的start值
第七个参数,驱动程序ErrorControl值
第八个参数,开启服务的用户组
第九个参数,输出验证标签
第十个参数,依赖的服务的名称
第十一个参数,用户账户名称
第十二个参数,用户口令
3、如果驱动已经加载,只需打开即可
if (GetLastError() == ERROR_SERVICE_EXISTS) //如果服务已经存在,直接打开 { 驱动服务句柄 = OpenServiceA(管理器句柄, 驱动名称, SERVICE_START); }
4、关闭上面的服务
if (驱动服务句柄) { CloseServiceHandle(驱动服务句柄); } if (管理器句柄) { CloseServiceHandle(管理器句柄); }
二、新建驱动管理头文件,将上面函数的声明函数,添加进去
BOOL LoadDriver(const char* 驱动名称, const char* 驱动路径);
三、添加按钮,并调用该函数,实现加载驱动
void CtestDlg::OnBnClickedButtonJzqd() { LoadDriver("123","123.sys"); }
四、运行效果