驱动学习笔记2-用程序加载NT驱动程序

WBOY
发布: 2016-06-07 15:30:25
原创
1006 人浏览过

NT 驱动 程序 的加载: 1:为NT 驱动 创建新的服务. 2:开启此项服务 3:关闭此项服务 4:删除NT 驱动 创建的服务 (1)打开SCM管理器 SC_HANDLE WINAPI OpenSCManager( __in LPCTSTR lpMachineName,//计算机名称.NULL或者空表示本机 __in LPCTSTR lpDatabaseName,/

NT驱动程序的加载:
1:为NT驱动创建新的服务.
2:开启此项服务
3:关闭此项服务
4:删除NT驱动创建的服务
(1)打开SCM管理器
SC_HANDLE WINAPI OpenSCManager(
  __in          LPCTSTR lpMachineName,//计算机名称.NULL或者空表示本机
  __in          LPCTSTR lpDatabaseName,//SCM数据库名称.NULL表示使用缺省数据库
  __in          DWORD dwDesiredAccess //使用权限.一般为SC_MANAGER_ALL_ACCESS
);
成功返回SCM管理器句柄.否则返回NULL
(2)创建服务
SC_HANDLE WINAPI CreateService(
  __in          SC_HANDLE hSCManager,//OpenSCManager打开的句柄
  __in          LPCTSTR lpServiceName,//服务名称.SCM管理器中看到的服务名称
  __in          LPCTSTR lpDisplayName,
  __in          DWORD dwDesiredAccess,//打开权限.一般为SERVICE_ALL_ACCESS
  __in          DWORD dwServiceType, //服务类型(文件系统驱动/普通驱动程序/驱动自加载/)
  __in          DWORD dwStartType,  //启动类型
  __in          DWORD dwErrorControl, //错误控制码
  __in          LPCTSTR lpBinaryPathName,//服务程序或者驱动程序的路径
  __in          LPCTSTR lpLoadOrderGroup,//服务属于哪个用户组
  __out         LPDWORD lpdwTagId,
  __in          LPCTSTR lpDependencies, //所依赖的服务的名称
  __in          LPCTSTR lpServiceStartName, //用户帐户名称
  __in          LPCTSTR lpPassword   //用户口令
);
(3)打开服务
SC_HANDLE WINAPI OpenService(
  __in          SC_HANDLE hSCManager,  //SCM管理器句柄
  __in          LPCTSTR lpServiceName,  //服务名称
  __in          DWORD dwDesiredAccess  //访问权限.一般为SC_MANAGER_ALL_ACCESS
);
(4)控制服务
BOOL WINAPI ControlService(
  __in          SC_HANDLE hService,   //服务句柄
  __in          DWORD dwControl,   //控制码
  __out         LPSERVICE_STATUS lpServiceStatus //指向一个SERVICE_STATUS 结构体,来接收最后的服务信息
);
(5)关闭SCM管理器
BOOL WINAPI CloseServiceHandle(
  __in          SC_HANDLE hSCObject
);
完整例程

 

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!