NT式驱动加载器

本文详细介绍了如何在Windows系统中通过NT式驱动加载器进行驱动的安装、启动、停止和卸载。主要涉及OpenSCManager、CreateService、StartService、ControlService和DeleteService等关键API的使用,实现对驱动服务的全面操作。
摘要由CSDN通过智能技术生成

引言


设备驱动程序的动态加载主要是由服务控制管理程序(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_PATH] = {0};
	UINT nCount = DragQueryFile(hDropInfo,0xFFFFFFFF, NULL, 0);//文件个数
	for(UINT idx = 0; idx < nCount; ++idx) {
		DragQueryFile(hDropInfo, idx, szPath, MAX_PATH);
		TCHAR * pFind = _tcschr((TCHAR *)szPath, '\\');
		m_strSysFileName=pFind+1;
		m_strSysFilePath=szPath;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>软件名称:驱动加载工具(InstDrv - 中文版)软件版本:V1.0版软件类型:个人免费版(无插件)运行环境:Windows操作系统开发作者:Coderui更新日期:2008年04月08日联系邮箱:coderui@163.com作者博客:http://hi.baidu.com/coderui>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-------------------------------------------------介绍:  该软件和网上大家常用的“InstDrv”程序功能几乎一样,只是新加入了详细的中文提示信息和拖拽打开文件等,这样可以方便用户的使用。“InstDrv”是一个比较好用的驱动安装、卸载工具。可以帮助您方便的把驱动程序安装上或卸载掉。本程序更多应用于动态调驱动前的加载操作中。功能:1:执行加载、启动、停止、卸载驱动操作。2:支持文件拖拽打开。3:支持程序窗口总在最前显示。4:操作后有详细的中文提示信息。说明:压缩包中的“MySYS.sys”文件为测试驱动程序,支持加载、启动、停止、卸载驱动等功能,可以使用“Dbgview”工具查看驱动输出的提示信息。-------------------------------------------------详细的中文提示信息如下:状态:支持拖拽获取文件路径.状态:只能一次拖拽一个文件!状态:拖拽获取文件路径成功!状态:请输入驱动文件的路径名!状态:创建句柄失败!状态:因为不是一个有效文件,所以驱动服务安装失败!状态:因为驱动服务已经存在,所以驱动服务安装失败!状态:因为驱动服务已经启动,所以驱动服务安装失败!状态:驱动服务安装失败!状态:驱动服务安装成功!状态:打开驱动服务失败,可能该驱动服务不存在!状态:驱动服务启动成功!状态:因为驱动服务已经启动,所以驱动服务启动失败!状态:因为不是一个有效驱动,所以驱动服务启动失败!状态:因为驱动服务未被停止,所以驱动服务启动失败!状态:驱动服务启动失败!状态:驱动服务停止成功!状态:因为驱动服务没有启动,所以驱动服务停止失败!状态:驱动服务停止失败!状态:驱动服务卸栽成功!状态:因为驱动服务已经启动,所以驱动服务卸栽失败!状态:驱动服务卸栽失败!-------------------------------------------------下载说明:如果当前网页连接地址下载不了该软件,您可以发送邮件到coderui@163.com中,向程序作者所要该软件,谢谢您的支持!-------------------------------------------------解压后EXE程序全文MD5校验值为:591d784d24f5aead3a383535a4100733专用MD5校验程序下载地址为:http://hi.baidu.com/coderui/blog/item/e3a1282354c128519822ed24.html>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值