驱动学习笔记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學習者快速成長!