资源简介
可以过简单的TP游戏,自己放弃的一个版本,具体可以过那些需要自己去测试
代码片段和文件信息
#include “stdafx.h“
#include “Driver.h“
#include
#include
#include
#include “Global.h“
#pragma comment(lib “setupapi.lib“)
#pragma comment(lib “newdev.lib“)
CDriver::CDriver()
{
}
CDriver::~CDriver()
{
}
CString CDriver::installDvr()
{
CString ret=NULL;
if (NULL != m_hSerMgr)
{
ret=“状态:因为驱动服务已经存在,所以驱动服务安装失败!\n“;
return ret;
}
HANDLE hToken;
OpenProcessToken(GetCurrentProcess() TOKEN_ADJUST_PRIVILEGES &hToken);
AdjustProcessPrivilege(hToken SE_DEBUG_NAME);
m_hSerMgr = OpenSCManagerA(NULL NULL SC_MANAGER_ALL_ACCESS);
if (m_hSerMgr==NULL)
{
ret=“状态:驱动服务安装失败!\n“;
return ret;
}
m_hServer = CreateServiceA(m_hSerMgr m_strSysFileName m_strSysFileName SERVICE_ALL_ACCESS \
SERVICE_KERNEL_DRIVER SERVICE_DEMAND_START SERVICE_ERROR_NORMAL m_strSysFilePath NULL NULL \
NULL NULL NULL);
if (NULL == m_hServer)
{
DWORD dwRet = GetLastError();
if (dwRet != ERROR_IO_PENDING && dwRet != ERROR_SERVICE_EXISTS)
{
if (!StartServiceA(m_hServer 0 0)){
DeleteService(m_hServer); //启动失败、则删除已经创建的服务
}
if (NULL != m_hSerMgr)
{
CloseServiceHandle(m_hSerMgr);
m_hSerMgr = NULL;
}
ret = “状态:驱动服务安装失败!\n“;
return ret;
}
m_hServer = OpenServiceA(m_hSerMgr m_strSysFileName SERVICE_ALL_ACCESS);
if (NULL == m_hServer)
{
ret=“状态:因为驱动服务已经存在,所以驱动服务安装失败!\n“;
return ret;
}
}
else
{
ret = “状态:驱动服务安装成功!\n“;
}
return ret;
}
CString CDriver::startDvr()
{
CString ret = NULL;
if (NULL == m_hSerMgr && NULL == m_hServer)
{
ret=“状态:启动驱动失败!\n“;
return ret;
}
if (!StartServiceA(m_hServer NULL NULL))
{
DWORD dwRet = GetLastError();
if (dwRet != ERROR_IO_PENDING && dwRet != ERROR_SERVICE_ALREADY_RUNNING)
{
ret = “状态:启动驱动失败!\n“;
return ret;
}
else
{
ret = “状态:因为驱动服务已经启动,所以驱动服务启动失败!\n“;
return ret;
}
}
else
{
ret = “状态:驱动服务启动成功!\n“;
}
return ret;
}
CString CDriver::stopDvr()
{
CString ret = NULL;
if (NULL == m_hSerMgr && NULL == m_hServer)
{
ret=“状态:因为驱动服务没有启动,所以驱动服务停止失败!\n“;
return ret;
}
SERVICE_STATUS stSerStatus = { 0 };
if (!ControlService(m_hServer SERVICE_CONTROL_STOP &stSerStatus))
{
ret = “状态:因为驱动服务没有启动,所以驱动服务停止失败!\n“;
return ret;
}
else
{
ret = “状态:驱动服务停止成功!\n“;
}
return ret;
}
CString CDriver::unloadDvr()
{
CString ret = NULL;
if (NULL == m_hSerMgr && NULL == m_hServer)
{
ret=“状态:打开驱动服务失败,可能该驱动服务不存在!\n“;
return ret;
}
if (!DeleteService(m_hServer))
{
ret=“状态:驱动服务卸载失败!\n“;
return ret;
}
else
{
CloseServerHandle();
ret = “状态:驱动服务卸载成功!\n“;
}
return ret;
}
void CDriver::CloseServerHandle()
{
if (NULL != m_hServer)
{
CloseServiceHandle(m_hServer);
m_hServer = NULL;
}
if (NULL != m_hSerMgr)
{
CloseServiceHandle(m_hSerMgr);
m_hSerMgr = NULL;
}
}
- 上一篇:IC卡读写软件
- 下一篇:Lucene5.2.1 入门学习
相关资源
- 开源1A锂电池充电板TP4056原理图+PCB
- FTP课程设计(服务端+客户端)
- http请求状态代码
- python实现的ftp自动上传、下载脚本
- 仿windows记事本
- 用Socket编程实现FTP
- QT 实现文件下载
- tftp文件传输工具
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- 基于C 的简易FTP客户端(带源码)
- 用IdFTPServer写的一个FTPServer程序
- MikroTik RouterOS密码破解 mtpass.exe
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- AresonMouseTestProgram可测鼠标回报率及
- FTP命令详解.doc
- MT6771T_LTE-A_Smartphone_Application_Processor
- 通用数据传输平台GTP
- 基于GTP修正的R3DGM建模与可视化方法
- 一个简单方便的服务端ftp搭建工具
- 20cn的ftp服务器超好用 简洁
- 最好用的FTP服务器
-
notepad++包含xm
l tools等插件 - MTP USB驱动win7 32+64位可用版
- 烽火网络外置式MSTP解决方案在河北宽
- Post Processing Profiles 3.1
- 戴尔dell TP713无线触摸板驱动 v1.0 官网
-
tp-li
nk tl-pa201 电线网络适配器应用程 - CuteFTP8.0绿色破解版免安装无需序列号
- PSFTP.EXE 工具
评论
共有 条评论