一、新建一个cpp文件驱动管理
1、通过OpenSCManager获取管理器句柄
管理器句柄 = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
第一个参数,指向计算机名称,此处为NULL表示指向本机
第二个参数,SCM数据库名称,此用为NULL表示使用默认
第三个参数,使用权限,一般设置为SC_MANAGER_ALL_ACCESS表示所有使用权
2、通过CreateServiceA创建驱动服务
驱动服务句柄 = CreateServiceA(管理器句柄,
驱动名称,
驱动名称,
SERVICE_START,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
完整驱动路径,
NULL,
NULL,
NULL,
NULL,
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");
}
四、运行效果