实战DeviceIoControl之六:访问物理端口
2010-01-10 09:37:25 来源:WEB开发网核心提示:下面给出实现设备驱动程序的动态加载的源码,动态加载的好处是,实战DeviceIoControl之六:访问物理端口(2),你不用做任何添加新硬件的操作,也不用编辑注册表
下面给出实现设备驱动程序的动态加载的源码。动态加载的好处是,你不用做任何添加新硬件的操作,也不用编辑注册表,更不用重新启动计算机。
// 安装驱动并启动服务 // lpszDriverPath: 驱动程序路径 // lpszServiceName: 服务名 BOOL StartDriver(LPCTSTR lpszDriverPath, LPCTSTR lpszServiceName) { SC_HANDLE hSCManager; // 服务控制管理器句柄 SC_HANDLE hService; // 服务句柄 DWORD dwLastError; // 错误码 BOOL bResult = FALSE; // 返回值 // 打开服务控制管理器 hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (hSCManager) { // 创建服务 hService = CreateService(hSCManager, lpszServiceName, lpszServiceName, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, lpszDriverPath, NULL, NULL, NULL, NULL, NULL); if (hService == NULL) { if (::GetLastError() == ERROR_SERVICE_EXISTS) { hService = ::OpenService(hSCManager, lpszServiceName, SERVICE_ALL_ACCESS); } } if (hService) { // 启动服务 bResult = StartService(hService, 0, NULL); // 关闭服务句柄 CloseServiceHandle(hService); } // 关闭服务控制管理器句柄 CloseServiceHandle(hSCManager); } return bResult; } // 停止服务并卸下驱动 // lpszServiceName: 服务名 BOOL StopDriver(LPCTSTR lpszServiceName) { SC_HANDLE hSCManager; // 服务控制管理器句柄 SC_HANDLE hService; // 服务句柄 BOOL bResult; // 返回值 SERVICE_STATUS ServiceStatus; bResult = FALSE; // 打开服务控制管理器 hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (hSCManager) { // 打开服务 hService = OpenService(hSCManager, lpszServiceName, SERVICE_ALL_ACCESS); if (hService) { // 停止服务 bResult = ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus); // 删除服务 bResult = bResult && DeleteService(hService); // 关闭服务句柄 CloseServiceHandle(hService); } // 关闭服务控制管理器句柄 CloseServiceHandle(hSCManager); } return bResult; }
Tags:实战 DeviceIoControl 访问
编辑录入:爽爽 [复制链接] [打 印]- ››实战:企业使用交换机VLAN路由配置
- ››实战案例分析:高质量软文对网站百度排名的影响
- ››实战经验浅谈网站搬家后的优化工作
- ››实战Active Directory站点部署与管理,Active Dir...
- ››实战操作主机角色转移,Active Directory系列之十...
- ››实战经验:巧用微博推广淘宝网店
- ››实战iPhone GPS定位系统
- ››实战Linux环境配置DBD:Oracle模块
- ››实战DeviceIoControl系列之一:通过API访问设备驱...
- ››实战DeviceIoControl系列之二:获取软盘/硬盘/光盘...
- ››实战DeviceIoControl系列之三:制作磁盘镜像文件
- ››实战DeviceIoControl系列之四:获取硬盘的详细信息...
更多精彩
赞助商链接