驱动加载器
来源:互联网 发布:unity3d中人物模型 编辑:程序博客网 时间:2024/06/05 19:27
API
OpenSCManager
CreateService
OpenService
StartService
ControlService
DeleteService
CloseServiceHandle
代码示例
void CLoadDriverDlg::OnBtnLoad() { CString strPath; m_edtPath.GetWindowText(strPath); if (strPath.IsEmpty()) { ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, "请选择驱动文件路径"); return; } SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (schSCManager == NULL) { goto SAFE_EXIT; } schService = ::CreateService( schSCManager, // SCManager database SERVICENAME, // name of service DISPLAYNAME, // service name to display SERVICE_ALL_ACCESS, // desired access SERVICE_KERNEL_DRIVER, // service type SERVICE_DEMAND_START, // start type SERVICE_ERROR_NORMAL, // error control type strPath, // service's binary NULL, // no load ordering group NULL, // no tag identifier NULL, // no dependencies NULL, // LocalSystem account NULL); // no password if (schService == NULL) { goto SAFE_EXIT; } ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, "服务安装成功");SAFE_EXIT: ShowState(); SafeCloseService(schService); SafeCloseService(schSCManager);}void CLoadDriverDlg::ShowState(){ LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (LPTSTR) &lpMsgBuf, 0, NULL ); // Process any inserts in lpMsgBuf. // ... // Display the string. //MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, (LPCTSTR)lpMsgBuf); // Free the buffer. LocalFree( lpMsgBuf );}void CLoadDriverDlg::OnBtnUnload() { SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (schSCManager == NULL) { goto SAFE_EXIT; } schService = ::OpenService( schSCManager, // SCM database SERVICENAME, // service name SERVICE_ALL_ACCESS); if (schService == NULL) { goto SAFE_EXIT; } if (!DeleteService(schService)) { goto SAFE_EXIT; } ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, "服务卸载成功");SAFE_EXIT: ShowState(); SafeCloseService(schService); SafeCloseService(schSCManager);}void CLoadDriverDlg::OnBtnStart() { SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (schSCManager == NULL) { goto SAFE_EXIT; } schService = ::OpenService( schSCManager, // SCM database SERVICENAME, // service name SERVICE_ALL_ACCESS); if (schService == NULL) { goto SAFE_EXIT; } if (!StartService(schService, 0 ,NULL)) { goto SAFE_EXIT; } ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, "启动成功");SAFE_EXIT: ShowState(); SafeCloseService(schService); SafeCloseService(schSCManager);}void CLoadDriverDlg::OnBtnStop() { SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; SERVICE_STATUS serviceStatus; schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (schSCManager == NULL) { goto SAFE_EXIT; } schService = ::OpenService( schSCManager, // SCM database SERVICENAME, // service name SERVICE_ALL_ACCESS); if (schService == NULL) { goto SAFE_EXIT; } if (!ControlService(schService, SERVICE_CONTROL_STOP, &serviceStatus)) { goto SAFE_EXIT; } ::SetDlgItemText(GetSafeHwnd(), IDC_STC_STATE, "停止成功");SAFE_EXIT: ShowState(); SafeCloseService(schService); SafeCloseService(schSCManager);}
0 0
- NT驱动加载器
- 驱动加载器
- NT式驱动加载器
- 一个驱动加载器代码
- 驱动加载器UI版
- 驱动加载。
- //加载驱动
- 自定义类加载器动态加载 JDBC 驱动
- PCIe驱动开发-驱动加载
- PCIe驱动开发-驱动加载
- Windows驱动加载控制器
- 加载驱动的步骤
- 模块化驱动动态加载
- 驱动加载顺序
- 驱动加载顺序
- 驱动加载顺序
- SystemCrashDumpStateInformation加载驱动
- 使用ZwLoadDriver加载驱动
- ANDROID内存优化(大汇总——中)
- C++面试题
- hdu 1075 翻译火星文 trie树 / map
- ANDROID内存优化(大汇总——全)
- android:taskAffinity属性的用法
- 驱动加载器
- 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
- https 和 http区别
- 集训队专题(7)1004 Leapin' Lizards
- UVA 10129 Play on Words
- 学习算法导论——插入排序
- C++学习笔记50——继承中的析构函数
- [从头学数学] 第113节 一元一次方程 小结与复习题
- 在一篇英文文本中,查找某个单词的出现次数