資源簡介
可以過簡單的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 入門學習
評論
共有 條評論