当前位置: 首页 > news >正文

专业网站设计方案公司惠东住房建设局网站

专业网站设计方案公司,惠东住房建设局网站,网站建设费用 多少钱,我们一起做网站驱动程序加载工具有许多#xff0c;最常用的当属KmdManager工具#xff0c;如果驱动程序需要对外发布那我们必须自己编写实现一个驱动加载工具#xff0c;当需要使用驱动时可以拉起自己的驱动#xff0c;如下将实现一个简单的驱动加载工具#xff0c;该工具可以实现基本的…驱动程序加载工具有许多最常用的当属KmdManager工具如果驱动程序需要对外发布那我们必须自己编写实现一个驱动加载工具当需要使用驱动时可以拉起自己的驱动如下将实现一个简单的驱动加载工具该工具可以实现基本的安装加载关闭卸载等操作日常使用完全没问题。 installDvr 驱动安装 #include iostream #include Windows.husing namespace std;// 安装驱动 BOOL installDvr(CONST WCHAR drvPath[50], CONST WCHAR serviceName[20]) {// 打开服务控制管理器数据库SC_HANDLE schSCManager OpenSCManager(NULL, // 目标计算机的名称,NULL连接本地计算机上的服务控制管理器NULL, // 服务控制管理器数据库的名称NULL打开 SERVICES_ACTIVE_DATABASE 数据库SC_MANAGER_ALL_ACCESS // 所有权限);if (schSCManager NULL){CloseServiceHandle(schSCManager);return FALSE;}// 创建服务对象添加至服务控制管理器数据库SC_HANDLE schService CreateService(schSCManager, // 服务控件管理器数据库的句柄serviceName, // 要安装的服务的名称serviceName, // 用户界面程序用来标识服务的显示名称SERVICE_ALL_ACCESS, // 对服务的访问权限所有全权限SERVICE_KERNEL_DRIVER, // 服务类型驱动服务SERVICE_DEMAND_START, // 服务启动选项进程调用 StartService 时启动SERVICE_ERROR_IGNORE, // 如果无法启动忽略错误继续运行drvPath, // 驱动文件绝对路径如果包含空格需要多加双引号NULL, // 服务所属的负载订购组服务不属于某个组NULL, // 接收订购组唯一标记值不接收NULL, // 服务加载顺序数组服务没有依赖项NULL, // 运行服务的账户名使用 LocalSystem 账户NULL // LocalSystem 账户密码);if (schService NULL){CloseServiceHandle(schService);CloseServiceHandle(schSCManager);return FALSE;}CloseServiceHandle(schService);CloseServiceHandle(schSCManager);return TRUE; }int main(int argc, char *argv[]) {if (installDvr(LC:\\WinDDK.sys, Lservice) TRUE){cout 驱动已安装 endl;}getchar();return 0; }startDvr 启动驱动 #include iostream #include Windows.husing namespace std;// 启动服务 BOOL startDvr(CONST WCHAR serviceName[20]) {// 打开服务控制管理器数据库SC_HANDLE schSCManager OpenSCManager(NULL, // 目标计算机的名称,NULL连接本地计算机上的服务控制管理器NULL, // 服务控制管理器数据库的名称NULL打开 SERVICES_ACTIVE_DATABASE 数据库SC_MANAGER_ALL_ACCESS // 所有权限);if (schSCManager NULL){CloseServiceHandle(schSCManager);return FALSE;}// 打开服务SC_HANDLE hs OpenService(schSCManager, // 服务控件管理器数据库的句柄serviceName, // 要打开的服务名SERVICE_ALL_ACCESS // 服务访问权限所有权限);if (hs NULL){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}if (StartService(hs, 0, 0) 0){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return TRUE; }int main(int argc, char *argv[]) {if (startDvr(Lservice) TRUE){cout 驱动服务 endl;}getchar();return 0; }stopDvr 停止驱动 #include iostream #include Windows.husing namespace std;// 停止服务 BOOL stopDvr(CONST WCHAR serviceName[20]) {// 打开服务控制管理器数据库SC_HANDLE schSCManager OpenSCManager(NULL, // 目标计算机的名称,NULL连接本地计算机上的服务控制管理器NULL, // 服务控制管理器数据库的名称NULL打开 SERVICES_ACTIVE_DATABASE 数据库SC_MANAGER_ALL_ACCESS // 所有权限);if (schSCManager NULL){CloseServiceHandle(schSCManager);return FALSE;}// 打开服务SC_HANDLE hs OpenService(schSCManager, // 服务控件管理器数据库的句柄serviceName, // 要打开的服务名SERVICE_ALL_ACCESS // 服务访问权限所有权限);if (hs NULL){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}// 如果服务正在运行SERVICE_STATUS status;if (QueryServiceStatus(hs, status) 0){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}if (status.dwCurrentState ! SERVICE_STOPPED status.dwCurrentState ! SERVICE_STOP_PENDING){// 发送关闭服务请求if (ControlService(hs, // 服务句柄SERVICE_CONTROL_STOP, // 控制码通知服务应该停止status // 接收最新的服务状态信息) 0) {CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}// 判断超时INT timeOut 0;while (status.dwCurrentState ! SERVICE_STOPPED){timeOut;QueryServiceStatus(hs, status);Sleep(50);}if (timeOut 80){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}}CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return TRUE; }int main(int argc, char *argv[]) {if (stopDvr(Lservice) TRUE){cout 停止驱动服务 endl;}getchar();return 0; }unloadDvr 卸载驱动 #include iostream #include Windows.husing namespace std;// 卸载驱动 BOOL unloadDvr(CONST WCHAR serviceName[20]) {// 打开服务控制管理器数据库SC_HANDLE schSCManager OpenSCManager(NULL, // 目标计算机的名称,NULL连接本地计算机上的服务控制管理器NULL, // 服务控制管理器数据库的名称NULL打开 SERVICES_ACTIVE_DATABASE 数据库SC_MANAGER_ALL_ACCESS // 所有权限);if (schSCManager NULL){CloseServiceHandle(schSCManager);return FALSE;}// 打开服务SC_HANDLE hs OpenService(schSCManager, // 服务控件管理器数据库的句柄serviceName, // 要打开的服务名SERVICE_ALL_ACCESS // 服务访问权限所有权限);if (hs NULL){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}// 删除服务if (DeleteService(hs) 0){CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return FALSE;}CloseServiceHandle(hs);CloseServiceHandle(schSCManager);return TRUE; }int main(int argc, char *argv[]) {if (unloadDvr(Lservice) TRUE){cout 卸载驱动服务 endl;}getchar();return 0; }封装cDrvCtrl通信类 #define _CRT_SECURE_NO_WARNINGS #include iostream #include Windows.h#pragma comment(lib,user32.lib) #pragma comment(lib,advapi32.lib)// ------------------------------------------------------------------------------ // 驱动控制类 // ------------------------------------------------------------------------------class cDrvCtrl { public:cDrvCtrl(){m_pSysPath NULL;m_pServiceName NULL;m_pDisplayName NULL;m_hSCManager NULL;m_hService NULL;m_hDriver INVALID_HANDLE_VALUE;}~cDrvCtrl(){CloseServiceHandle(m_hService);CloseServiceHandle(m_hSCManager);CloseHandle(m_hDriver);}// 安装驱动BOOL Install(PCHAR pSysPath, PCHAR pServiceName, PCHAR pDisplayName){m_pSysPath pSysPath;m_pServiceName pServiceName;m_pDisplayName pDisplayName;m_hSCManager OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);if (NULL m_hSCManager){m_dwLastError GetLastError();return FALSE;}m_hService CreateServiceA(m_hSCManager, m_pServiceName, m_pDisplayName,SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,m_pSysPath, NULL, NULL, NULL, NULL, NULL);if (NULL m_hService){m_dwLastError GetLastError();if (ERROR_SERVICE_EXISTS m_dwLastError){m_hService OpenServiceA(m_hSCManager, m_pServiceName, SERVICE_ALL_ACCESS);if (NULL m_hService){CloseServiceHandle(m_hSCManager);return FALSE;}}else{CloseServiceHandle(m_hSCManager);return FALSE;}}return TRUE;}// 启动驱动BOOL Start(){if (!StartServiceA(m_hService, NULL, NULL)){m_dwLastError GetLastError();return FALSE;}return TRUE;}// 关闭驱动BOOL Stop(){SERVICE_STATUS ss;GetSvcHandle(m_pServiceName);if (!ControlService(m_hService, SERVICE_CONTROL_STOP, ss)){m_dwLastError GetLastError();return FALSE;}return TRUE;}// 移除驱动BOOL Remove(){GetSvcHandle(m_pServiceName);if (!DeleteService(m_hService)){m_dwLastError GetLastError();return FALSE;}return TRUE;}// 打开驱动BOOL Open(PCHAR pLinkName){if (m_hDriver ! INVALID_HANDLE_VALUE)return TRUE;m_hDriver CreateFileA(pLinkName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);if (m_hDriver ! INVALID_HANDLE_VALUE)return TRUE;elsereturn FALSE;}// 安装并运行驱动VOID InstallAndRun(){char szSysFile[MAX_PATH] { 0 };char szSvcLnkName[] LyInject;;GetAppPath(szSysFile);strcat(szSysFile, LyInject.sys);Install(szSysFile, szSvcLnkName, szSvcLnkName);Start();Open(\\\\.\\LyInject);}// 移除并关闭驱动VOID RemoveAndStop(){Stop();Remove();CloseHandle(m_hDriver);}// 发送控制信号BOOL IoControl(DWORD dwIoCode, PVOID InBuff, DWORD InBuffLen, PVOID OutBuff, DWORD OutBuffLen, DWORD *RealRetBytes){DWORD dw;BOOL b DeviceIoControl(m_hDriver, CTL_CODE_GEN(dwIoCode), InBuff, InBuffLen, OutBuff, OutBuffLen, dw, NULL);if (RealRetBytes)*RealRetBytes dw;return b;} private:// 获取服务句柄BOOL GetSvcHandle(PCHAR pServiceName){m_pServiceName pServiceName;m_hSCManager OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);if (NULL m_hSCManager){m_dwLastError GetLastError();return FALSE;}m_hService OpenServiceA(m_hSCManager, m_pServiceName, SERVICE_ALL_ACCESS);if (NULL m_hService){CloseServiceHandle(m_hSCManager);return FALSE;}else{return TRUE;}}// 获取控制信号对应字符串DWORD CTL_CODE_GEN(DWORD lngFunction){return (FILE_DEVICE_UNKNOWN * 65536) | (FILE_ANY_ACCESS * 16384) | (lngFunction * 4) | METHOD_BUFFERED;}// 获取完整路径void GetAppPath(char *szCurFile){GetModuleFileNameA(0, szCurFile, MAX_PATH);for (SIZE_T i strlen(szCurFile) - 1; i 0; i--){if (szCurFile[i] \\){szCurFile[i 1] \0;break;}}}public:DWORD m_dwLastError;PCHAR m_pSysPath;PCHAR m_pServiceName;PCHAR m_pDisplayName;HANDLE m_hDriver;SC_HANDLE m_hSCManager;SC_HANDLE m_hService; };int main(int argc, char *argv[]) {cDrvCtrl DriveControl;DriveControl.InstallAndRun();DriveControl.RemoveAndStop();system(pause);return 0; }文章出处https://www.cnblogs.com/LyShark/p/15019049.html 本博客所有文章除特别声明外均采用 BY-NC-SA 许可协议。转载请注明出处
http://www.w-s-a.com/news/793180/

相关文章:

  • 安陆市建设局网站磐安做网站
  • 梧州市建设局官方网站商旅100网页版
  • 好的宝安网站建设中企动力的网站开发语言
  • flash网站模板怎么用怎么套模板 网站
  • 建设二手商品网站总结石景山安保服务公司电话
  • 网站建设对于企业的重要性龙岗企业网站设计公司
  • 网站搭建在线支付数码产品网站模板
  • 白云网站建设多少钱WORDPRESS添加前台会员注册
  • 商业网站模板中国字体设计网站
  • 做网站闵行网站建设中英语
  • 写作网站大全如何简单制作生理盐水
  • 云南网站建设维护互联网广告是做什么的
  • 网站 谁建设 谁负责做网站项目
  • 网站建设子栏目怎么弄海口专门做网站
  • 网站建设 温州建设网上银行个人网上银行登
  • 黄页网站推广方案wordpress 压缩插件
  • 网站建设常州网站简介 title
  • 惠州市网站建设个人深圳网站优化价格
  • 营销型网站工程专业网站开发公司
  • 两个路由器做双网站西安关键词优化服务
  • 企业建站系统信息远象建设 网站
  • 移动建站平台物业管理系统app
  • 济南网站建设多少钱郑州公司做网站
  • 在阿里云网站建设wordpress模板如何修改字体
  • 网站推广方案设计购物网站模块例子
  • 潍坊网站定制公司网站图片放大特效怎么做的
  • 淘宝店铺买卖湘潭seo优化价格
  • 最好的网站建设用途合肥企业网站建设
  • 计算机编程与网站建设好玩的网页传奇
  • 商务网站建设找哪家本地推广找哪些网站