资源简介
可以过简单的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 入门学习
相关资源
- 多线程ftp客户端可以实现多站点和上
- org.apache.commons.httpclient资源包4.2
- 通过httpclient获取到JSON数据,展示到
- 基于CA的Web安全访问
- ATPDraw用户手册.pdf
- 基于 POP3 和 SMTP 的 邮件服务端和移动
- PMSM电机MTPA推导
- TPA3110D2功放DIY
- Best Http 1.10.7
- FTP服务器和客户端源码集合
- CuteFTP8绿色版(FTP工具)
- ftp源码
-
FAST FW150R WEB页面直接刷到TP-li
nk 74 - ac701-schematic-xtp218-rev1-0XC7A200T.pdf
- HTTP协议测试软件
-
TP-li
nk TL-WR842N V4 固件降级包合集 - 路由器最后所有的不死UBOOT。150427版。
- Apache httpd-2.2.22-win32-x86-no_ssl.msi 32、
- DOS FTP显示速率
- SMTP破解器25.80.465.587端口
- B2C电商小程序系统
- FTP断点续传
- linux+QT下基于RTP协议的实时视频传输客
- CuteFTP8 最简单好用的 FTP,免费不用注
- Windows支持SSL的Haproxy 1.8.17
- QT5编译QFtp的具体方法和所用到的资源
- libcurl 7.51.0 封装库( V2.0.0.1 ),支持
- 基于ARM的嵌入式网络视频监控系统的
- tps63020资料
- httpcomponents-client-4.5.5-bin.zip
评论
共有 条评论