Browse Source

#IQRV #comment 去除 matinwatcher 模块

gifur 2 years ago
parent
commit
6fbf3337cc
29 changed files with 248 additions and 8758 deletions
  1. 0 4589
      Module/mod_MaintainWatcher/ConsoleFSM.cpp
  2. 0 613
      Module/mod_MaintainWatcher/ConsoleFSM.h
  3. 0 75
      Module/mod_MaintainWatcher/MaintainWatcherErrorCode.h
  4. 0 453
      Module/mod_MaintainWatcher/MaintainWatcher_client_g.h
  5. 0 302
      Module/mod_MaintainWatcher/MaintainWatcher_def_g.h
  6. 0 142
      Module/mod_MaintainWatcher/MaintainWatcher_msg_g.h
  7. 0 395
      Module/mod_MaintainWatcher/MaintainWatcher_server_g.h
  8. 0 107
      Module/mod_MaintainWatcher/UkeyService.xml
  9. 0 522
      Module/mod_MaintainWatcher/mainfrm.cpp
  10. 0 141
      Module/mod_MaintainWatcher/mainfrm.h
  11. 0 465
      Module/mod_MaintainWatcher/mod_MaintainWatcher.cpp
  12. 0 152
      Module/mod_MaintainWatcher/mod_MaintainWatcher.vcxproj
  13. 0 182
      Module/mod_MaintainWatcher/mod_ukeyconsole.rc
  14. 0 100
      Module/mod_MaintainWatcher/mod_ukeyconsole.vcxproj.filters
  15. BIN
      Module/mod_MaintainWatcher/mod_ukeyconsole1.rc
  16. 0 59
      Module/mod_MaintainWatcher/resource.h
  17. BIN
      Module/mod_MaintainWatcher/resource1.h
  18. 0 1
      Module/mod_MaintainWatcher/stdafx2.cpp
  19. 0 26
      Module/mod_MaintainWatcher/stdafx2.h
  20. 0 54
      Module/mod_MaintainWatcher/ukeyconsole.cpp
  21. 0 241
      Module/mod_MaintainWatcher/ukeytask.cpp
  22. 0 119
      Module/mod_MaintainWatcher/ukeytask.h
  23. 2 1
      Module/mod_ScannerSet/CameraImpl.cpp
  24. 19 0
      Module/mod_ScannerSet/CameraImpl.h
  25. 1 1
      Module/mod_ScannerSet/ScannerSetFSM.cpp
  26. 13 0
      Module/mod_ScannerSet/ScannerSet_def_g.h
  27. 13 0
      Module/mod_ScannerSet/mod_ScannerSet.cpp
  28. 8 18
      Module/mod_ScannerSet/mod_ScannerSet.h
  29. 192 0
      Module/mod_ScannerSet/smartptr.h

+ 0 - 4589
Module/mod_MaintainWatcher/ConsoleFSM.cpp

@@ -1,4589 +0,0 @@
-#include "stdafx2.h"
-#include "ConsoleFSM.h"
-#include "windows.h"
-#include "..\EventCode.h"
-#include "MaintainWatcher_server_g.h"
-#include "tlhelp32.h"
-
-#define OP_START_ENTITY		1
-#define OP_STOP_ENTITY		0
-
-#define USB_NONE    0
-#define USB_INSERT  1
-#define USB_PULLOUT 2
-
-#pragma comment(lib, "setupapi.lib")
-#include "Dbt.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <setupapi.h> 
-
-HANDLE	hDetectMutex = NULL;//only one functioning detector in a single OS 
-HWND	hDetectWnd	 = NULL;
-HANDLE  hDetectThread = NULL;
-HDEVNOTIFY hDevNotify = NULL;
-DWORD g_USBStatus = USB_NONE; //USB状态值,0:无状态;1:USB插入;2:USB拔出 
-BOOL g_FindUsbHdset = FALSE;
-BOOL g_FindUsbCamera = FALSE;
-BOOL g_FindEwsCamera = FALSE;
-char g_UsbHdsetName[MAX_PATH] = {0};
-char g_UsbCameraName[MAX_PATH] = {0};
-char g_UkeyName[MAX_PATH] = {0};
-BOOL g_FindKey = FALSE;
-BOOL g_FindUkey = FALSE;
-BOOL g_bErrStatus = FALSE; //是否处于错误状态 0:不在;1:在
-BOOL g_bWorkingStatus = FALSE; //上一个状态是否处于业务状态,0:不处于;1:处于
-//string g_UsbCameraName;
-BOOL g_HasVerifyTask = FALSE;
-USBKEY_INFO g_USBKeyInfo; //Ukey信息
-int g_nSurveillanceRecordAllowed;//是否使用广角摄像头,0:不使用;1:使用
-CSimpleStringA g_strEwsCameraID;//广角摄像头设备示例ID
-
-using namespace MaintainWatcher;
-class ConsoleFSM;
-
-#define MAX_MEDIA_DEVICE_NUM 10 //最大的音视频设备个数
-#define USB_IMAGE_DEVICE  L"{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}" //Audio and video devices 类GUID
-#define USB_MEDIA_DEVICE  L"{4D36E96C-E325-11CE-BFC1-08002BE10318}" //Cameras and scanners 类GUID
-#define NEWUSB_IMAGE_DEVICE  L"{CA3E7AB9-B4C3-4AE6-8251-579EF933890F}" //新增一类摄像头GUID,add zl 20190428
-
-
-#define  DETECT_TEMPLATE_MW21 "USB\\VID_04B4&PID_1234"   //MW21  SmartCardReader
-#define  DETECT_TEMPLATE_GD31 "USB\\VID_096E&PID_0005"   //GD31  SmartCardReader
-#define  DETECT_TEMPLATE_GD33 "USB\\VID_096E&PID_A010"   //GD33  HIDClass
-#define  DETECT_TEMPLATE_MW23 "USB\\VID_1483&PID_C007"   //MW23  HIDClass
-#define  DETECT_TEMPLATE_GD35 "USB\\VID_05E3&PID_0723"   //GD35
-
-#define  DETECT_TEMPLATE_TDR61_1 "USB\\VID_1780&PID_0490"   //TDR61
-#define  DETECT_TEMPLATE_TDR61_2 "USB\\VID_1780&PID_0491"   //TDR61
-#define  DETECT_TEMPLATE_TDR61_3 "USB\\VID_1780&PID_0492"   //TDR61
-#define  DETECT_TEMPLATE_TDR61_4 "USB\\VID_1780&PID_0493"   //TDR61
-#define  DETECT_TEMPLATE_FT62  "USB\\VID_096E&PID_0708"  //FT62
-#define  DETECT_TEMPLATE_WD63  "USB\\VID_163C&PID_0704"     //WD63
-
-// 增加三种新的OTP KEY类型 add by wr 20130731
-#define  DETECT_TEMPLATE_TDR81  "USB\\VID_1780&PID_049A"   //TDR81
-#define  DETECT_TEMPLATE_FT82  "USB\\VID_096E&PID_0310"    //FT82
-#define  DETECT_TEMPLATE_WD83  "USB\\VID_163C&PID_0708"    //WD83
-
-// 增加三种新的NFC KEY类型 add by wr 20150618
-#define  DETECT_TEMPLATE_TDR91  "USB\\VID_1780&PID_049B"    //TDR91
-#define  DETECT_TEMPLATE_WDC92  "USB\\VID_1EA8&PID_C005"    //WDC92
-#define  DETECT_TEMPLATE_WD93  "USB\\VID_163C&PID_0709"    //WD93
-
-// 增加三种新的一代KEY类型 add by wr 20160322
-#define  DETECT_TEMPLATE_FT24  "USB\\VID_096E&PID_031B"    //FT24
-// add by wr 20160328
-#define  DETECT_TEMPLATE_WD25  "USB\\VID_163C&PID_070A"    //WD25
-
-#define UKEY_NUMBER 19
-string g_UkeyIDList[UKEY_NUMBER]=
-{DETECT_TEMPLATE_MW21,
-DETECT_TEMPLATE_GD31,
-DETECT_TEMPLATE_GD33,
-DETECT_TEMPLATE_MW23,
-DETECT_TEMPLATE_GD35,
-DETECT_TEMPLATE_TDR61_1,
-DETECT_TEMPLATE_TDR61_2,
-DETECT_TEMPLATE_TDR61_3,
-DETECT_TEMPLATE_TDR61_4,
-DETECT_TEMPLATE_FT62,
-DETECT_TEMPLATE_WD63,
-DETECT_TEMPLATE_TDR81,
-DETECT_TEMPLATE_FT82,
-DETECT_TEMPLATE_WD83,
-DETECT_TEMPLATE_TDR91,
-DETECT_TEMPLATE_WDC92,
-DETECT_TEMPLATE_WD93,
-DETECT_TEMPLATE_FT24,
-DETECT_TEMPLATE_WD25};
-
-typedef struct 
-{
-	char cDeviceName[MAX_PATH];
-}DEVICE_INFO, *PDEVICE_INFO;
-
-DEVICE_INFO g_FixedAudioDeviceName[MAX_MEDIA_DEVICE_NUM] = {0};
-DEVICE_INFO g_FixedImageDeviceName[MAX_MEDIA_DEVICE_NUM] = {0};
-unsigned int g_FixedAudioDeviceNum = 0;
-unsigned int g_FixedImageDeviceNum = 0;
-
-GUID* StrToGUID(const WCHAR *guid_string)
-{
-	char buffer[64];
-	GUID* guid = (GUID*) buffer;
-	WCHAR	upperGuid[40+1]={0};
-	for (int i =0 ; i < 40+1; i++)
-	{
-		upperGuid[i] = guid_string[i];
-		if (upperGuid[i]>=L'a' && upperGuid[i]<=L'z')
-		{
-			upperGuid[i] += L'A' - L'a';
-		}
-	}
-
-	swscanf_s(upperGuid, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", 
-		&guid->Data1, 
-		&guid->Data2, 
-		&guid->Data3, 
-		&guid->Data4[0], 
-		&guid->Data4[1], 
-		&guid->Data4[2], 
-		&guid->Data4[3], 
-		&guid->Data4[4], 
-		&guid->Data4[5], 
-		&guid->Data4[6], 
-		&guid->Data4[7]);
-
-	return guid;
-}
-
-DWORD FindSubStr(const char* source, const char* target)
-{    
-	unsigned int i,j; 
-
-	if (strlen(source) < strlen(target))
-	{
-		return -1;
-	}
-
-	if (1 == strlen(source) 
-		&& 1== strlen(target)
-		&& source[0] == target[0])
-	{
-		return 0;
-	}
-
-	for (i = 0;i<=strlen(source)-strlen(target);i++)    
-	{        
-		if (source[i]==target[0])        
-		{            
-			for (j = 1;j<=strlen(target);j++)            
-			{                
-				if (source[i+j]!=target[j])                    
-					break;            
-			}
-
-			if ((j == strlen(target))
-				|| (j == strlen(target)+1))
-			{                
-				return i;                       
-			} 
-
-			j = 0;        
-		}    
-	}    
-
-	return -1;
-}
-
-//判断当前设备是否是内置音频设备,说明:实体启动时检测到得音频设备都认为是内置音频设备
-BOOL IsFixedMediaDevice(const char* pDeviceName)
-{
-	int nCount = g_FixedAudioDeviceNum;
-	for (int i=0; i<nCount; i++)
-	{
-		if (0 == strcmp(g_FixedAudioDeviceName[i].cDeviceName, pDeviceName))
-		{
-			return TRUE;
-		}
-	}
-
-	return FALSE;
-}
-
-BOOL IsFixedImageDevice(const char* pDeviceName)
-{
-	int nCount = g_FixedImageDeviceNum;
-	for (int i=0; i<nCount; i++)
-	{
-		if (0 == strcmp(g_FixedImageDeviceName[i].cDeviceName, pDeviceName))
-		{
-			return TRUE;
-		}
-	}
-
-	return FALSE;
-}
-
-//判断是否是高拍仪
-bool IsPortableScannerDetected(LPCTSTR strDeviceID, BOOL& bUpstairOne)
-{
-	//TODO: 根据良田和南天提供的设备标识名,判断插入的是否为高拍仪所有的摄像头
-	CSimpleStringA strDevice(strDeviceID);
-	bUpstairOne = FALSE;
-	LPCTSTR split = strrchr(strDeviceID, '#');
-	if(split != NULL) {
-		if(!strnicmp(split+1, "upcamera", strlen("upcamera"))) {
-			bUpstairOne = TRUE;
-			return true;
-		}
-		else if(!strnicmp(split+1, "downcamera", strlen("downcamera"))) {
-			return true;
-		}
-	}
-
-	return false;
-}
-
-//获取耳机个数
-unsigned int GetMediaDeviceNum()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	unsigned int nDeviceNum = 0;
-	GUID mediaGuid = *StrToGUID(L"{4D36E96C-E325-11CE-BFC1-08002BE10318}");//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&mediaGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return 0;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				nDeviceNum++;
-				DeviceIndex++;
-				Dbg("第[%d]个音视频设备,设备名[%s]",nDeviceNum, szName);
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					nDeviceNum++;
-					DeviceIndex++;
-					Dbg("第[%d]个音视频设备,设备描述名[%s]",nDeviceNum, szName);
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return nDeviceNum;
-}
-
-//获取摄像头个数
-//unsigned int GetImageDeviceNum()
-//{
-//	DWORD dwErrCode = ERROR_SUCCESS;
-//	unsigned int nDeviceNum = 0;
-//	GUID devcieGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-//
-//	HDEVINFO hDev = SetupDiGetClassDevs(&devcieGuid, NULL, NULL, DIGCF_PRESENT);
-//	if(INVALID_HANDLE_VALUE == hDev)
-//	{
-//		dwErrCode = GetLastError();
-//		return 0;
-//	}
-//
-//	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-//	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-//	SetupDiGetClassImageList(&_spImageData);
-//
-//	SP_DEVINFO_DATA DevInfo;
-//	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-//	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-//	DWORD DeviceIndex = 0;
-//
-//	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-//	{
-//		char szBuf[MAX_PATH] = {0};
-//		int wImageIdx = 0;
-//		short wItem = 0;
-//		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-//		{
-//			DeviceIndex++;
-//			continue;
-//		}
-//
-//		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-//		{
-//			char szName[MAX_PATH] = {0};		
-//
-//			//先获取获取设备名
-//			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_HARDWAREID, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-//			{
-//				nDeviceNum++;
-//				DeviceIndex++;
-//				Dbg("第[%d]个摄像头,设备名[%s]",nDeviceNum, szName);
-//				continue;
-//			}
-//			else
-//			{
-//				//如果无法获取设备名,则获取设备描述名
-//				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//				{
-//					nDeviceNum++;
-//					DeviceIndex++;
-//					Dbg("第[%d]个摄像头,设备描述名[%s]",nDeviceNum, szName);
-//					continue;
-//				}
-//			}	
-//		}
-//
-//		DeviceIndex++;
-//	}
-//
-//	SetupDiDestroyClassImageList(&_spImageData);
-//
-//	if(hDev)
-//	{
-//		SetupDiDestroyDeviceInfoList(hDev);
-//	}
-//
-//	return nDeviceNum;
-//}
-
-unsigned int GetImageDeviceNum()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	unsigned int nDeviceNum = 0;
-	GUID devcieGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&devcieGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return 0;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};		
-
-			//先获取获取设备名
-			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_HARDWAREID, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-			{
-				nDeviceNum++;
-				DeviceIndex++;
-				Dbg("第[%d]个摄像头,设备名[%s]",nDeviceNum, szName);
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					nDeviceNum++;
-					DeviceIndex++;
-					Dbg("第[%d]个摄像头,设备描述名[%s]",nDeviceNum, szName);
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	//add by zl 20190510,增加新一类外界摄像头支持
-	devcieGuid = *StrToGUID(NEWUSB_IMAGE_DEVICE);//Audio and video devices
-
-	hDev = SetupDiGetClassDevs(&devcieGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return 0;
-	}
-	
-	ZeroMemory(&_spImageData,sizeof(SP_CLASSIMAGELIST_DATA));
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	
-	DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};		
-
-			//先获取获取设备名
-			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_HARDWAREID, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-			{
-				nDeviceNum++;
-				DeviceIndex++;
-				Dbg("第[%d]个摄像头,设备名[%s]",nDeviceNum, szName);
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					nDeviceNum++;
-					DeviceIndex++;
-					Dbg("第[%d]个摄像头,设备描述名[%s]",nDeviceNum, szName);
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-
-	return nDeviceNum;
-}
-
-//获取高拍仪个数
-unsigned int GetPortableScannerNum()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	unsigned int nDeviceNum = 0;
-	GUID devcieGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&devcieGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return 0;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};		
-
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{				
-				BOOL bUpstair = FALSE;
-				if (IsPortableScannerDetected(szName, bUpstair))
-				{				
-					nDeviceNum++;
-					DeviceIndex++;
-					Dbg("第[%d]个高拍仪,FRIENDLYNAME[%s]",nDeviceNum, szName);
-					continue;
-				}											
-			}					
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return nDeviceNum;
-}
-
-//查找USB耳机
-BOOL FindNewMediaDevice(char** pDeviceName)
-{
-	if (NULL == pDeviceName)
-	{
-		return FALSE;
-	}
-
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID mediaGuid = *StrToGUID(L"{4D36E96C-E325-11CE-BFC1-08002BE10318}");//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&mediaGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-	
-			//先获取获取设备名
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				if (IsFixedMediaDevice(szName))
-				{
-					//如果是内置音频设备则继续找下一个
-					DeviceIndex++;
-					continue;
-				}
-				memcpy((void*)g_UsbHdsetName, szName, MAX_PATH);
-				memcpy(*pDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				break;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					if (IsFixedMediaDevice(szName))
-					{
-						//如果是内置音频设备则继续找下一个
-						DeviceIndex++;
-						continue;
-					}
-					memcpy((void*)g_UsbHdsetName, szName, MAX_PATH);
-					memcpy(*pDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					break;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找摄像头
-//BOOL FindNewImageDevice(char** pDeviceName)
-//{
-//	if (NULL == pDeviceName)
-//	{
-//		return FALSE;
-//	}
-//
-//	DWORD dwErrCode = ERROR_SUCCESS;
-//	BOOL bFind = FALSE;
-//	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-//
-//	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-//	if(INVALID_HANDLE_VALUE == hDev)
-//	{
-//		dwErrCode = GetLastError();
-//		return FALSE;
-//	}
-//
-//	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-//	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-//	SetupDiGetClassImageList(&_spImageData);
-//
-//	SP_DEVINFO_DATA DevInfo;
-//	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-//	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-//	DWORD DeviceIndex = 0;
-//
-//	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-//	{
-//		char szBuf[MAX_PATH] = {0};
-//		int wImageIdx = 0;
-//		short wItem = 0;
-//		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-//		{
-//			DeviceIndex++;
-//			continue;
-//		}
-//
-//		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-//		{
-//			char szName[MAX_PATH] = {0};
-//			char szFriendlyName[MAX_PATH] = {0};
-//
-//			//add by zl 20171109 如果是高拍仪,直接返回不处理
-//			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szFriendlyName, MAX_PATH - 1, 0))
-//			{
-//				BOOL bUpstair = FALSE;
-//				if (IsPortableScannerDetected(szFriendlyName, bUpstair))
-//				{
-//					DeviceIndex++;
-//					continue;
-//				}
-//			}
-//
-//			//先获取获取设备名
-//			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-//			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//			{
-//				if (IsFixedImageDevice(szName))
-//				{
-//					//如果是内置音频设备则继续找下一个
-//					DeviceIndex++;
-//					continue;
-//				}
-//
-//				memset((void*)g_UsbCameraName, 0, MAX_PATH);
-//				memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-//				memcpy(*pDeviceName, szName, MAX_PATH);
-//				bFind = TRUE;
-//				break;
-//			}
-//			else
-//			{
-//				//如果无法获取设备名,则获取设备描述名
-//				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//				{
-//					if (IsFixedImageDevice(szName))
-//					{
-//						//如果是内置音频设备则继续找下一个
-//						DeviceIndex++;
-//						continue;
-//					}
-//					memset((void*)g_UsbCameraName, 0, MAX_PATH);
-//					memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-//					memcpy(*pDeviceName, szName, MAX_PATH);
-//					bFind = TRUE;
-//					break;
-//				}
-//			}	
-//		}
-//
-//		DeviceIndex++;
-//	}
-//
-//	SetupDiDestroyClassImageList(&_spImageData);
-//
-//	if(hDev)
-//	{
-//		SetupDiDestroyDeviceInfoList(hDev);
-//	}
-//
-//	return bFind;
-//}
-
-//查找新的广角摄像头
-BOOL FindNewImageDevice(char** pDeviceName)
-{
-	if (NULL == pDeviceName)
-	{
-		return FALSE;
-	}
-
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-			char szFriendlyName[MAX_PATH] = {0};
-
-			//add by zl 20171109 如果是高拍仪,直接返回不处理
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szFriendlyName, MAX_PATH - 1, 0))
-			{
-				BOOL bUpstair = FALSE;
-				if (IsPortableScannerDetected(szFriendlyName, bUpstair))
-				{
-					DeviceIndex++;
-					continue;
-				}
-			}
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				if (IsFixedImageDevice(szName))
-				{
-					//如果是内置音频设备则继续找下一个
-					DeviceIndex++;
-					continue;
-				}
-
-				memset((void*)g_UsbCameraName, 0, MAX_PATH);
-				memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-				memcpy(*pDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				break;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					if (IsFixedImageDevice(szName))
-					{
-						//如果是内置音频设备则继续找下一个
-						DeviceIndex++;
-						continue;
-					}
-					memset((void*)g_UsbCameraName, 0, MAX_PATH);
-					memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-					memcpy(*pDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					break;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	if (bFind)
-	{
-		return TRUE;
-	}
-
-	//add by zl 20190510,增加新一类外界摄像头支持
-	deviceGuid = *StrToGUID(NEWUSB_IMAGE_DEVICE);//Audio and video devices
-
-	hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	ZeroMemory(&_spImageData, sizeof(SP_CLASSIMAGELIST_DATA));
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-			char szFriendlyName[MAX_PATH] = {0};
-
-			//add by zl 20171109 如果是高拍仪,直接返回不处理
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szFriendlyName, MAX_PATH - 1, 0))
-			{
-				BOOL bUpstair = FALSE;
-				if (IsPortableScannerDetected(szFriendlyName, bUpstair))
-				{
-					DeviceIndex++;
-					continue;
-				}
-			}
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				if (IsFixedImageDevice(szName))
-				{
-					//如果是内置音频设备则继续找下一个
-					DeviceIndex++;
-					continue;
-				}
-
-				memset((void*)g_UsbCameraName, 0, MAX_PATH);
-				memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-				memcpy(*pDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				break;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					if (IsFixedImageDevice(szName))
-					{
-						//如果是内置音频设备则继续找下一个
-						DeviceIndex++;
-						continue;
-					}
-					memset((void*)g_UsbCameraName, 0, MAX_PATH);
-					memcpy((void*)g_UsbCameraName, szName, MAX_PATH);
-					memcpy(*pDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					break;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找新的广角摄像头
-BOOL FindNewEwsCamera()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				if (IsFixedImageDevice(szName))
-				{
-					//如果是内置音频设备则继续找下一个
-					DeviceIndex++;
-					continue;
-				}
-
-				if (0 == _stricmp(szName, g_strEwsCameraID.GetData()))
-				{
-					bFind = TRUE;
-					break;
-				}
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					if (IsFixedImageDevice(szName))
-					{
-						//如果是内置音频设备则继续找下一个
-						DeviceIndex++;
-						continue;
-					}
-
-					if (0 == _stricmp(szName, g_strEwsCameraID.GetData()))
-					{
-						bFind = TRUE;
-						break;
-					}
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找指定的USB耳机
-BOOL FindMyMediaDevice(const char* pDeviceName)
-{
-	if (NULL == pDeviceName)
-	{
-		return FALSE;
-	}
-
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID mediaGuid = *StrToGUID(L"{4D36E96C-E325-11CE-BFC1-08002BE10318}");//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&mediaGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				if (0 == strcmp(pDeviceName, (const char*)szName))
-				{
-					bFind = TRUE;	
-				}		
-				
-				break;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					if (0 == strcmp(pDeviceName, (const char*)szName))
-					{
-						bFind = TRUE;	
-					}
-
-					break;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找指定的摄像头
-BOOL FindMyImageDevice(const char* pDeviceName)
-{
-	if (NULL == pDeviceName)
-	{
-		Dbg("pDeviceName is null");
-		return FALSE;
-	}
-
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		Dbg("SetupDiGetClassDevs failed");
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			Dbg("SetupDiGetDeviceRegistryPropertyA failed");
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				Dbg("DeviceInstanceId[%s]",szName);
-				if (0 == strcmp(pDeviceName, (const char*)szName))
-				{
-					bFind = TRUE;
-					break;
-				}					
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					Dbg("SPDRP_DEVICEDESC[%s]",szName);
-					if (0 == strcmp(pDeviceName, (const char*)szName))
-					{
-						bFind = TRUE;
-						break;
-					}					
-				}
-				else
-				{
-					Dbg("找不到此设备示例ID和设备描述名");
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	if (bFind)
-	{
-		return TRUE;
-	}
-
-	//add by zl 20190510,增加新一类外界摄像头支持
-	deviceGuid = *StrToGUID(NEWUSB_IMAGE_DEVICE);//Audio and video devices
-
-	hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		Dbg("SetupDiGetClassDevs failed");
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	ZeroMemory(&_spImageData, sizeof(SP_CLASSIMAGELIST_DATA));
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			Dbg("SetupDiGetDeviceRegistryPropertyA failed");
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				Dbg("DeviceInstanceId[%s]",szName);
-				if (0 == strcmp(pDeviceName, (const char*)szName))
-				{
-					bFind = TRUE;
-					break;
-				}					
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					Dbg("SPDRP_DEVICEDESC[%s]",szName);
-					if (0 == strcmp(pDeviceName, (const char*)szName))
-					{
-						bFind = TRUE;
-						break;
-					}					
-				}
-				else
-				{
-					Dbg("找不到此设备示例ID和设备描述名");
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找内置音频设备
-BOOL FindFixedMediaDevice()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID mediaGuid = *StrToGUID(L"{4D36E96C-E325-11CE-BFC1-08002BE10318}");//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&mediaGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				g_FixedAudioDeviceNum++;
-				memcpy((void*)g_FixedAudioDeviceName[g_FixedAudioDeviceNum-1].cDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				DeviceIndex++;
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					g_FixedAudioDeviceNum++;
-					memcpy((void*)g_FixedAudioDeviceName[g_FixedAudioDeviceNum-1].cDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					DeviceIndex++;
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找内置摄像头
-BOOL FindFixedImageDevice()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-
-	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				g_FixedImageDeviceNum++;
-				memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				DeviceIndex++;
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					g_FixedImageDeviceNum++;
-					memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					DeviceIndex++;
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	//add by zl 20190510,增加新一类外界摄像头支持
-	deviceGuid = *StrToGUID(NEWUSB_IMAGE_DEVICE);//Audio and video devices
-
-	hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	ZeroMemory(&_spImageData, sizeof(SP_CLASSIMAGELIST_DATA));
-	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-	SetupDiGetClassImageList(&_spImageData);
-
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-		{
-			DeviceIndex++;
-			continue;
-		}
-
-		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-		{
-			char szName[MAX_PATH] = {0};
-
-			//先获取获取设备名
-			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-				//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-			{
-				g_FixedImageDeviceNum++;
-				memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-				bFind = TRUE;
-				DeviceIndex++;
-				continue;
-			}
-			else
-			{
-				//如果无法获取设备名,则获取设备描述名
-				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-				{
-					g_FixedImageDeviceNum++;
-					memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-					bFind = TRUE;
-					DeviceIndex++;
-					continue;
-				}
-			}	
-		}
-
-		DeviceIndex++;
-	}
-
-	SetupDiDestroyClassImageList(&_spImageData);
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//BOOL FindFixedImageDevice()
-//{
-//	DWORD dwErrCode = ERROR_SUCCESS;
-//	BOOL bFind = FALSE;
-//	GUID deviceGuid = *StrToGUID(USB_IMAGE_DEVICE);//Audio and video devices
-//
-//	HDEVINFO hDev = SetupDiGetClassDevs(&deviceGuid, NULL, NULL, DIGCF_PRESENT);
-//	if(INVALID_HANDLE_VALUE == hDev)
-//	{
-//		dwErrCode = GetLastError();
-//		return FALSE;
-//	}
-//
-//	SP_CLASSIMAGELIST_DATA _spImageData = {0};
-//	_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);
-//	SetupDiGetClassImageList(&_spImageData);
-//
-//	SP_DEVINFO_DATA DevInfo;
-//	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-//	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-//	DWORD DeviceIndex = 0;
-//
-//	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-//	{
-//		char szBuf[MAX_PATH] = {0};
-//		int wImageIdx = 0;
-//		short wItem = 0;
-//		if (!SetupDiGetDeviceRegistryPropertyA(hDev, &DevInfo, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))
-//		{
-//			DeviceIndex++;
-//			continue;
-//		}
-//
-//		if (SetupDiGetClassImageIndex(&_spImageData, &DevInfo.ClassGuid, &wImageIdx))
-//		{
-//			char szName[MAX_PATH] = {0};
-//
-//			//先获取获取设备名
-//			if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-//			//if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//			{
-//				g_FixedImageDeviceNum++;
-//				memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-//				bFind = TRUE;
-//				DeviceIndex++;
-//				continue;
-//			}
-//			else
-//			{
-//				//如果无法获取设备名,则获取设备描述名
-//				if (SetupDiGetDeviceRegistryProperty(hDev,&DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0))
-//				{
-//					g_FixedImageDeviceNum++;
-//					memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum-1].cDeviceName, szName, MAX_PATH);
-//					bFind = TRUE;
-//					DeviceIndex++;
-//					continue;
-//				}
-//			}	
-//		}
-//
-//		DeviceIndex++;
-//	}
-//
-//	SetupDiDestroyClassImageList(&_spImageData);
-//
-//	if(hDev)
-//	{
-//		SetupDiDestroyDeviceInfoList(hDev);
-//	}
-//
-//	return bFind;
-//}
-
-//查找被拔出的摄像头
-BOOL FindOutputImageDevice(char* pDeviceName)
-{
-	if (NULL == pDeviceName)
-	{
-		return FALSE;
-	}
-
-	for (unsigned int i=0; i<g_FixedImageDeviceNum; i++)
-	{
-		if (FindMyImageDevice(g_FixedImageDeviceName[i].cDeviceName))
-		{
-			continue;
-		}
-		else
-		{
-			memcpy(pDeviceName,g_FixedImageDeviceName[i].cDeviceName,MAX_PATH);
-			return TRUE;
-		}
-	}
-
-	return FALSE;
-}
-
-//检测是否插入专业版UKEY
-BOOL FindUkey()
-{
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-	HDEVINFO hDev = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		Dbg("SetupDiGetClassDevs failed");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_UKEY,
-			GetOutPutStr("%s%d","SetupDiGetClassDevs",hDev).c_str());
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		char szName[MAX_PATH] = {0};
-
-		//获取获取设备示例ID
-		if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-		{
-			//Dbg("DeviceInstanceId[%s]",szName);
-			for (int i=0; i<UKEY_NUMBER; i++)
-			{
-				if (-1 != FindSubStr(szName, g_UkeyIDList[i].c_str()))
-				{
-					Dbg("find UKey[%s]",g_UkeyIDList[i].c_str());
-					string DebugInfoStr = "find u key,id is" + g_UkeyIDList[i] + ".";
-					memset((void*)g_UkeyName, 0, MAX_PATH);
-					memcpy((void*)g_UkeyName, szName, MAX_PATH);
-
-					if(hDev)
-					{
-						SetupDiDestroyDeviceInfoList(hDev);
-					}
-
-					return TRUE;
-				}
-			}		
-		}
-		else
-		{			
-			Dbg("找不到此USB设备的实例ID");
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_UKEY_GET_INSTANCEID,
-				GetOutPutStr("%s%s", "SetupDiGetDeviceInstanceId", "False").c_str());
-		}	
-
-		DeviceIndex++;
-	}
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-//查找指定的专业版UKEY
-BOOL FindTheUkey(const char* pUkeyID)
-{
-	if (NULL == pUkeyID)
-	{
-		Dbg("pUkeyID is null");
-		LogWarn(Severity_Low,Error_Unexpect,ERR_MAINTAINWATCHER_THE_UKEY,
-			GetOutPutStr("%s%s", "pUkeyID", "NULL").c_str());
-		return FALSE;
-	}
-	DWORD dwErrCode = ERROR_SUCCESS;
-	BOOL bFind = FALSE;
-
-	HDEVINFO hDev = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES);
-	if(INVALID_HANDLE_VALUE == hDev)
-	{
-		Dbg("SetupDiGetClassDevs failed");
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_THE_UKEY, 
-			GetOutPutStr("%s%d", "SetupDiGetClassDevs", hDev).c_str());
-		dwErrCode = GetLastError();
-		return FALSE;
-	}
-
-	SP_DEVINFO_DATA DevInfo;
-	ZeroMemory(&DevInfo, sizeof(SP_DEVINFO_DATA));
-	DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
-	DWORD DeviceIndex = 0;
-
-	while(SetupDiEnumDeviceInfo(hDev, DeviceIndex, &DevInfo))
-	{
-		char szBuf[MAX_PATH] = {0};
-		int wImageIdx = 0;
-		short wItem = 0;
-		char szName[MAX_PATH] = {0};
-
-		//获取获取设备示例ID
-		if(SetupDiGetDeviceInstanceId(hDev,&DevInfo,szName,MAX_PATH - 1,NULL))
-		{
-			//Dbg("DeviceInstanceId[%s]",szName);
-			if (-1 != FindSubStr(szName, pUkeyID))
-			{
-				Dbg("find the UKey[%s]",pUkeyID);
-				bFind = TRUE;
-				break;
-			}	
-		}
-		else
-		{			
-			Dbg("找不到此USB设备的实例ID");
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_THE_UKEY_GET_INSTANCEID,
-				GetOutPutStr("%s%s", "SetupDiGetDeviceInstanceId", "False").c_str());
-		}	
-
-		DeviceIndex++;
-	}
-
-	if(hDev)
-	{
-		SetupDiDestroyDeviceInfoList(hDev);
-	}
-
-	return bFind;
-}
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-	int i = 0;
-	unsigned int uiDeviceNum = 0;
-	unsigned int uiCameraNum = 0;
-	char szMessage[128] = {0};	
-	char* pName = new char[MAX_PATH];
-	char* pAudioName = new char[MAX_PATH];
-	memset(pName, 0, MAX_PATH);
-	memset(pAudioName, 0, MAX_PATH);
-	sprintf(szMessage, "message=%d\n", message);
-	OutputDebugString(szMessage);
-
-	switch (message) 
-	{
-	case WM_DESTROY:
-		PostQuitMessage(0);
-		break;
-	case WM_DEVICECHANGE:
-		{
-			switch(wParam)
-			{
-			case DBT_DEVICEARRIVAL:
-				{
-					Sleep(1000);
-					g_USBStatus = USB_INSERT;
-					LogEvent(Severity_Middle, EVENT_USB_INSERT, "USB insert");
-					Dbg("检测到USB设备插入.");
-					
-					//把广角摄像头当做一个内置摄像头
-					if (1 == g_nSurveillanceRecordAllowed)
-					{
-						//
-						if (g_strEwsCameraID.GetLength() < 1)
-						{
-							Dbg("Root.ini没有配置广角摄像头实例ID!");	
-						}
-						else if (!g_FindEwsCamera)
-						{	
-							if (FindNewEwsCamera())
-							{
-								g_FindEwsCamera = TRUE;
-								LogEvent(Severity_Middle, EVENT_USB_CAMERA_INPUT,  g_strEwsCameraID.GetData());
-								Dbg("广角摄像头:[%s]插入", g_strEwsCameraID);
-
-								memcpy((void*)g_FixedImageDeviceName[g_FixedImageDeviceNum].cDeviceName, g_strEwsCameraID.GetData(), g_strEwsCameraID.GetLength());
-								g_FixedImageDeviceNum++;
-								break;
-							}																					
-						}
-					}
-
-
-					//TODO:当前摄像头个数小于2时(只是两个内置摄像头),处于异常,要求重启框架
-					uiCameraNum = GetImageDeviceNum();
-					if (uiCameraNum > g_FixedImageDeviceNum + 1)
-					{
-						//add by zl 20171109 获取高拍仪个数,允许同时插入普通外接摄像头和高拍仪,且支持同时插入多个高拍仪
-						int nPortableScannerNum = GetPortableScannerNum();
-						int nNewScannerNum = uiCameraNum - g_FixedImageDeviceNum - nPortableScannerNum;
-						if (nNewScannerNum > 1)
-						{
-							//如果当前找到的摄像头个数>实体启动时找到的摄像头个数+高拍仪个数+1
-							//说明系统识别到了非USB接口的摄像头,不支持处理这种异常情况
-							//打印当前找到的摄像头名称和个数
-							Dbg("系统识别[%d]个外接摄像头,系统只支持1个,请全部拔出,并重新插入唯一设备!",uiCameraNum-g_FixedImageDeviceNum-nPortableScannerNum);
-							LogEvent(Severity_Middle, EVENT_USB_CAMERA_NOT_ONLY, "Not only");
-							//MessageBox(0,"系统识别多个外接摄像头,系统只支持1个,请全部拔出,并重新插入唯一设备!",NULL,0);
-							break;
-						}
-						else if (0 == nNewScannerNum)
-						{
-							//如果只插入高拍仪,不处理直接返回
-							break;
-						}
-					}
-					else if (uiCameraNum < g_FixedImageDeviceNum)
-					{
-						//实体启动时插入了非USB外接摄像头,在此刻插入USB摄像头之前已经拔出
-						//此情况此处不做特殊处理,在拔出设备时,会刷新内置摄像头列表
-						Dbg("系统识别[%d]个摄像头,少于内置摄像头个数[%d]!",uiDeviceNum, g_FixedAudioDeviceNum);		
-					}
-
-					if (!g_FindUsbCamera)
-					{						
-						if (FindNewImageDevice(&pName))
-						{
-							g_FindUsbCamera = TRUE;
-							LogEvent(Severity_Middle, EVENT_USB_CAMERA_INPUT, pName);
-							Dbg("摄像头:[%s]插入",pName);
-							//找到摄像头后,不再查找音频设备
-							break;
-						}
-					}									
-				}
-				break;
-			case DBT_DEVICEREMOVECOMPLETE:
-				{
-					Sleep(100);
-					g_USBStatus = USB_PULLOUT;
-					LogEvent(Severity_Middle, EVENT_USB_OUTPUT, "USB output");
-					Dbg("检测到USB设备拔出.");
-
-					//广角摄像头当做内置摄像头处理
-					if (g_FindEwsCamera)
-					{
-						if (!FindMyImageDevice(g_strEwsCameraID.GetData()))
-						{
-							g_FindEwsCamera = FALSE;
-							LogEvent(Severity_Middle, EVENT_USB_CAMERA_OUTPUT, g_strEwsCameraID.GetData());
-							Dbg("广角摄像头:[%s]拔出\n",g_strEwsCameraID);
-
-							//从内置摄像头列表中去掉广角摄像头													
-							DEVICE_INFO newFixedImageDeviceName[MAX_MEDIA_DEVICE_NUM] = {0};
-							int newCount = 0;
-							for (unsigned int i=0;i<g_FixedImageDeviceNum;i++)
-							{								
-								if (-1 == FindSubStr(g_FixedImageDeviceName[i].cDeviceName,g_strEwsCameraID.GetData()))
-								{
-									memcpy((void*)newFixedImageDeviceName[newCount].cDeviceName, g_FixedImageDeviceName[i].cDeviceName, MAX_PATH);
-									newCount++;
-								}
-
-								memset(g_FixedImageDeviceName[i].cDeviceName, 0, MAX_PATH);
-							}
-
-							Dbg("拔出广角摄像头,刷新后的内置摄像头列表:");
-							for (unsigned int i=0;i<newCount;i++)
-							{
-								memcpy((void*)g_FixedImageDeviceName[i].cDeviceName, newFixedImageDeviceName[i].cDeviceName, MAX_PATH);
-								Dbg("内置摄像头:[%s]",g_FixedImageDeviceName[i].cDeviceName);
-							}
-
-							g_FixedImageDeviceNum--;
-							break;
-						}
-					}
-
-					uiCameraNum = GetImageDeviceNum();
-					if (uiCameraNum < g_FixedImageDeviceNum)
-					{
-						//如果当前的音频设备个数小于实体启动时发现的摄像头个数
-						//则认为实体启动时已经插入外接的摄像头,此时已经拔出,需刷新内置摄像头列表
-						Dbg("当前识别到的摄像头个数[%d]小于实体启动时识别到的摄像头个数[%d]",uiCameraNum, g_FixedImageDeviceNum);
-						Dbg("说明实体启动时已经插入了外接的摄像头,此时拔出该外接摄像头。准备刷新内置摄像头列表");
-
-						//找到被拔出的这个摄像头
-						char* poutName = new char[MAX_PATH];
-						memset(poutName, 0, MAX_PATH);
-						if(FindOutputImageDevice(poutName))
-						{
-							LogEvent(Severity_Middle, EVENT_USB_CAMERA_OUTPUT, poutName);
-							Dbg("摄像头:[%s]拔出\n",poutName);
-						}
-
-						if (NULL != poutName)
-						{
-							delete poutName;
-							poutName = NULL;
-						}
-
-						//清空
-						g_FixedImageDeviceNum = 0;						
-						for (i=0; i<MAX_MEDIA_DEVICE_NUM; i++)
-						{
-							memset((void*)g_FixedImageDeviceName[i].cDeviceName, 0, MAX_PATH);
-						}
-
-						//刷新
-						if (!FindFixedImageDevice())
-						{							
-							break;
-						}
-						else
-						{
-							Dbg("刷新后的内置摄像头列表:");
-							for (unsigned int i=0;i<g_FixedImageDeviceNum;i++)
-							{
-								Dbg("内置摄像头:[%s]",g_FixedImageDeviceName[i].cDeviceName);
-							}
-						}
-					}
-					else if (uiCameraNum > g_FixedImageDeviceNum)
-					{
-						//add by zl 20171109 获取高拍仪个数,允许同时插入普通外接摄像头和高拍仪,且支持同时插入多个高拍仪
-						int nPortableScannerNum = GetPortableScannerNum();
-						int nScannerNum = uiCameraNum - g_FixedImageDeviceNum - nPortableScannerNum;
-						if (nScannerNum > 1)
-						{
-							//如果当前的摄像头个数大于实体启动时发现的摄像头个数
-							//则认为实体启动后,系统自动识别到新的非USB摄像头
-							//此情况此处不做特殊处理,在下一次插入USB设备时,会弹出错误提示
-							//int nInNum = uiCameraNum - g_FixedImageDeviceNum;
-							Dbg("系统仍识别[%d]个外接摄像头!",nScannerNum);	
-							break;//add by zl 20160705,电子钥匙插拔时,会进入此处
-						}					
-					}
-					else
-					{
-						Dbg("g_FixedImageDeviceNum=uiCameraNum");
-					}
-
-					if (g_FindUsbCamera)
-					{
-						if (!FindMyImageDevice(g_UsbCameraName))
-						{
-							g_FindUsbCamera = FALSE;
-
-							LogEvent(Severity_Middle, EVENT_USB_CAMERA_OUTPUT, g_UsbCameraName);
-							Dbg("摄像头:[%s]拔出\n",g_UsbCameraName);
-						}
-					}				
-				}
-				break;
-			}
-		}
-		break;
-	default:
-		return DefWindowProc(hWnd, message, wParam, lParam);
-	}
-
-	if (NULL != pName)
-	{
-		delete pName;
-	}
-
-	return 0;
-}
-
-DWORD WINAPI DetectThreadFunc(LPVOID ready)
-{
-	char	szClassName[256]	= {'c','g','b',0};
-	SYSTEMTIME st;
-	GetLocalTime(&st);
-	srand(GetTickCount());
-	sprintf_s((char *)&(szClassName[3]),250,"%d%d%d%d%d%d",rand(),rand(),st.wMinute,st.wSecond,st.wMilliseconds,GetTickCount());
-
-	MSG msg;
-
-	WNDCLASSEX wcex = {0};
-
-	wcex.cbSize = sizeof(WNDCLASSEX); 
-	wcex.style			= CS_HREDRAW | CS_VREDRAW;
-	wcex.lpfnWndProc	= (WNDPROC)WndProc;
-	wcex.lpszClassName	= szClassName;/*"GDB_DETECT_WINDOW";*/
-
-	ATOM a = RegisterClassEx(&wcex);
-
-	if (a == 0)
-	{
-		//WRITE_INFORMATION_LOG("Error::DetectThreadFun!!!RegisterClassEx!!!!!!!!!!!!!!Start--%d--",GetLastError());
-	}
-	else
-	{
-		//WRITE_INFORMATION_LOG("DetectThreadFunc!!!RegisterClassEx!!!!!!!!!!!!!Start--%d--",GetLastError());
-	}
-
-
-	hDetectWnd = CreateWindow(szClassName, "", WS_OVERLAPPEDWINDOW,
-		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL);
-
-	HideCaret(hDetectWnd);
-	SetEvent((HANDLE)ready);
-
-	if(hDetectWnd)
-	{
-		while (GetMessage(&msg, NULL, 0, 0)) 
-		{
-			if (!TranslateAccelerator(msg.hwnd, NULL, &msg)) 
-			{
-				TranslateMessage(&msg);
-				DispatchMessage(&msg);
-			}
-		}
-	}
-
-	return 0;
-}
-
-bool RegisterDetector()
-{
-	hDetectMutex = CreateMutex(0, TRUE, "CMBDETECTOR");
-
-	if (hDetectMutex == NULL)
-	{
-		//WRITE_INFORMATION_LOG("CreateMutex fail %08x.\n", GetLastError());
-		return false;
-	}
-
-	if (GetLastError() == ERROR_ALREADY_EXISTS)
-	{
-		CloseHandle(hDetectMutex);
-		hDetectMutex = NULL;
-		////WRITE_INFORMATION_LOG("Detector exists.\n");
-		return false;
-	}
-
-	DWORD ThreadId;
-	HANDLE ready = CreateEvent(0,0,0,0);
-	hDetectThread = CreateThread(NULL,0,DetectThreadFunc,ready,0,&ThreadId);
-
-	WaitForSingleObject(ready,-1);
-
-	if (hDetectWnd == NULL)
-	{
-		//WRITE_INFORMATION_LOG("Create window fail %08x.\n", GetLastError());
-		CloseHandle(hDetectMutex);
-		hDetectMutex = NULL;
-		return false;
-	}
-
-	DEV_BROADCAST_DEVICEINTERFACE devBroadcastDevIF = {0};
-	devBroadcastDevIF.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
-	devBroadcastDevIF.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
-	devBroadcastDevIF.dbcc_reserved = 0;
-	devBroadcastDevIF.dbcc_classguid = *StrToGUID(L"{A5DCBF10-6530-11D2-901F-00C04FB951ED}");
-	//devBroadcastDevIF.dbcc_classguid = *StrToGUID(L"{4D36E96C-E325-11CE-BFC1-08002BE10318}");
-
-	DWORD flag = DEVICE_NOTIFY_WINDOW_HANDLE;
-
-	//if (!g_IsWin2K)
-	//{
-	//	flag |= DEVICE_NOTIFY_ALL_INTERFACE_CLASSES;
-	//}
-
-	hDevNotify = RegisterDeviceNotification( 
-		hDetectWnd,
-		&devBroadcastDevIF,
-		flag
-		);
-
-	if (hDevNotify == NULL)
-	{
-		SendMessage(hDetectWnd,WM_CLOSE,0,0);
-		if (hDetectThread)
-		{
-			WaitForSingleObject(hDetectThread,-1);
-		}
-		hDetectThread = NULL;
-		hDetectWnd = NULL;
-
-		//WRITE_INFORMATION_LOG("RegisterDeviceNotification fail %08x.\n", GetLastError());
-		CloseHandle(hDetectMutex);
-		hDetectMutex = NULL;
-		return false;
-	}
-
-	//WRITE_INFORMATION_LOG("RegisterDeviceNotification succeed.\n");
-	return true;
-}
-
-void InitializeDetector(PVOID pWnd)
-{
-	RegisterDetector();
-}
-
-void UninitializeDetector(PVOID pWnd)
-{
-	if (hDevNotify)
-	{
-		UnregisterDeviceNotification(hDevNotify);
-		hDevNotify = NULL;
-	}
-
-	if (hDetectWnd)
-	{
-		SendMessage(hDetectWnd,WM_CLOSE,0,0);
-		if (hDetectThread)
-		{
-			WaitForSingleObject(hDetectThread,-1);
-		}
-		hDetectThread = NULL;
-		hDetectWnd = NULL;
-	}
-
-	if (hDetectMutex)
-	{
-		CloseHandle(hDetectMutex);
-		hDetectMutex = NULL;
-	}
-}
-
-struct callback_entry : public IReleasable
-{
-	virtual ~callback_entry() {}
-	CSimpleStringA EntityName;
-	union {
-		void *pRawData;
-		int state;
-	};
-	int op;
-	ErrorCodeEnum ErrorResult;
-};
-
-struct GuidUSBTask : public ITaskSp
-{
-	ConsoleFSM* fsm;
-
-	GuidUSBTask(ConsoleFSM* f) : fsm(f) {}
-
-	void Process()
-	{	
-		USBKEY_INFO info;
-		unsigned count = 0;
-		DWORD dwRet = DONGLE_SUCCESS;
-		BOOL bRet = FALSE;
-
-		while (1)
-		{
-			if (USB_INSERT == g_USBStatus)
-			{					
-				memset(&g_USBKeyInfo, 0, sizeof(DONGLE_INFO));			
-				dwRet = FindUsbKey(&g_USBKeyInfo, &count);
-				if (dwRet == DONGLE_SUCCESS)
-				{
-					if (!g_FindKey)
-					{
-						g_FindKey = TRUE;
-						fsm->PostEventFIFO(new FSMEvent(USER_EVT_JMP_UKEYINSERT));		
-					}
-				}
-
-				//如果是大机,检测是否专业版Ukey插入
-				if (!g_FindUkey)
-				{
-					if (FindUkey())
-					{
-						g_FindUkey = TRUE;
-						LogEvent(Severity_Middle, EVENT_UKEY_INSERT, "Ukey insert");
-						
-						TheUkeyInsert e ={};
-						SpSendBroadcast(fsm->GetFunction(), eMsg_TheUkeyInsert, eMsgSig_TheUkeyInsert, e);
-						Dbg("UKey[%s]插入",g_UkeyName);
-					}
-				}
-
-				g_USBStatus = 0;
-			}
-			else if (USB_PULLOUT == g_USBStatus)
-			{				
-				memset(&info, 0, sizeof(DONGLE_INFO));			
-				dwRet = FindUsbKey(&info, &count);
-				if (dwRet != DONGLE_SUCCESS)
-				{
-					if (g_FindKey)
-					{
-						g_FindKey = FALSE;
-						fsm->PostEventFIFO(new FSMEvent(USER_EVT_JMP_UKEYPULLOUT));		
-					}												
-				}
-
-				//检测是否专业版Ukey拔出
-				if (g_FindUkey)
-				{
-					if (!FindTheUkey(g_UkeyName))
-					{
-						g_FindUkey = FALSE;
-						LogEvent(Severity_Middle, EVENT_UKEY_OUTPUT, "Ukey output");
-
-						TheUkeyPullOut e ={};
-						SpSendBroadcast(fsm->GetFunction(), eMsg_TheUkeyPullOut, eMsgSig_TheUkeyPullOut, e);
-						Dbg("UKey[%s]拔出",g_UkeyName);
-						//如果是大机,拔出Ukey,关闭Gpio
-						if (0 != strcmp(fsm->m_strMachineType.GetData(), MACHINETYPE_PAD))
-						{
-							bRet = fsm->OpenGpio(FALSE);
-						}					
-					}
-				}
-
-				g_USBStatus = 0;
-			}
-
-			Sleep(50);
-		}
-	}
-};
-
-struct GuidVerifyTask : public ITaskSp
-{
-	ConsoleFSM* fsm;
-
-	GuidVerifyTask(ConsoleFSM* f) : fsm(f) {}
-
-	void Process()
-	{
-		while(1)
-		{
-			if (fsm->m_bVerifyPwd)
-			{
-				fsm->m_bVerifyPwd = FALSE;
-				//fsm->PostEventLIFO(new FSMEvent(USER_EVT_JMP_RELEASE));
-			}
-
-			Sleep(100);
-		}
-	}
-};
-
-ConsoleFSM::ConsoleFSM() : m_pConnection(NULL)
-{	
-	m_Handle = 0;
-	g_FindKey = FALSE;
-	g_FindUkey = FALSE;
-	g_bWorkingStatus = FALSE;
-	m_bVerifySuccess = FALSE;
-	m_nUkeyStatus = 0;
-	m_nCheckTerminalNo = 0;
-	m_nCheckMaintainTask = 0;
-	m_nVerifyBlackList = 1;
-	g_nSurveillanceRecordAllowed = 0;
-	g_strEwsCameraID = "";
-	m_strUIstate = "";
-	m_nSRState = 0;
-	m_strPwd.Clear();
-	m_errcode = 0;
-	m_bMenu = FALSE;
-	g_bErrStatus = FALSE;
-	m_bAns = FALSE;
-	m_bVerifyPwd = FALSE;
-	m_bInputpwdDlg = FALSE;
-	g_HasVerifyTask = FALSE;
-
-	memset(m_TaskStatus,'D',1);//初始状态设置为D
-	memset(m_USBKeyInitTime,0,20);
-	
-	m_RecordNum = 0;
-	memset(&g_USBKeyInfo, 0, sizeof(DONGLE_INFO));
-
-	m_pCardIssuerService = NULL;
-	m_pDeviceControlService = NULL;
-
-	for (int i=0; i<128; i++)
-	{
-		m_TaskRecords[i] = new TaskRecord();
-		memset(m_TaskRecords[i]->startTime, 0, 20);
-		memset(m_TaskRecords[i]->endTime, 0, 20);
-		m_TaskRecords[i]->strWarningId = "";
-	}
-
-	InitializeCriticalSection(&cs);
-}
-
-ConsoleFSM::~ConsoleFSM()
-{
-	for (int i=0; i<128; i++)
-	{
-		delete m_TaskRecords[i];
-	}
-
-	DeleteCriticalSection(&cs);
-}
-
-void ConsoleFSM::OnStateTrans( int iSrcState, int iDstState )
-{
-	Dbg("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
-}
-
-void ConsoleFSM::OnSysVarEvent( const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName )
-{
-}
-
-ErrorCodeEnum ConsoleFSM::OnInit()
-{
-	ErrorCodeEnum Error;
-	Error = LoadServerConfig();
-	if (Error != Error_Succeed) 
-	{
-		LOG_TRACE("load MaintainWatcher.ini failed!");
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_READ_CONFIG,
-			GetOutPutStr("%s%08X%s%s", "LoadServerConfig", Error,"File","MaintainWatcher.ini").c_str());
-	}
-
-	Error = LoadRootConfig();
-	if (Error != Error_Succeed) 
-	{
-		LOG_TRACE("load root.ini failed!");
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_READ_CONFIG,
-			GetOutPutStr("%s%08X%s%s", "LoadRootConfig", Error, "File", "root.ini").c_str());
-		return Error;
-	}
-
-	Error = LoadCenterConfig();
-	if (Error != Error_Succeed) 
-	{
-		//没有读到CenterSetting.ini中的CheckTerMinalNo项,不返回错误,默认为不校验终端ID
-		LOG_TRACE("load CenterSetting.ini failed!");
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_READ_CONFIG,
-			GetOutPutStr("%s%08X%s%s", "LoadCenterConfig", Error, "File", "CenterSetting.ini").c_str());
-		//return Error;
-	}	
-
-	Error = SetRunConfig();
-	if (Error_Succeed != Error) 
-	{
-		LOG_TRACE("set runcfg MaintainWatcher.ini failed!");
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_READ_CONFIG,
-			GetOutPutStr("%s%08X%s%s", "SetRunConfig", Error, "File", "MaintainWatcher.ini").c_str());
-	}
-
-	if (Error == Error_Succeed) 
-	{
-		AddStateHooker(this);
-	}
-	
-	//获取终端号
-	CSystemStaticInfo si;
-	m_pEntity->GetFunction()->GetSystemStaticInfo(si);
-	m_strTerminalId = si.strTerminalID;
-	Dbg("Get TerminalId=%s from root.ini",m_strTerminalId.c_str());
-	//创建证书目录
-	DWORD dwAttr=GetFileAttributes(CERT_DIR);  
-	if(dwAttr==0xFFFFFFFF)  //目录不存在则创建   
-	{
-		if(!CreateDirectory(CERT_DIR,NULL))
-		{
-			Dbg("Create cert dir failed!");
-			LogWarn(Severity_Low,Error_Unexpect,ERR_MAINTAINWATCHER_CREATE_DIR,
-				GetOutPutStr("%s%s%s%s", "CreateDirectory", "False", "Dir", CERT_DIR).c_str());
-		}
-	}
-	
-
-	//创建文件目录
-	char path[MAX_PATH];
-	GetSystemDirectory(path,MAX_PATH);	
-
-	string strRvcPath = path;
-	strRvcPath += ":\\RVC"; 
-	dwAttr=GetFileAttributes("C:\\RVC");  
-	if(dwAttr==0xFFFFFFFF)  //目录不存在则创建   
-	{
-		if(!CreateDirectory("C:\\RVC",NULL))
-		{
-			Dbg("Create C:\\RVC failed!");
-			LogWarn(Severity_Low,Error_Unexpect,ERR_MAINTAINWATCHER_CREATE_DIR,
-				GetOutPutStr("%s%s%s%s", "CreateDirectory", "False", "Dir", "C:\\RVC").c_str());
-		}
-	}
-
-	string strCertPath = path;
-	strCertPath += ":\\RVC\\UKey";
-	dwAttr=GetFileAttributes("C:\\RVC\\Ukey"); 
-	if(dwAttr==0xFFFFFFFF)  //目录不存在则创建   
-	{
-		if(!CreateDirectory("C:\\RVC\\Ukey",NULL))
-		{
-			Dbg("Create C:\\RVC\\Ukey failed!");
-			LogWarn(Severity_Low,Error_Unexpect, ERR_MAINTAINWATCHER_CREATE_DIR,
-				GetOutPutStr("%s%s%s%s", "CreateDirectory", "False", "Dir", "C:\\RVC\\Ukey").c_str());
-		}
-	}
-
-	GuidUSBTask* task2 = new GuidUSBTask(this);
-	GetEntityBase()->GetFunction()->PostThreadPoolTask(task2);
-
-	if (1)
-	{
-		FindFixedImageDevice();
-		Dbg("找到[%d]个摄像头 at OnInit",g_FixedImageDeviceNum);
-		for (unsigned int i=0;i<g_FixedImageDeviceNum;i++)
-		{
-			Dbg("摄像头:[%s]",g_FixedImageDeviceName[i].cDeviceName);
-		}
-
-		if (FindNewEwsCamera())
-		{
-			g_FindEwsCamera = TRUE;
-			LogEvent(Severity_Middle, EVENT_USB_CAMERA_INPUT,  g_strEwsCameraID.GetData());
-			Dbg("实体启动时,广角摄像头:[%s]插入", g_strEwsCameraID);
-		}	
-
-		//启动USB监控
-		InitializeDetector(NULL);
-	}
-
-	//下载根证书和CA证书	
-	Dbg("开始下载基本证书");
-	DownloadCerts();
-
-	Dbg("开始下载黑名单");
-	DownloadCertBlackList();
-	//......
-	return Error;
-}
-
-ErrorCodeEnum ConsoleFSM::OnExit()
-{
-	return Error_Succeed;
-}
-
-void ConsoleFSM::DownloadCerts()
-{
-	//下载根证书和CA证书
-	if (!m_pConnection) 
-	{
-		m_pConnection = new CAConnection(m_pEntity, this);
-		if (!m_pConnection->ConnectFromCentralSetting())
-		{
-			Dbg("connect server fail,config or Servers Error!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_DOWNLOAD_CERT, 
-				GetOutPutStr("%s%s", "ConnectFromCentralSetting", "False").c_str());
-		}
-	}
-
-	if (m_pConnection->IsConnectionOK())
-	{
-		EnterCriticalSection(&cs);
-		m_pConnection->SendVersionReq();
-		Dbg("send cert req success");
-		LeaveCriticalSection(&cs);
-	} 
-	else
-	{
-		Dbg("connect to CA server failed, can not download CA cert!");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_DOWNLOAD_CERT, 
-			GetOutPutStr("%s%s", "IsConnectionOK", "False").c_str());
-	}
-}
-
-void ConsoleFSM::DownloadCertBlackList()
-{
-	if (!m_pConnection) 
-	{
-		m_pConnection = new CAConnection(m_pEntity, this);
-		if (!m_pConnection->ConnectFromCentralSetting())
-		{
-			Dbg("connect server fail,config or Servers Error!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_DOWBLOAD_CERT_BLACKLIST,
-				GetOutPutStr("%s%s", "ConnectFromCentralSetting", "False").c_str());
-		}
-	}
-
-	if (m_pConnection->IsConnectionOK())
-	{
-		EnterCriticalSection(&cs);
-		m_pConnection->SendCertBlackListReq();
-		Dbg("Ask cert blackList req success");
-		LeaveCriticalSection(&cs);
-	} 
-	else
-	{
-		Dbg("connect to CA server failed, can not download cert blackList!");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_DOWBLOAD_CERT_BLACKLIST, 
-			GetOutPutStr("%s%s", "IsConnectionOK", "False").c_str());
-	}
-}
-
-BOOL ConsoleFSM::GetMenuStatus()
-{
-	//判断终端是否在业务界面首页,不在首页不弹出客户经理登录框				 
-	ErrorCodeEnum Error = GetEntityBase()->GetFunction()->GetSysVar("UIState",m_strUIstate);
-	if (Error_NotExist == Error) 
-	{
-		Dbg("UIState is not exist, errcode=%d!", Error);
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHERGET_UISTATE,
-			GetOutPutStr("%s%08X%s%s", "GetSysVar", Error,"UIState", m_strUIstate).c_str());
-
-		m_bMenu = TRUE;
-		return m_bMenu;
-	}
-	else if (Error_Succeed != Error)
-	{
-		Dbg("Get UIState failed, errcode=%d!", Error);
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHERGET_UISTATE,
-			GetOutPutStr("%s%08X%s%s", "GetSysVar", Error, "UIState", m_strUIstate).c_str());
-		m_bMenu = TRUE;
-		return m_bMenu;
-	}	
-	else
-	{
-		//Dbg("Get UIState success, m_strUIstate=%s!", m_strUIstate);
-		if ((-1 != FindSubStr(m_strUIstate, "M"))
-			|| (-1 != FindSubStr(m_strUIstate, "A"))
-			|| (-1 != FindSubStr(m_strUIstate, "T"))
-			|| (-1 != FindSubStr(m_strUIstate, "X")))
-		{
-			//界面状态UIState。定义当前交互层所处的交互模式。有8种状态:目录浏览M、随机广告A、目标广告T、业务填单F、交易确认C、业务提交S、请求回报R、暂停响应Z。初始状态为M。
-			//M、A、T三种状态都认为在首页
-			Dbg("首页状态!");
-			m_bMenu = TRUE;
-		}
-		else
-		{
-			//不在首页
-			Dbg("非首页状态!");
-			m_bMenu = FALSE;
-		}
-
-		return m_bMenu;
-	}
-}
-
-DWORD ConsoleFSM::VerifyUser(const char* pcPIN)
-{
-	if (NULL == pcPIN)
-	{
-		return INPUT_NULL_ERR;
-	}
-
-	USBKEY_INFO info;
-	unsigned count = 0;
-	DWORD dwRet = 0;
-	DONGLE_HANDLE hHandle;
-	CSimpleStringA errNum;
-
-	//找锁
-	dwRet = FindUsbKey(&info, &count);
-	if (DONGLE_SUCCESS != dwRet)
-	{	
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("没有检测到电子钥匙, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect,ERR_MAINTAINWATCHER_EKEY_VERIFY,
-			GetOutPutStr("%s%08X", "FindUsbKey", dwRet).c_str());
-		//MessageBoxA(NULL,(LPCSTR)("没有检测到电子钥匙,请插入电子钥匙!"),NULL,0);
-		return dwRet;
-	}
-
-	Dbg("检测到[%d]把电子钥匙!",count);
-
-	//打开锁
-	dwRet = OpenUsbKey(&hHandle,0);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("无法打开电子钥匙, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_EKEY_VERIFY,
-			GetOutPutStr("%s%08X", "OpenUsbKey", dwRet).c_str());
-		return dwRet;
-	}
-
-	m_Handle = hHandle;
-	Dbg("打开电子钥匙成功!");
-
-	//验证开发商PIN码
-	char PIN[9] = {0};
-	memcpy(PIN, pcPIN, 8);
-	char* upPIN =  _tcsupr(PIN);
-	dwRet = VerifyAdminPIN(hHandle, upPIN);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("电子钥匙密码错误, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_EKEY_VERIFY,
-			GetOutPutStr("%s%08X", "VerifyAdminPIN", dwRet).c_str());
-		return dwRet;
-	}
-	else
-	{
-		Dbg("验证电子钥匙密码成功!");
-	}
-
-	//读取根证书
-	int rootCertLen = 0;
-	dwRet = GetRootCaCertificateLength(hHandle, &rootCertLen);
-	if (DONGLE_SUCCESS == dwRet)
-	{
-		Dbg("获取根证书长度成功!");
-
-		BYTE* rootCertContent = new BYTE[rootCertLen];
-		if (NULL == rootCertContent)
-		{
-			return NEW_MEM_ERR;
-		}
-		memset(rootCertContent,0,rootCertLen);
-
-		dwRet = ReadRootCaCertificate(hHandle, rootCertContent, rootCertLen);
-		if (DONGLE_SUCCESS == dwRet)
-		{
-			Dbg("读根根证书成功!");
-			FILE* fp = fopen(ROOT_CERT_PATH, "w");
-			fwrite(rootCertContent, 1, rootCertLen, fp);
-			fclose(fp);
-			delete rootCertContent;
-		}	
-		else
-		{
-			errNum.Format("0x%08X", dwRet); 
-			Dbg("读根证书失败, errcode=%s", errNum);
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_ROOT_CERT,
-				GetOutPutStr("%s%08X", "ReadRootCaCertificate", dwRet).c_str());
-			delete rootCertContent;
-			return dwRet;
-		}
-	}
-	else
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("获取根证书长度失败, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_ROOT_CERT,
-			GetOutPutStr("%s%08X", "GetRootCaCertificateLength", dwRet).c_str());
-		return dwRet;
-	}
-
-	//读取分行CA证书
-	int subCaCertLen = 0;
-	dwRet = GetSubCaCertificateLength(hHandle, &subCaCertLen);
-	if (DONGLE_SUCCESS == dwRet)
-	{
-		Dbg("获取分行CA证书长度成功!");
-
-		BYTE* subCaCertContent = new BYTE[subCaCertLen];
-		if (NULL == subCaCertContent)
-		{
-			return NEW_MEM_ERR;
-		}
-
-		memset(subCaCertContent,0,subCaCertLen);
-		dwRet = ReadSubCaCertificate(hHandle, subCaCertContent, subCaCertLen);
-		if (DONGLE_SUCCESS == dwRet)
-		{
-			Dbg("读根分行CA证书成功!");
-			FILE* fp = fopen(CA_CERT_PATH, "w");
-			fwrite(subCaCertContent, 1, subCaCertLen, fp);
-			fclose(fp);
-			delete subCaCertContent;
-		}	
-		else
-		{
-			errNum.Format("0x%08X", dwRet); 
-			Dbg("读分行CA证书失败, errcode=%s", errNum);
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_BRANCH_CERT,
-				GetOutPutStr("%s%08X", "ReadSubCaCertificate", dwRet).c_str());
-			delete subCaCertContent;
-			return dwRet;
-		}
-	}
-	else
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("获取分行CA证书长度失败, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_BRANCH_CERT,
-			GetOutPutStr("%s%08X", "GetSubCaCertificateLength", dwRet).c_str());
-		return dwRet;
-	}
-
-	//读取Ukey中的用户证书
-	int userCertLen = 0;
-	dwRet = GetUserCertificateLength(hHandle, &userCertLen);
-	if (DONGLE_SUCCESS == dwRet)
-	{
-		Dbg("获取用户证书长度成功!");
-
-		BYTE* userCertContent = new BYTE[userCertLen];
-		if (NULL == userCertContent)
-		{
-			return NEW_MEM_ERR;
-		}
-		memset(userCertContent,0,userCertLen);
-
-		dwRet = ReadUserCertificate(hHandle, userCertContent, userCertLen);
-		if (DONGLE_SUCCESS == dwRet)
-		{
-			Dbg("读取用户证书成功!");
-			FILE* fp = fopen(USER_CERT_PATH, "w");
-			fwrite(userCertContent, 1, userCertLen, fp);
-			fclose(fp);
-			delete userCertContent;
-		}	
-		else
-		{
-			errNum.Format("0x%08X", dwRet); 
-			Dbg("读用户证书失败, errcode=%s", errNum);
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_USER_CERT,
-				GetOutPutStr("%s%08X", "ReadUserCertificate", dwRet).c_str());
-			delete userCertContent;
-			return dwRet;
-		}
-	}
-	else
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("获取用户证书长度失败, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_USER_CERT,
-			GetOutPutStr("%s%08X", "GetUserCertificateLength", dwRet).c_str());
-		return dwRet;
-	}
-
-	//获取证书认证类型
-	char cVerifyType[32] = {0};
-	bool bRet = GetVerifyTypeFromCert(USER_CERT_PATH, FORMAT_PEM, cVerifyType);
-	if (!bRet)
-	{
-		Dbg("获取证书类型失败!");
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_USER_CERT,
-			GetOutPutStr("%s%s", "GetVerifyTypeFromCert", "False").c_str());
-		return GET_CERT_CERTTYPE_ERR;
-	}
-
-	//判断认证类型
-	Dbg("电子钥匙类型:%s(Framework:框架认证,System:系统认证, admin:超级认证)", cVerifyType);
-	//删除此处判断,分行维护电子钥匙也能进入框架维护,add by zl80170228
-	/*if ((0 != strncmp(cVerifyType, "Framework", 9))
-	&& (0 != strncmp(cVerifyType, "admin", 5)))
-	{
-	Dbg("电子钥匙认证类型不具备框架认证权限!");
-	return GET_NO_FRAMEWORK_PERMIT_ERR;
-	}*/	
-
-	//验证用户证书
-	dwRet = VerifyUserCert(ROOT_CERT_PATH, CA_CERT_PATH, USER_CERT_PATH, NULL, FORMAT_PEM);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("验证用户证书失败, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_USER_CERT_VERIFY,
-			GetOutPutStr("%s%08X", "VerifyUserCert", dwRet).c_str());
-		return dwRet;
-	}
-
-	Dbg("验证用户证书成功!");
-
-	dwRet = VerifyTerminalInfo();
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		errNum.Format("0x%08X", dwRet); 
-		Dbg("验证任务信息失败, errcode=%s", errNum);
-		LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_TERMINAL_VERIFY,
-			GetOutPutStr("%s%08X", "VerifyTerminalInfo", dwRet).c_str());
-		return dwRet;
-	}
-
-	//校验证书时间,给出续期提醒,过期前15天开始提醒
-	dwRet = CheckCertVaildity();
-	if (SUCCESS != dwRet && OVERTTIMER_WAR != dwRet)
-	{
-		Dbg("CheckCertVaildity failed!");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CERT_VERIFY, 
-			GetOutPutStr("%s%08X", "CheckCertVaildity", dwRet).c_str());
-	}
-
-	return dwRet;
-}
-
-DWORD ConsoleFSM::VerifyOther()
-{
-	Dbg("enter VerifyOther");
-	m_bVerifyPwd = TRUE;	
-	
-	((0 == m_errcode) || (OVERTTIMER_WAR == m_errcode))? PostEventLIFO(new FSMEvent(USER_EVT_JMP_PWDSUCCESS)):PostEventLIFO(new FSMEvent(USER_EVT_JMP_PWDERR));
-	
-	return 0;
-}
-
-
-BOOL CALLBACK spEnumWindowsProc(HWND hwnd,LPARAM lParam)
-{
-	char title[300] = {0};
-
-	SendMessage(hwnd,WM_GETTEXT,256,(LPARAM)title);
-	if (_stricmp(title, "密码") == 0)
-	{
-		SendMessage(hwnd, WM_CLOSE, 0,0);
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-time_t Str2Timet(const string& ATime, const string& AFormat="%d-%d-%d")  
-{  
-	struct tm tm_Temp;  
-	time_t time_Ret;  
-	try 
-	{
-		int i = sscanf(ATime.c_str(), AFormat.c_str(),// "%d/%d/%d %d:%d:%d" ,       
-			&(tm_Temp.tm_year),   
-			&(tm_Temp.tm_mon),   
-			&(tm_Temp.tm_mday),  
-			&(tm_Temp.tm_hour),  
-			&(tm_Temp.tm_min),  
-			&(tm_Temp.tm_sec),  
-			&(tm_Temp.tm_wday),  
-			&(tm_Temp.tm_yday));  
-
-		tm_Temp.tm_year -= 1900;  
-		tm_Temp.tm_mon --;  
-		tm_Temp.tm_hour=0;  
-		tm_Temp.tm_min=0;  
-		tm_Temp.tm_sec=0;  
-		tm_Temp.tm_isdst = 0;
-		time_Ret = mktime(&tm_Temp);  
-		return time_Ret;  
-	} catch(...) {
-		return 0;
-	}
-} 
-string Timet2Str(const time_t &ATime_t, const string& AFormat="%d-%02d-%02d")
-{
-	char chRet[15];
-	string sRet;
-	struct tm *p;
-	try
-	{
-		p = localtime(&ATime_t);
-		p->tm_year = p->tm_year + 1900;
-		p->tm_mon = p->tm_mon + 1;
-		sprintf(chRet, AFormat.c_str(),
-			p->tm_year, p->tm_mon, p->tm_mday);
-		sRet = chRet;
-		return sRet;
-	} catch(...) {
-		return "";
-	}
-}
-time_t NowTime()
-{
-	time_t t_Now = time(0);
-	struct tm* tm_Now = localtime(&t_Now);
-	tm_Now->tm_hour =0;
-	tm_Now->tm_min = 0;
-	tm_Now->tm_sec = 0;
-	return  mktime(tm_Now);  
-}
-
-BOOL ConsoleFSM::GetTaskStatus(const char* pTaskID)
-{
-	//获取任务状态
-	if (!m_pConnection) 
-	{
-		m_pConnection = new CAConnection(m_pEntity, this);
-		if (NULL == m_pConnection)
-		{
-			Dbg("new CAConnection failed!");
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT,
-				GetOutPutStr("%s%s", "CAConnection", "NULL").c_str());
-			return FALSE;
-		}
-
-		if (!m_pConnection->ConnectFromCentralSetting())
-		{
-			Dbg("connect server fail,config or Servers Error!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT, 
-				GetOutPutStr("%s%s", "ConnectFromCentralSetting", "False").c_str());
-			return FALSE;
-		}
-	}
-
-	if (m_pConnection->IsConnectionOK())
-	{
-		EnterCriticalSection(&cs);
-		m_pConnection->SendTaskReq(pTaskID);		
-		LeaveCriticalSection(&cs);
-	} 
-	else
-	{
-		Dbg("connect to CA server failed, can not get <TaskID=%s> status!", pTaskID);
-		
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT, 
-			GetOutPutStr("%s%s%s%s", "IsConnectionOK", "False","GetTaskStatus",pTaskID).c_str());
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-//校验电子钥匙生命周期,超过3年提示更新硬件
-BOOL ConsoleFSM::CheckUSBKeyLife(const char* pUSBKeyID)
-{
-	//获取任务状态
-	if (!m_pConnection) 
-	{
-		m_pConnection = new CAConnection(m_pEntity, this);
-		if (NULL == m_pConnection)
-		{
-			Dbg("new CAConnection failed!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT, 
-				GetOutPutStr("%s%s%s%s", "CAConnection", "NULL","CheckUSBKeyLife", pUSBKeyID).c_str());
-			return FALSE;
-		}
-
-		if (!m_pConnection->ConnectFromCentralSetting())
-		{
-			Dbg("connect server fail,config or Servers Error!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT, 
-				GetOutPutStr("%s%s%s%s", "ConnectFromCentralSetting", "False", "CheckUSBKeyLife", pUSBKeyID).c_str());
-			return FALSE;
-		}
-	}
-
-	if (m_pConnection->IsConnectionOK())
-	{
-		EnterCriticalSection(&cs);
-		m_pConnection->SendUSBKeyInfoReq(pUSBKeyID);		
-		LeaveCriticalSection(&cs);
-	} 
-	else
-	{
-		Dbg("connect to CA server failed, can not get <USBKeyID=%s> info!", pUSBKeyID);
-
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CA_CONNECT,
-			GetOutPutStr("%s%s%s%s", "IsConnectionOK", "False", "CheckUSBKeyLife", pUSBKeyID).c_str());
-		return FALSE;
-	}
-
-	
-	time_t tNow = NowTime();
-
-	Dbg("电子钥匙第一次初始化时间[%s]", m_USBKeyInitTime);
-	time_t tUSBKeyInitTime = Str2Timet(m_USBKeyInitTime, "%4d%2d%2d%2d%2d%2d");
-
-	if (tUSBKeyInitTime >= tNow)
-	{
-		
-		string strNow = Timet2Str(tNow);
-		Dbg("电子钥匙第一次初始化时间[%s]大于机器当前时间[%s], 请确认当前VTM的系统时间是否正确!", m_USBKeyInitTime, strNow.c_str());
-		CString msg;
-		msg.Format(_T("电子钥匙第一次初始化时间[%s]大于机器当前时间[%s], 请确认当前VTM的系统时间是否正确!"),  m_USBKeyInitTime, strNow.c_str());
-		::MessageBox(NULL,msg, "提示",0);
-		return FALSE;
-	}
-	else
-	{
-		UINT nRestSecond = tNow - tUSBKeyInitTime;
-		UINT nRestDay = nRestSecond/(60*60*24);
-		if (nRestDay >= 365*3)
-		{
-			CString msg;
-			msg.Format(_T("电子钥匙硬件已超过使用期限(最长3年),剩余有效天数[%d],请及时更换新电子钥匙!"), nRestDay);
-			::MessageBox(NULL,msg, "提示",0);
-			Dbg("电子钥匙硬件已超过使用期限(最长3年),剩余有效天数[%d],请及时更换新电子钥匙!", nRestDay);
-			return TRUE;
-		}
-		
-	}
-
-	return TRUE;
-}
-
-//在线校验任务状态
-BOOL ConsoleFSM::VerifyTaskStatus(const char* pTaskID)
-{
-	//查询任务状态
-	BOOL bRet = GetTaskStatus(pTaskID);
-	//此处不判断返回值,如果获取不成功,则认为终端处于离线状态,返回任务状态校验成功
-	/*if (!bRet)
-	{
-		return FALSE;
-	}*/
-
-	Dbg("<TaskID=%s> status is <%c>!", pTaskID, m_TaskStatus[0]);
-	
-	if ('C' == m_TaskStatus[0])
-	{
-		Dbg("<TaskID=%s> is been closed!", pTaskID);
-		m_TaskStatus[0] = 'D';
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-DWORD ConsoleFSM::VerifyTerminalInfo()
-{
-	//获取用户信息,用于写入日志
-	BOOL bRet = GetUserInfo();
-	if (!bRet)
-	{
-		Dbg("GetUserInfo failed");
-		return GET_USERINFO_ERR;
-	}
-
-	string strUserType = "";
-	int nUserType = atoi(m_strUserType.c_str());
-
-	if (1 == m_nVerifyBlackList)
-	{
-		char ukeyID[100];
-		memset(ukeyID, 0, sizeof(ukeyID));
-		m_strKeyHID.copy(ukeyID, m_strKeyHID.length(), 0);
-		if (IsCertInBlack(ukeyID))
-		{
-			Dbg("CertUkeyID is in black List");
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_EKEY_VERIFY,
-				GetOutPutStr("%s%s", "IsCertInBlack", "True").c_str());
-			//MessageBox(0,"当前电子钥匙已被禁用,请更换其他电子钥匙!",NULL,0);
-			return IN_BLACKLIST_ERR;
-		}
-		else
-		{
-			Dbg("CertUkeyID is not in black List");
-		}
-	}
-
-	//只有维护和物料类型的电子钥匙需要验证终端任务信息
-	if (((USER_TYPE_MATERIAL_MANAGER == nUserType)&&(1 == m_nCheckTerminalNo))//物料管理类型电子钥匙是否校验任务,通过集中配置CheckTerminalNo开关控制
-		||((USER_TYPE_MAINTAIN == nUserType)&&(1 == m_nCheckMaintainTask)))//维护类型电子钥匙是否校验任务,通过集中配置CheckMaintainTask开关控制
-	{
-		bRet = FALSE;
-
-		//兼容支持清机任务的卡机号认证
-		if((USER_TYPE_MATERIAL_MANAGER == nUserType)
-			&&(0 == strcmp(m_strMachineType.GetData(), MACHINETYPE_PAD)))
-		{
-			//获取卡箱号
-			bRet = GetIssuerNum();
-			if (!bRet)
-			{
-				Dbg("GetIssuerNum failed");
-				LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_GET_CARDISSUER_SN,
-					GetOutPutStr("%s%s", "GetIssuerNum", "False").c_str());
-				return GET_ISSUERNUM_ERR;
-			}
-			else
-			{
-				Dbg("GetIssuerNum succeed");
-			}
-
-			//如果是Pad做物料维护,校验卡箱号
-			DWORD dwRet = VerifyCardIssuerSN();
-			if (SUCCESS != dwRet)
-			{
-				Dbg("VerifyCardIssuerSN failed");
-				LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_CARDISSUER_SN_VERIFY,
-					GetOutPutStr("%s%d", "VerifyCardIssuerSN", dwRet).c_str());
-				return dwRet;
-			}
-			else
-			{
-				Dbg("VerifyCardIssuerSN succeed");
-			}		
-		}
-		else
-		{
-			//校验操作权限(终端ID)
-			DWORD dwRet = VerifyTerminalNo();
-			if (SUCCESS != dwRet)
-			{
-				Dbg("VerifyTerminalNo failed");
-				LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_TERMINAL_TASK_VERIFY,
-					GetOutPutStr("%s%d", "VerifyCardIssuerSN", dwRet).c_str());
-				return dwRet;
-			}
-		}	
-
-		//获取用户类型
-		char cUserType[3] = {0};
-		bRet = GetUserTypeFromCert(USER_CERT_PATH, FORMAT_PEM, cUserType);
-		if (!bRet)
-		{
-			Dbg("GetUserTypeFromCert err!");
-			LogWarn(Severity_Middle,Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_TYPE_FROM_CERT,
-				GetOutPutStr("%s%s", "GetUserTypeFromCert", "False").c_str());
-			return GET_USERINFO_ERR;
-		}
-
-		//发送验证通过事件
-		UkeyVerify e = {};
-		UkeyVerifyEx ex = {};	
-		char cUserInfo[2048] = {0};
-		char cUserID[17] = {0};
-		char cOfficeID[9] = {0};
-		int nUserType = atoi(cUserType);
-
-		//改成广播方式发送事件		
-		bRet = GetUserIDFromCert(USER_CERT_PATH, FORMAT_PEM, cUserID);
-		if (bRet)
-		{
-			e.AgentId = cUserID;
-		}
-		else
-		{
-			Dbg("GetUserIDFromCert failed!");
-			e.AgentId = "";	
-		}
-		SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerify, eMsgSig_UkeyVerify, e);
-		Dbg("AgentId=%s", e.AgentId);
-
-		//遵循向前兼容原则,新增一个广播消息 modify by zl 20140918		
-		bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-		if (bRet)
-		{
-			string strUserInfo = cUserInfo;
-			strUserInfo += "UserType=";
-			strUserInfo += cUserType;
-			strUserInfo += ";";
-			memcpy(cUserInfo, strUserInfo.c_str(), strUserInfo.length());
-
-			ex.UserInfo = cUserInfo;
-		}
-		else
-		{
-			Dbg("GetUserInfoFromCert failed!");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_INFO_FROM_CERT, 
-				GetOutPutStr("%s%s", "GetUserInfoFromCert", "False").c_str());
-			ex.UserInfo = "";
-		}
-		SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerifyEx, eMsgSig_UkeyVerifyEx, ex);
-		Dbg("UserInfo=%s", ex.UserInfo);
-
-		Dbg("%s has right to operator %s", m_strUserID.c_str(), m_strTerminalId.c_str());
-	}	
-
-	switch (nUserType)
-	{
-	case 0: 	//维护
-		strUserType = "Maintian";
-		break;
-	case 1:     //物料管理
-		strUserType = "MaterialManager";
-		break;
-	case 2:		//业务
-		strUserType = "Business";
-		break;
-	case 3:		//Agent3
-		strUserType = "Agent3";
-		break;  
-	default:
-		strUserType = "unknown";
-		Dbg("userType=%d is wrong",nUserType);
-		break;
-	}
-
-	//只有维护类型电子钥匙写日志;频繁操作会导致日志写满,报错
-	//物料管理和维护类电子钥匙日志上传方式待业务流程讨论清楚后,再写日志
-	if (0)
-	{
-		if (0 == nUserType)
-		{
-			//写操作日志
-			//操作起始时间
-			time_t rawtime;
-			struct tm * timeinfo;
-			time(&rawtime);
-			timeinfo = localtime(&rawtime);
-			sprintf(m_StartTime, "%4d-%02d-%02d %02d:%02d:%02d",1900+timeinfo->tm_year, 1+timeinfo->tm_mon,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
-
-			//拼装日志记录
-			string logRecord = "";
-			logRecord += m_strTerminalId;
-			logRecord += "@";
-			logRecord += m_strUserID;
-			logRecord += "@";
-			logRecord += strUserType;
-			logRecord += "@";
-			logRecord += m_StartTime;
-			logRecord += "@";
-			logRecord += m_StartTime;	
-			logRecord += ";";
-
-			Dbg("WriteLogFile ,logRecord=%s",logRecord.c_str());
-			DWORD dwRet = WriteLogFile(m_Handle, (BYTE*)logRecord.c_str(), logRecord.length());
-			if (DONGLE_SUCCESS == dwRet)
-			{
-				Dbg("WriteLogFile success");
-			}
-			else
-			{
-				Dbg("WriteLogFile failed,errcode=0x%08X",dwRet);
-				//MessageBox(0,"操作日志记录已满,请先登录作业平台上传操作日志!",NULL,0);
-				return LOG_FULL_ERR;
-			}
-		}
-	}
-	
-	return DONGLE_SUCCESS;
-}
-
-DWORD ConsoleFSM::VerifyTerminalNo()
-{
-	//校验终端操作权限
-	Dbg("start to verify terminal nubmer");
-
-	//获取电子钥匙中的授权终端列表
-	//终端列表格式:任务号1,终端号1,有效开始时间,有效结束时间@任务号2,终端号2,有效开始时间,有效结束时间@任务号3,终端号3,有效开始时间,有效结束时间@
-	char readDeviceList[4096] = {0};
-	DWORD dwRet = GetAuthorizedDevices(m_Handle, readDeviceList);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		Dbg("GetAuthorizedDevices failed,Return: 0x%08X",dwRet);
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_AUTHER_DEVICES_LIST,
-			GetOutPutStr("%s%08X", "GetAuthorizedDevices", dwRet).c_str());
-		if (0xF000000F == dwRet)
-		{
-			Dbg("电子钥匙未下载设备的操作权限,请先下载!");
-		}
-		return TERMINAL_NO_TASK;
-	}
-
-	string strDeviceList = readDeviceList;
-	int nLastPos = strDeviceList.find_last_of("@");
-	if (-1 == nLastPos)
-	{
-		Dbg("find '@' in device list failed, DeviceList=%s", readDeviceList);
-		return TERMINAL_AUTHORIZED_ERR;
-	}
-
-	string strNewDeviceList = strDeviceList.substr(0, nLastPos+1);
-	Dbg("GetAuthorizedDevices success, DeviceList=%s", strNewDeviceList.c_str());
-
-	//校验终端号
-	BOOL bOverTime = FALSE;
-	BOOL bNoBeginValid = FALSE;
-
-	unsigned int nDeviceListLen = strNewDeviceList.length();	
-	while (nDeviceListLen >= 0)
-	{
-		DWORD dwPos = FindSubStr(strNewDeviceList.c_str(), m_strTerminalId.c_str());
-		if (-1 == dwPos)
-		{
-			Dbg("current TerminalNo=%s , can't find it in authorized device list=%s", m_strTerminalId.c_str(), strNewDeviceList.c_str());
-			if (bOverTime)
-			{
-				//如果一个终端ID存在多个授权记录,且同时存在过期和未生效的记录,则报过期错误
-				//MessageBoxA(NULL, "设备授权已过期,请确认授权时间!",NULL,0);
-				Dbg("设备授权已过期,请确认授权时间!");
-				return TERMINAL_AUTHORIZED_OVERTIME_ERR;
-			}
-			else if (bNoBeginValid)
-			{
-				//MessageBoxA(NULL, "设备授权未开始生效,请确认授权时间!",NULL,0);
-				Dbg("设备授权未开始生效,请确认授权时间!");
-				return TERMINAL_AUTHORIZED_NOTBEGIN_ERR;
-			}
-			else
-			{
-				//MessageBoxA(NULL, "电子钥匙不具备此设备操作授权,请确认是否已授权!",NULL,0);
-				Dbg("电子钥匙不具备此设备操作授权,请确认是否已授权!");
-				return TERMINAL_AUTHORIZED_ERR;
-			}		
-		}
-		else
-		{
-			//兼容带任务ID和不带任务ID的操作任务
-			int nSubCnt = 0;//分割符(",")的个数
-			int nFirstRecordEndPos = strNewDeviceList.find_first_of("@");
-			if(-1 != nFirstRecordEndPos)
-			{
-				string firstRecord = strNewDeviceList.substr(0, nFirstRecordEndPos+1);
-				int nfirstSubEndPos = firstRecord.find_first_of(",");
-				while (-1 != nfirstSubEndPos)
-				{
-					nSubCnt++;
-					firstRecord = firstRecord.substr(nfirstSubEndPos+1, firstRecord.length()-nfirstSubEndPos-1);
-					nfirstSubEndPos = firstRecord.find_first_of(",");
-				}
-
-				Dbg("找到[%d]个分隔符", nSubCnt);
-
-				if (3==nSubCnt)
-				{
-					Dbg("任务包含TaskID");
-					//获取任务ID长度
-					string rest = strNewDeviceList.substr(0, dwPos);
-					int restEndPos = rest.find_last_of("@");
-					int nTaskIDLen = 0;
-					if (-1 != restEndPos)
-					{
-						nTaskIDLen = dwPos - restEndPos - 1 -1;
-					}
-					else
-					{
-						nTaskIDLen = dwPos - 1;
-					}
-
-					//校验任务ID、终端号和准入时间
-					string strRest = strNewDeviceList.substr(0, dwPos-nTaskIDLen-1);
-					string strNew = strNewDeviceList.substr(dwPos-nTaskIDLen-1, strNewDeviceList.length()-strRest.length());
-					unsigned int nEndPos = strNew.find_first_of("@");
-					string strRecord = strNew.substr(0, nEndPos+1);	
-
-					//获取任务ID
-					unsigned int nRecordLen = strRecord.length();
-					int nPos = strRecord.find_first_of(",");
-					string strTaskId = strRecord.substr(0, nPos);		
-					string strTemp = strRecord.substr(nPos+1, nRecordLen-nPos-1);
-
-					//获取任务状态
-					if (!VerifyTaskStatus(strTaskId.c_str()))
-					{
-						strNewDeviceList = strNewDeviceList.substr(dwPos-nTaskIDLen-1+nRecordLen, strNewDeviceList.length()-dwPos+nTaskIDLen-1-nRecordLen);
-						nDeviceListLen -= (dwPos-nTaskIDLen-1 + nRecordLen);
-						continue;
-					}
-
-					//获取终端号
-					nRecordLen = strTemp.length();
-					nPos = strTemp.find_first_of(",");
-					string strDeviceId = strTemp.substr(0, nPos);
-					strTemp = strTemp.substr(nPos+1, nRecordLen-nPos-1);
-
-					//获取有效时间
-					unsigned int nStartTimeEndPos = strTemp.find_first_of(",");
-					string strStartTime = strTemp.substr(0, nStartTimeEndPos);	
-					string strEndTime = strTemp.substr(nStartTimeEndPos+1,strTemp.length()-strStartTime.length()-2);
-
-					if ((strStartTime.length() <=1) || (strEndTime.length() <= 1))
-					{
-						Dbg("此任务中设备授权有效期格式错误");
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-
-					time_t tNow = NowTime();
-					string strNowTime = Timet2Str(tNow);
-					time_t tStartTime = Str2Timet(strStartTime);
-					time_t tEndTime = Str2Timet(strEndTime);
-					Dbg("current time=%s , TaskRecord=%s", strNowTime.c_str(), strRecord.c_str());
-
-					if (tEndTime < tNow)
-					{
-						Dbg("此任务中的设备授权已过期");
-						bOverTime = TRUE;
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-					else if (tStartTime > tNow)
-					{
-						Dbg("此任务中的设备授权未开始生效");
-						bNoBeginValid = TRUE;
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-					else
-					{
-						Dbg("找到当前设备有效授权任务");
-						return SUCCESS;
-					}
-				}
-				else if (2==nSubCnt)
-				{
-					Dbg("任务不包含TaskID");
-
-					//只校验终端号和准入时间
-					string strRest = strNewDeviceList.substr(0, dwPos);
-					string strNew = strNewDeviceList.substr(dwPos, strNewDeviceList.length()-strRest.length());
-					unsigned int nEndPos = strNew.find_first_of("@");
-					string strRecord = strNew.substr(0, nEndPos+1);	
-
-					//获取终端号
-					unsigned int nRecordLen = strRecord.length();
-					int nPos = strRecord.find_first_of(",");
-					string strDeviceId = strRecord.substr(0, nPos);		
-					string strTemp = strRecord.substr(nPos+1, nRecordLen-nPos-1);
-
-					//获取有效时间
-					unsigned int nStartTimeEndPos = strTemp.find_first_of(",");
-					string strStartTime = strTemp.substr(0, nStartTimeEndPos);	
-					string strEndTime = strTemp.substr(nStartTimeEndPos+1,strTemp.length()-strStartTime.length()-2);
-
-					if ((strStartTime.length() <=1) || (strEndTime.length() <= 1))
-					{
-						Dbg("此任务中设备授权有效期格式错误");
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-
-					time_t tNow = NowTime();
-					string strNowTime = Timet2Str(tNow);
-					time_t tStartTime = Str2Timet(strStartTime);
-					time_t tEndTime = Str2Timet(strEndTime);
-					Dbg("current time=%s , TaskRecord=%s", strNowTime.c_str(), strRecord.c_str());
-
-					if (tEndTime < tNow)
-					{
-						Dbg("此任务中的设备授权已过期");
-						bOverTime = TRUE;
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-					else if (tStartTime > tNow)
-					{
-						Dbg("此任务中的设备授权未开始生效");
-						bNoBeginValid = TRUE;
-						strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-						nDeviceListLen -= (dwPos + nRecordLen);
-						continue;
-					}
-					else
-					{
-						Dbg("找到当前设备有效授权任务");
-						return SUCCESS;
-					}
-				}
-				else
-				{
-					//异常
-					//MessageBoxA(NULL, "设备授权格式错误,请联系技术人员!",NULL,0);
-					Dbg("设备授权格式错误,请联系技术人员!");
-				}
-			}				
-		}
-	}
-
-	return SUCCESS;
-}
-
-DWORD ConsoleFSM::VerifyCardIssuerSN()
-{
-	//校验终端操作权限
-	Dbg("start to verify card issuer sn");
-
-	//获取电子钥匙中的授权终端列表
-	//终端列表格式:任务号1,终端号1,有效开始时间,有效结束时间@任务号2,终端号2,有效开始时间,有效结束时间@任务号3,终端号3,有效开始时间,有效结束时间@
-	char readDeviceList[4096] = {0};
-	DWORD dwRet = GetAuthorizedDevices(m_Handle, readDeviceList);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-
-		Dbg("GetAuthorizedDevices failed,Return: 0x%08X",dwRet);
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_AUTHER_DEVICES_LIST,
-			GetOutPutStr("%s%08X", "GetAuthorizedDevices", dwRet).c_str());
-		if (0xF000000F == dwRet)
-		{
-			//MessageBoxA(NULL, "电子钥匙未下载设备的操作权限,请先下载!",NULL,0);
-			Dbg("电子钥匙未下载设备的操作权限,请先下载!");
-		}
-		return TERMINAL_NO_TASK;
-	}
-
-	string strDeviceList = readDeviceList;
-	int nLastPos = strDeviceList.find_last_of("@");
-	if (-1 == nLastPos)
-	{
-		Dbg("find '@' in device list failed, DeviceList=%s", readDeviceList);
-		return TERMINAL_AUTHORIZED_ERR;
-	}
-
-	string strNewDeviceList = strDeviceList.substr(0, nLastPos+1);
-	Dbg("GetAuthorizedDevices success, DeviceList=%s", strNewDeviceList.c_str());
-
-	//校验终端号
-	BOOL bOverTime = FALSE;
-	BOOL bNoBeginValid = FALSE;
-
-	unsigned int nDeviceListLen = strNewDeviceList.length();	
-	while (nDeviceListLen >= 0)
-	{
-		DWORD dwPos = FindSubStr(strNewDeviceList.c_str(), m_CardIssuerSN.GetData());
-		if (-1 == dwPos)
-		{
-			Dbg("current CardIssuerSN=%s , can't find it in authorized device list=%s", m_CardIssuerSN.GetData(), strNewDeviceList.c_str());
-			if (bOverTime)
-			{
-				//如果一个终端ID存在多个授权记录,且同时存在过期和未生效的记录,则报过期错误
-				Dbg("设备授权已过期,请确认授权时间!");
-				return TERMINAL_AUTHORIZED_OVERTIME_ERR;
-			}
-			else if (bNoBeginValid)
-			{
-				Dbg("设备授权未开始生效,请确认授权时间!");
-				return TERMINAL_AUTHORIZED_NOTBEGIN_ERR;
-			}
-			else
-			{
-				Dbg("电子钥匙不具备此设备操作授权,请确认是否已授权!");
-				return TERMINAL_AUTHORIZED_ERR;
-			}		
-		}
-		else
-		{
-			//校验任务号、卡机号和准入时间
-			string strRest = strNewDeviceList.substr(0, dwPos-17);
-			string strNew = strNewDeviceList.substr(dwPos-17, strNewDeviceList.length()-strRest.length());
-			unsigned int nEndPos = strNew.find_first_of("@");
-			string strRecord = strNew.substr(0, nEndPos+1);
-
-			//获取任务ID
-			unsigned int nRecordLen = strRecord.length();
-			int nPos = strRecord.find_first_of(",");
-			string strTaskId = strRecord.substr(0, nPos);		
-			string strTemp = strRecord.substr(nPos+1, nRecordLen-nPos-1);
-			//获取任务状态
-			if(16 != strTaskId.length())
-			{
-				Dbg("<TaskId=%s>任务ID的长度不等于16,格式错误!",strTaskId.c_str());
-				strNewDeviceList = strNewDeviceList.substr(dwPos-17+nRecordLen, strNewDeviceList.length()-dwPos+17-nRecordLen);
-				nDeviceListLen -= (dwPos-17 + nRecordLen);
-				continue;
-			}
-
-			if (!VerifyTaskStatus(strTaskId.c_str()))
-			{
-				strNewDeviceList = strNewDeviceList.substr(dwPos-17+nRecordLen, strNewDeviceList.length()-dwPos+17-nRecordLen);
-				nDeviceListLen -= (dwPos-17 + nRecordLen);
-				continue;
-			}
-
-			//获取卡机号
-			nRecordLen = strTemp.length();
-			nPos = strTemp.find_first_of(",");
-			string strDeviceId = strTemp.substr(0, nPos);
-			strTemp = strTemp.substr(nPos+1, nRecordLen-nPos-1);
-
-			//获取有效时间
-			unsigned int nStartTimeEndPos = strTemp.find_first_of(",");
-			string strStartTime = strTemp.substr(0, nStartTimeEndPos);	
-			string strEndTime = strTemp.substr(nStartTimeEndPos+1,strTemp.length()-strStartTime.length()-2);
-
-			if ((strStartTime.length() <=1) || (strEndTime.length() <= 1))
-			{
-				Dbg("此任务中设备授权有效期格式错误");
-				strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-				nDeviceListLen -= (dwPos + nRecordLen);
-				continue;
-			}
-
-			time_t tNow = NowTime();
-			string strNowTime = Timet2Str(tNow);
-			time_t tStartTime = Str2Timet(strStartTime);
-			time_t tEndTime = Str2Timet(strEndTime);
-			Dbg("current time=%s , TaskRecord=%s", strNowTime.c_str(), strRecord.c_str());
-
-			if (tEndTime < tNow)
-			{
-				Dbg("此任务中的设备授权已过期");
-				bOverTime = TRUE;
-				strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-				nDeviceListLen -= (dwPos + nRecordLen);
-				continue;
-			}
-			else if (tStartTime > tNow)
-			{
-				Dbg("此任务中的设备授权未开始生效");
-				bNoBeginValid = TRUE;
-				strNewDeviceList = strNewDeviceList.substr(dwPos+nRecordLen, strNewDeviceList.length()-dwPos-nRecordLen);
-				nDeviceListLen -= (dwPos + nRecordLen);
-				continue;
-			}
-			else
-			{
-				Dbg("找到当前设备有效授权任务");
-				return SUCCESS;
-			}		
-		}
-	}
-
-	return SUCCESS;
-}
-
-DWORD ConsoleFSM::CheckCertVaildity()
-{
-	time_t tNow = NowTime();
-
-	char strRootStartTime[32] = {0};
-	char strRootEndTime[32] = {0};
-	BOOL bRet = GetValidityFromCert(ROOT_CERT_PATH, FORMAT_PEM, strRootStartTime, strRootEndTime);
-	if (!bRet)
-	{
-		Dbg("获取根证书有效期失败");
-		return GET_CERT_VALIDITY_ERR;
-	}
-
-	Dbg("根证书有效期[%s,%s]", strRootStartTime, strRootEndTime);
-	string strNewRootStartTime = "20";
-	string strNewRootEndTime = "20";
-	strNewRootStartTime += strRootStartTime;
-	strNewRootEndTime += strRootEndTime;
-	time_t tRootStartTime = Str2Timet(strNewRootStartTime.c_str(), "%4d%2d%2d%2d%2d%2d");
-	time_t tRootEndTime = Str2Timet(strNewRootEndTime, "%4d%2d%2d%2d%2d%2d");
-
-	UINT nRestSecond = tRootEndTime - tNow;
-	UINT nRestDay = nRestSecond/(60*60*24);
-	if (nRestDay <= 15)
-	{
-		/*CString msg;
-		msg.Format(_T("电子钥匙即将过期,剩余有效天数[%d],请及时续期!"), nRestDay);
-		::MessageBox(NULL,msg, "提示",0);*/
-		Dbg("根证书即将过期, 有效剩余天数:%d", nRestDay);
-		return OVERTTIMER_WAR;
-	}
-
-	char strCaStartTime[32] = {0};
-	char strCaEndTime[32] = {0};
-	bRet = GetValidityFromCert(CA_CERT_PATH, FORMAT_PEM, strCaStartTime, strCaEndTime);
-	if (!bRet)
-	{
-		Dbg("获取分行证书有效期失败");
-		return GET_CERT_VALIDITY_ERR;
-	}
-
-	Dbg("分行证书有效期[%s,%s]", strCaStartTime, strCaEndTime);
-	string strNewCaStartTime = "20";
-	string strNewCaEndTime = "20";
-	strNewCaStartTime += strCaStartTime;
-	strNewCaEndTime += strCaEndTime;
-	time_t tCaStartTime = Str2Timet(strNewCaStartTime.c_str(), "%4d%2d%2d%2d%2d%2d");
-	time_t tCaEndTime = Str2Timet(strNewCaEndTime, "%4d%2d%2d%2d%2d%2d");
-
-	nRestSecond = tCaEndTime - tNow;
-	nRestDay = nRestSecond/(60*60*24);
-	if (nRestDay <= 15)
-	{
-		/*CString msg;
-		msg.Format(_T("电子钥匙即将过期,剩余有效天数[%d],请及时续期!"), nRestDay);
-		::MessageBox(NULL,msg, "提示",0);*/
-		Dbg("分行证书即将过期, 有效剩余天数:%d", nRestDay);
-		return OVERTTIMER_WAR;
-	}
-
-	char strUserStartTime[32] = {0};
-	char strUserEndTime[32] = {0};
-	bRet = GetValidityFromCert(USER_CERT_PATH, FORMAT_PEM, strUserStartTime, strUserEndTime);
-	if (!bRet)
-	{
-		Dbg("获取用户证书有效期失败");
-		return GET_CERT_VALIDITY_ERR;
-	}
-
-	Dbg("用户证书有效期[%s,%s]", strUserStartTime, strUserEndTime);
-	string strNewUserStartTime = "20";
-	string strNewUserEndTime = "20";
-	strNewUserStartTime += strUserStartTime;
-	strNewUserEndTime += strUserEndTime;
-	time_t tUserStartTime = Str2Timet(strNewUserStartTime.c_str(), "%4d%2d%2d%2d%2d%2d");
-	time_t tUserEndTime = Str2Timet(strNewUserEndTime, "%4d%2d%2d%2d%2d%2d");
-
-	nRestSecond = tUserEndTime - tNow;
-	nRestDay = nRestSecond/(60*60*24);
-	if (nRestDay <= 15)
-	{
-		/*CString msg;
-		msg.Format(_T("电子钥匙即将过期,剩余有效天数[%d],请及时续期!"), nRestDay);
-		::MessageBox(NULL,msg, "提示",0);*/
-		Dbg("用户证书即将过期, 有效剩余天数:%d", nRestDay);
-		return OVERTTIMER_WAR;
-	}
-
-	return SUCCESS;
-}
-
-BOOL ConsoleFSM::GetUserInfo()
-{
-	//电子钥匙HID
-	char strUkeyHID[32] = {0};
-	bool bRet = GetHIDFromCert(USER_CERT_PATH, FORMAT_PEM, strUkeyHID);
-	if (!bRet)
-	{
-		Dbg("GetHIDFromCert failed");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_EKEY_HID, 
-			GetOutPutStr("%s%s", "GetHIDFromCert", "False").c_str());
-
-		return FALSE;
-	}
-	m_strKeyHID = strUkeyHID;
-	Dbg("HID=%s", m_strKeyHID.c_str());
-
-	//用户ID
-	char strUserID[32] = {0};
-	bRet = GetUserIDFromCert(USER_CERT_PATH, FORMAT_PEM, strUserID);
-	if (!bRet)
-	{
-		Dbg("GetUserIDFromCert failed");
-		return FALSE;
-	}
-	m_strUserID = strUserID;
-	Dbg("userId=%s", m_strUserID.c_str());
-
-	//用户类型
-	char cUserType[3] = {0};
-	bRet = GetUserTypeFromCert(USER_CERT_PATH, FORMAT_PEM, cUserType);
-	if (!bRet)
-	{
-		Dbg("GetUserTypeFromCert failed");
-		return FALSE;
-	}
-	m_strUserType = cUserType;
-	Dbg("userType=%s", m_strUserType.c_str());
-
-	return TRUE;
-}
-
-//获取当前连接的卡箱号
-BOOL ConsoleFSM::GetIssuerNum()
-{
-	ErrorCodeEnum eErr = Error_Succeed;
-	if (m_pCardIssuerService == NULL)
-	{
-		m_pCardIssuerService = new CardIssuerService_ClientBase(this->GetEntityBase());
-		eErr = m_pCardIssuerService->Connect();
-		if (Error_Succeed != eErr) 
-		{
-			Dbg("CardIssuer connected failed.");
-			m_pCardIssuerService = NULL;
-			return FALSE;
-		}
-		else
-		{
-			Dbg("CardIssuer connected ok.");
-		}
-	}
-
-	Dbg("CardIssuer connected.");
-	CardIssuerService_GetSCIInfo_Req req;
-	CardIssuerService_GetSCIInfo_Ans ans;
-	eErr = m_pCardIssuerService->GetSCIInfo(req, ans,5000);
-	if (Error_Succeed != eErr)
-	{
-		Dbg("GetSCIInfo failed.");
-		m_pCardIssuerService = NULL;
-		return FALSE;
-	}
-	else
-	{
-		m_CardIssuerSN = ans.DevSN;
-		Dbg("GetSCIInfo succeed, DevSN=[%s]", m_CardIssuerSN);
-	}
-
-	return TRUE;
-}
-
-//GPIO控制,true:打开;false:关闭
-ErrorCodeEnum ConsoleFSM::OpenGpio(BOOL bOpen)
-{
-	ErrorCodeEnum eErr = Error_Succeed;
-	if (m_pDeviceControlService == NULL)
-	{
-		m_pDeviceControlService = new DeviceControlService_ClientBase(this->GetEntityBase());
-		eErr = m_pDeviceControlService->Connect();
-		if (Error_Succeed != eErr) 
-		{
-			Dbg("DeviceControl connected failed.");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_DEVICECONTROL_CONNECT,
-				GetOutPutStr("%s%08X", "Connect", eErr).c_str());
-			m_pDeviceControlService = NULL;
-			return eErr;
-		}
-		else
-		{
-			Dbg("DeviceControl connected ok.");
-		}
-	}
-
-	Dbg("DeviceControl connected.");
-	DeviceControlService_USB_Req req;
-	DeviceControlService_USB_Ans ans;
-
-	req.open = bOpen;
-	eErr = m_pDeviceControlService->USB(req, ans,10000);
-	if (Error_Succeed != eErr)
-	{
-		Dbg("m_pDeviceControlService->USB failed.");
-		m_pDeviceControlService = NULL;
-		return eErr;
-	}
-	else
-	{
-		Dbg("m_pDeviceControlService->USB succeed, bOpen[%d]", bOpen);
-	}
-
-	return eErr;
-}
-
-CSmartPointer<IEntityFunction> ConsoleFSM::GetFunction()
-{
-	return m_pEntity->GetFunction(); 
-}
-ErrorCodeEnum ConsoleFSM::SetRunConfig()
-{
-	char* pSap = "00000001";
-	char* pTime = "493751309";
-	CSmartPointer<IEntityFunction> spFunction = m_pEntity->GetFunction();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum Error = spFunction->OpenConfig(Config_Run, spConfig);
-	if (Error_Succeed == Error) 
-	{
-		CSimpleStringA strSAP;
-		Error = spConfig->ReadConfigValue("UserInfo", "SAP", strSAP);
-		if ((Error_Succeed == Error) && (strSAP.IsNullOrEmpty()))
-		{
-			Error = spConfig->WriteConfigValue("UserInfo", "SAP", pSap);
-			Error = spConfig->WriteConfigValue("UserInfo", "Time", pTime);
-		}		
-	}
-
-	return Error;
-}
-
-ErrorCodeEnum ConsoleFSM::LoadRunConfig()
-{
-	CSmartPointer<IEntityFunction> spFunction = m_pEntity->GetFunction();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum Error = spFunction->OpenConfig(Config_Run, spConfig);
-	if (Error == Error_Succeed) 
-	{
-		Error = spConfig->ReadConfigValueInt("Ukey", "UkeyStatus", m_nUkeyStatus);
-	}
-
-	return Error;
-}
-
-ErrorCodeEnum ConsoleFSM::LoadCenterConfig()
-{
-	CSmartPointer<IEntityFunction> spFunction = m_pEntity->GetFunction();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum Error = spFunction->OpenConfig(Config_CenterSetting, spConfig);
-	if (Error_Succeed == Error) 
-	{
-		Error = spConfig->ReadConfigValueInt("MaintainWatcher", "CheckTerMinalNo", m_nCheckTerminalNo);
-		if (Error_Succeed == Error)
-		{
-			Dbg("get CheckTerMinalNo=%d from CenterSetting.ini", m_nCheckTerminalNo);
-		} 
-		else
-		{
-			Dbg("get CheckTerMinalNo from CenterSetting.ini failed");
-		}
-
-		Error = spConfig->ReadConfigValueInt("MaintainWatcher", "CheckMaintainTask", m_nCheckMaintainTask);
-		if (Error_Succeed == Error)
-		{
-			Dbg("get CheckMaintainTask=%d from CenterSetting.ini", m_nCheckMaintainTask);
-		} 
-		else
-		{
-			Dbg("get CheckMaintainTask from CenterSetting.ini failed");
-		}
-
-		Error = spConfig->ReadConfigValueInt("MaintainWatcher", "Verify_BlackList", m_nVerifyBlackList);
-		if (Error_Succeed == Error)
-		{
-			Dbg("get Verify_BlackList=%d from CenterSetting.ini", m_nVerifyBlackList);
-		} 
-		else
-		{
-			Dbg("get Verify_BlackList from CenterSetting.ini failed");
-		}
-
-		Error = spConfig->ReadConfigValueInt("InteractiveControl", "SurveillanceRecordAllowed", g_nSurveillanceRecordAllowed);
-		if (Error_Succeed == Error)
-		{
-			Dbg("get SurveillanceRecordAllowed=%d from CenterSetting.ini", g_nSurveillanceRecordAllowed);
-		} 
-		else
-		{
-			Dbg("get SurveillanceRecordAllowed from CenterSetting.ini failed");
-		}
-	}
-
-	return Error;
-}
-
-ErrorCodeEnum ConsoleFSM::LoadServerConfig()
-{
-	CSmartPointer<IEntityFunction> spFunction = m_pEntity->GetFunction();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum Error = spFunction->OpenConfig(Config_Software, spConfig);
-	if (Error == Error_Succeed) 
-	{
-		Error = spConfig->ReadConfigValue("VerifyKey", "Key", m_StringVerifyKey);
-		if(Error == Error_Succeed)
-			Error = spConfig->ReadConfigValue("GuiConsole", "Name", m_StringConsoleName);
-	}
-
-	return Error;
-}
-
-ErrorCodeEnum ConsoleFSM::LoadRootConfig()
-{
-	CSmartPointer<IEntityFunction> spFunction = m_pEntity->GetFunction();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum Error = spFunction->OpenConfig(Config_Root, spConfig);
-	if (Error == Error_Succeed) 
-	{
-		Error = spConfig->ReadConfigValue("Terminal", "MachineType", m_strMachineType);
-		if(Error == Error_Succeed)
-		{
-			Error = spConfig->ReadConfigValue("Terminal", "Site", m_strSite);
-			if (Error != Error_Succeed)
-			{
-				Dbg("ReadConfigValue, get Site value failed");
-			}
-		}
-		else
-		{
-			Dbg("ReadConfigValue, get MachineType value failed");
-		}
-
-		Error = spConfig->ReadConfigValue("Video", "EwsCamera", g_strEwsCameraID);
-		if (Error_Succeed == Error)
-		{
-			Dbg("get EwsCamera=%s from root.ini", g_strEwsCameraID);
-		} 
-		else
-		{
-			Dbg("get EwsCamera from root.ini failed");
-		}
-	}
-
-	return Error;
-}
-
-void ConsoleFSM::CloseConnection()
-{
-	if (m_bAns && m_pConnection != NULL)
-	{
-		m_pConnection->Close();
-		m_pConnection->DecRefCount();
-		m_pConnection = NULL;
-		m_bAns = FALSE;
-
-		Dbg("Close m_pConnection");
-	}
-}
-
-void ConsoleFSM::s0_on_entry()
-{
-	//MessageBoxA(0,0,0,0);
-	Dbg("s0_on_entry, starting");
-	unsigned int count = 0;
-	DWORD dwRet = 0;
-	//状态机启动时检测电子钥匙
-	dwRet = FindUsbKey(&g_USBKeyInfo, &count);
-	if (dwRet == DONGLE_SUCCESS)
-	{
-		Dbg("when s0_on_entry,FindUsbKey success!");
-		if (!g_FindKey)
-		{
-			g_FindKey = TRUE;
-			PostEventLIFO(new FSMEvent(USER_EVT_JMP_UKEYINSERT));
-		}		
-	}
-	else
-	{	
-		Dbg("when s0_on_entry,FindUsbKey Fail!");
-		LogWarn(Severity_Low,Error_Unexpect, ERR_MAINTAINWATCHER_CANNOT_FIND_EKEY,
-			GetOutPutStr("%s%d", "FindUsbKey", dwRet).c_str());
-		if (g_FindKey)
-		{
-			g_FindKey = FALSE;
-			PostEventLIFO(new FSMEvent(USER_EVT_JMP_UKEYPULLOUT));
-			return;
-		}
-						
-		ScheduleTimer(1, 10);
-	}
-}
-void ConsoleFSM::s0_on_exit()
-{
-	CancelTimer(1);
-}
-unsigned int ConsoleFSM::s0_on_event( FSMEvent* event )
-{
-	//收到回复,释放链接
-	CloseConnection();
-
-	if (EVT_TIMER == event->iEvt)
-	{
-		ScheduleTimer(1, 100);
-	}
-	else if (USER_EVT_JMP_UKEYINSERT == event->iEvt)
-	{
-		PostEventLIFO(new FSMEvent(USER_EVT_JMP_UKEYINSERT));
-	}
-	else if (USER_EVT_JMP_UKEYPULLOUT == event->iEvt)
-	{
-		PostEventLIFO(new FSMEvent(USER_EVT_JMP_UKEYPULLOUT));
-	}
-
-	return 0;
-}
-
-void ConsoleFSM::s1_on_entry()
-{
-	Dbg("s1_on_entry");
-	Dbg("检测到电子钥匙插入");
-
-	//收到回复,释放链接
-	CloseConnection();
-		
-	LogEvent(Severity_Middle, EVENT_UKEY_INSERTED, "Ukey insert!");
-
-	UkeyInsert e = {};
-	for (int i=0; i<8; i++)
-	{
-		string id;
-		sprintf((char*)id.c_str(),"%02X", g_USBKeyInfo.m_HID[i]);
-		e.UkeyID += id.c_str();
-	}
-	SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyInsert, eMsgSig_UkeyInsert, e);
-	Dbg("UkeyID=%s", e.UkeyID);
-		
-
-	//根据是否在首页状态,决定下一个状态机状态
-	//获取首页状态
-	GetMenuStatus();
-
-	if (m_bMenu)
-	{
-		//首页状态,进入验证流程
-		PostEventLIFO(new FSMEvent(USER_EVT_JMP_VERIFYPWD));
-	}
-	else
-	{
-		//非首页状态
-		PostEventLIFO(new FSMEvent(USER_EVT_JMP_RELEASE));
-	}
-}
-void ConsoleFSM::s1_on_exit()
-{
-	CancelTimer(1);
-}
-unsigned int ConsoleFSM::s1_on_event(FSMEvent* event)
-{
-	//收到回复,释放链接
-	CloseConnection();
-
-	if (event->iEvt == EVT_TIMER) 
-	{
-		//Dbg("Verify cert err");
-	} 
-
-	if (event->iEvt == USER_EVT_JMP_UKEYPULLOUT)
-	{	
-		Dbg("s1_on_event receive USER_EVT_JMP_UKEYPULLOUT");
-	}
-
-	return 0;
-}
-
-void ConsoleFSM::s2_on_entry()
-{
-	Dbg("s2_on_entry");
-	Dbg("检测到电子钥匙拔出");
-
-	//收到回复,释放链接
-	CloseConnection();
-
-	//处理拔出状态
-	g_bWorkingStatus = FALSE;
-	g_bErrStatus = FALSE;
-	m_bInputpwdDlg = FALSE;
-	LogEvent(Severity_Middle, EVENT_UKEY_PULLOUT, "Ukey pullout!");
-
-	UkeyPullOut e = {};	
-	SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyPullOut, eMsgSig_UkeyPullOut, e);
-
-	PostEventLIFO(new FSMEvent(USER_EVT_JMP_RELEASE));
-}
-void ConsoleFSM::s2_on_exit()
-{
-	CancelTimer(2);
-}
-unsigned int ConsoleFSM::s2_on_event(FSMEvent* event)
-{
-	if (event->iEvt == EVT_TIMER) 
-	{			
-	}
-
-	return 0;
-}
-
-void ConsoleFSM::s3_on_entry()
-{
-	Dbg("s3_on_entry");
-	Dbg("开始启动验证线程");
-
-	//收到回复,释放链接
-	CloseConnection();
-	
-	//启动验证线程
-	if (!g_HasVerifyTask)
-	{
-		Dbg("创建等待验密线程");
-		GuidVerifyTask* pVerifyTask = new GuidVerifyTask(this);
-		GetEntityBase()->GetFunction()->PostThreadPoolTask(pVerifyTask);
-
-		g_HasVerifyTask = TRUE;
-	}
-	
-	if (!m_bInputpwdDlg && g_FindKey)
-	{
-		//发送弹出密码输入界面
-		InputPwd e = {};
-		SpSendBroadcast(m_pEntity->GetFunction(), eMsg_InputPwd, eMsgSig_InputPwd, e);
-		Dbg("弹出密码输入界面");
-		m_bInputpwdDlg = TRUE;
-	}
-}
-void ConsoleFSM::s3_on_exit()
-{
-}
-unsigned int ConsoleFSM::s3_on_event(FSMEvent* event)
-{
-	if (USER_EVT_JMP_PWDSUCCESS == event->iEvt)
-	{
-		DWORD dwRet = 0;
-		Dbg("revceive USER_EVT_JMP_PWDSUCCESS, m_strPwd[%s],m_errcode[%08X]",m_strPwd, m_errcode);
-		if (!m_strPwd.IsNullOrEmpty() && ((0 == m_errcode) || (OVERTTIMER_WAR == m_errcode)))
-		{
-			//清空密码
-			m_strPwd.Clear();
-
-			if (0)
-			{
-				BOOL bRet = CheckUSBKeyLife(m_strKeyHID.c_str());
-				if (!bRet)
-				{
-					Dbg("CheckUSBKeyLife failed!");
-					LogWarn(Severity_Low, Error_Unexpect, ERR_MAINTAINWATCHER_CHECK_EKEY_LIFE,
-						GetOutPutStr("%s%s", "CheckUSBKeyLife", "False").c_str());
-				}
-			}
-
-			//获取用户类型,根据不同的用户类型发送不同的事件
-			char cUserType[3] = {0};
-			BOOL bRet = GetUserTypeFromCert(USER_CERT_PATH, FORMAT_PEM, cUserType);
-			if (!bRet)
-			{
-				Dbg("GetUserTypeFromCert err!");
-				LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_TYPE_FROM_CERT, 
-					GetOutPutStr("%s%s%s%s", "GetUserTypeFromCert", "False","cUserType", cUserType).c_str());
-				PostEventLIFO(new FSMEvent(USER_EVT_JMP_RELEASE));
-				return 1;
-			}
-
-			UkeyVerify e = {};
-			UkeyVerifyEx ex = {};	
-			char cUserInfo[2048] = {0};
-			char cUserID[17] = {0};
-			char cOfficeID[9] = {0};
-			int nUserType = atoi(cUserType);
-
-			switch(nUserType)
-			{
-			case USER_TYPE_MAINTAIN:
-				//LogEvent(Severity_Middle, EVENT_UKEY_MAINTTIAN, "维护权限!");
-				LogEvent(Severity_Middle, EVENT_UKEY_LOW_LEVEL, "Start local maintance!");
-				if (0 == m_nCheckMaintainTask)
-				{
-					bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-					if (bRet)
-					{
-						string strUserInfo = cUserInfo;
-						strUserInfo += "UserType=";
-						strUserInfo += cUserType;
-						strUserInfo += ";";
-						memcpy(cUserInfo, strUserInfo.c_str(), strUserInfo.length());
-
-						ex.UserInfo = cUserInfo;
-					}
-					else
-					{
-						Dbg("GetUserInfoFromCert failed!");
-						LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_INFO_FROM_CERT, 
-							GetOutPutStr("%s%s%s%s", "GetUserInfoFromCert", "False", "cUserInfo", cUserInfo).c_str());
-						ex.UserInfo = "";
-					}
-					SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyNormalMaintain, eMsgSig_UkeyNormalMaintain, ex);
-					Dbg("UserInfo=%s", ex.UserInfo);
-
-					SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerifyEx, eMsgSig_UkeyVerifyEx, ex);
-					Dbg("eMsg_UkeyVerifyEx:UserInfo=%s", ex.UserInfo);
-				}
-				break;
-
-			case USER_TYPE_MATERIAL_MANAGER:
-				LogEvent(Severity_Middle, EVENT_UKEY_MATERIAL_MANAGER, "物料管理权限!");
-				if (0 == m_nCheckTerminalNo)
-				{
-					//改成广播方式发送事件 modify by zl 20140619			
-					bRet = GetUserIDFromCert(USER_CERT_PATH, FORMAT_PEM, cUserID);
-					if (bRet)
-					{
-						e.AgentId = cUserID;
-					}
-					else
-					{
-						Dbg("GetUserIDFromCert failed!");
-						e.AgentId = "";	
-					}
-					SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerify, eMsgSig_UkeyVerify, e);
-					Dbg("AgentId=%s", e.AgentId);
-
-					//遵循向前兼容原则,新增一个广播消息 modify by zl 20140918		
-					bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-					if (bRet)
-					{
-						string strUserInfo = cUserInfo;
-						strUserInfo += "UserType=";
-						strUserInfo += cUserType;
-						strUserInfo += ";";
-						memcpy(cUserInfo, strUserInfo.c_str(), strUserInfo.length());
-
-						ex.UserInfo = cUserInfo;
-					}
-					else
-					{
-						Dbg("GetUserInfoFromCert failed!");
-						LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_INFO_FROM_CERT, 
-							GetOutPutStr("%s%s%s%s", "GetUserInfoFromCert", "False", "cUserInfo", cUserInfo).c_str());
-						ex.UserInfo = "";
-					}
-					SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerifyEx, eMsgSig_UkeyVerifyEx, ex);
-					Dbg("UserInfo=%s", ex.UserInfo);
-				}
-
-				break;
-
-			case USER_TYPE_CUSTOMER_MANAGER:
-				LogEvent(Severity_Middle, EVENT_UKEY_CUSTOMER_MANAGER, "客户经理权限!");
-				bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-				if (bRet)
-				{
-					string strUserInfo = cUserInfo;
-					strUserInfo += "UserType=";
-					strUserInfo += cUserType;
-					strUserInfo += ";";
-					memcpy(cUserInfo, strUserInfo.c_str(), strUserInfo.length());
-
-					ex.UserInfo = cUserInfo;
-				}
-				else
-				{
-					Dbg("GetUserInfoFromCert failed!");
-					LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_GET_USER_INFO_FROM_CERT, 
-						GetOutPutStr("%s%s%s%s", "GetUserInfoFromCert", "False", "cUserInfo", cUserInfo).c_str());
-					ex.UserInfo = "";
-				}
-				SpSendBroadcast(m_pEntity->GetFunction(), eMsg_UkeyVerifyEx, eMsgSig_UkeyVerifyEx, ex);
-				Dbg("UserInfo=%s", ex.UserInfo);
-
-				Dbg("m_strMachineType=%s", m_strMachineType.GetData());
-				break;
-
-			case USER_TYPE_AGENT3:
-				LogEvent(Severity_Middle, EVENT_UKEY_AGENT3, "Agent3用户权限!");
-				break;
-
-			case USER_TYPE_FINANCING_MANAGER:
-				LogEvent(Severity_Middle, EVENT_UKEY_FINANCING_MANAGER, "理财经理权限!");
-				break;
-
-			default:
-				Dbg("未知用户类型!");
-				break;
-			}				
-		}
-		else
-		{
-			Dbg("VerifyUser failed, errcode=0x%08X ", m_errcode);
-			char tmp[100] = { 0 };
-			sprintf(tmp,"VerifyUser failed, errcode=0x%08X",m_errcode);
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_EKEY_VERIFY, 
-				GetOutPutStr("%s%08X", "VerifyUser", m_errcode).c_str());
-			//清空密码
-			m_strPwd.Clear();
-			m_errcode = 0;
-			g_bErrStatus = TRUE;
-		}
-
-		PostEventLIFO(new FSMEvent(USER_EVT_JMP_RELEASE));
-	}
-	else if (USER_EVT_JMP_PWDERR == event->iEvt)
-	{
-		//当验证错误且电子钥匙没有拔出时,状态机停留在s3验证状态,等待用户下一步操作
-		Dbg("when verifyUser return failed, keep s3 state!");	
-	}
-
-	return 0;
-}
-
-void ConsoleFSM::s4_on_entry()
-{
-	Dbg("s4_on_entry, release");
-
-	//收到回复,释放链接
-	CloseConnection();
-
-	//close电子钥匙,关闭界面
-	DWORD dwRet = CloseUsbKey(m_Handle);
-	if (DONGLE_SUCCESS != dwRet)
-	{
-		Dbg("CloseUsbKey failed,errcode= 0x%08X", dwRet);
-		char tmp[100];
-		sprintf(tmp, "CloseUsbKey failed,errcode= 0x%08X", dwRet);
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_CLOSE_EKEY,
-			GetOutPutStr("%s%d", "CloseUsbKey", dwRet).c_str());
-	}
-
-	if (AsyncStopEntity(m_StringConsoleName,NULL)==Error_Succeed)
-	{
-		ScheduleTimer(4, 10);
-		Dbg("release console success!");
-	} 
-	else//if release console fail
-	{
-		Dbg("release console fail!");
-		LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_RELEASE_CONSOLE,
-			GetOutPutStr("%s%s", "AsyncStopEntity", "False").c_str());
-		ScheduleTimer(4, 10);
-	}
-}
-void ConsoleFSM::s4_on_exit()
-{
-	CancelTimer(4);
-}
-unsigned int ConsoleFSM::s4_on_event(FSMEvent* event)
-{
-	if (event->iEvt == EVT_TIMER) 
-	{
-		// goto s0
-		Dbg("goto starting");
-	}
-	return 0;
-}
-
-ErrorCodeEnum ConsoleFSM::AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData)
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		CSmartPointer<IAsynWaitSp> spWait;
-		ErrorCodeEnum Error = pFuncPrivilege->StartEntity(entity_name, cmdline, spWait);
-		//if (Error == Error_Succeed) {
-		//	callback_entry *entry = new callback_entry();
-		//	entry->pRawData = pData;
-		//	entry->EntityName = entity_name;
-		//	entry->ErrorResult = Error_Unexpect;
-		//	entry->op = OP_START_ENTITY;
-		//	//spWait->SetCallback(this, entry);
-		//}z
-		return Error;
-	} else {
-		return Error_NoPrivilege;
-	}
-}
-
-ErrorCodeEnum ConsoleFSM::AsyncStopEntity(const char *entity_name, void *pData)
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		CSmartPointer<IAsynWaitSp> spWait;
-		ErrorCodeEnum Error = pFuncPrivilege->StopEntity(entity_name, spWait);
-		//if (Error == Error_Succeed) {
-		//	callback_entry *entry = new callback_entry();
-		//	entry->pRawData = pData;
-		//	entry->EntityName = entity_name;
-		//	entry->ErrorResult = Error_Unexpect;
-		//	entry->op = OP_STOP_ENTITY;
-		//	//spWait->SetCallback(this, entry);
-		//}
-		return Error;
-	} 
-	else 
-	{
-		return Error_NoPrivilege;
-	}
-}
-static char certBlackListKey[100] = "Certificate of Black List";//伪随机化因子
-
-/*初始化函数*/
-void Black_init(unsigned char *s, unsigned char *key, unsigned long Len)
-{
-	int i = 0, j = 0;
-	char k[256] = { 0 };
-	unsigned char tmp = 0;
-	for (i = 0; i < 256; i++)
-	{
-		s[i] = i;
-		k[i] = key[i%Len];
-	}
-	for (i = 0; i < 256; i++)
-	{
-		j = (j + s[i] + k[i]) % 256;
-		tmp = s[i];
-		s[i] = s[j];//交换s[i]和s[j]
-		s[j] = tmp;
-	}
-}
-
-/*加解密*/
-void Black_crypt(unsigned char*s, unsigned char*Data, unsigned long  Len)
-{
-	int i = 0, j = 0, t = 0;
-	unsigned long k = 0;
-	unsigned char tmp;
-	for (k = 0; k < Len; k++)
-	{
-		i = (i + 1) % 256;
-		j = (j + s[i]) % 256;
-		tmp = s[i];
-		s[i] = s[j];//交换s[x]和s[y]
-		s[j] = tmp;
-		t = (s[i] + s[j]) % 256;
-		unsigned char tempK = Data[k] ^ s[t];
-		if(0 != tempK  && '\n' != tempK)
-			Data[k] ^= s[t];
-	}
-}
-
-void certBlackCrypt(char *dstStr, char *srcStr)
-{
-	unsigned char encryptStr[256] = { 0 };
-	Black_init(encryptStr, (unsigned char*)certBlackListKey, strlen(certBlackListKey));//已经完成了初始化伪随机子
-
-	memcpy(dstStr, srcStr, strlen(srcStr) + 1);
-	Black_crypt(encryptStr, (unsigned char *)dstStr, strlen(srcStr));
-}
-
-BOOL checkDirExist(TCHAR *filePath)
-{
-	BOOL b = CreateDirectory(filePath, NULL);
-	if (b || (GetLastError() == ERROR_ALREADY_EXISTS))
-	{
-		return TRUE;
-	}
-	return FALSE;
-}
-BOOL checkFileExist(TCHAR *filePath, BOOL isCreate)
-{
-	HANDLE hFile = isCreate ? CreateFile(filePath, GENERIC_READ, 0, NULL, CREATE_ALWAYS, NULL, NULL)
-		: CreateFile(filePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL);
-
-	if (hFile == INVALID_HANDLE_VALUE)
-		return FALSE;
-	CloseHandle(hFile);
-	return TRUE;
-}
-BOOL IsCertInBlack(char *certNo)
-{
-	char activePath1[1024], activePath2[1024], realActivePath[1024], dirPath[1024], blackListPath[1024];
-
-	sprintf(activePath1, "D:\\Run\\version\\active.txt");
-	sprintf(activePath2, "C:\\Run\\version\\active.txt");
-	if (checkFileExist(activePath1, FALSE))
-	{
-		memcpy(realActivePath, activePath1, strlen(activePath1) + 1);
-		sprintf(dirPath, "D:\\Run\\version");
-	}
-	else if (checkFileExist(activePath2, FALSE))
-	{
-		memcpy(realActivePath, activePath2, strlen(activePath2) + 1);
-		sprintf(dirPath, "C:\\Run\\version");
-	}
-	else
-		return FALSE;
-	//read version
-	char buffer[255];
-	ifstream iniFile(realActivePath);
-	iniFile.getline(buffer, 100);
-	iniFile.close();
-	sprintf(blackListPath, "%s\\%s\\cfg\\certs\\CertBlackList.txt", dirPath, buffer);
-	//CertBlackList.txt文件是否存在,不存在则并未创建该文件,不进行黑名单检测
-	ifstream blackFile(blackListPath);
-	if (!blackFile.is_open())
-		return FALSE;
-	char lineBuf[200], encrpyKey[200], showMsg[200];
-	while (!blackFile.eof())
-	{
-		blackFile.getline(lineBuf, 200);
-		certBlackCrypt(encrpyKey, lineBuf);
-		sprintf(showMsg, "Compare CertNo:%s to BlackKey:%s", certNo, encrpyKey);
-		Dbg(showMsg);
-		if (strlen(lineBuf) < 5)
-			continue;
-		if (!memcmp(certNo, encrpyKey, strlen(certNo) > strlen(encrpyKey) ? strlen(encrpyKey) : strlen(certNo) ))
-		{
-			blackFile.close();
-			return TRUE;
-		}
-	}
-	blackFile.close();
-	return FALSE;
-}
-
-BOOL GetRecomenderIdFromUserInfo(char* pRecommenderId)
-{
-	if (NULL == pRecommenderId)
-	{
-		return false;
-	}
-
-	char cUserInfo[MAX_EXT_LEN] = {0};
-	bool bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-	if (!bRet)
-	{
-		return false;
-	}
-
-	string strUserInfo = cUserInfo;
-	int len = strUserInfo.length();
-
-	int nPos = strUserInfo.find("RecommenderOfficeID=");
-	if (nPos < 0)
-	{			
-		return false;
-	}		
-
-	string strRecord = strUserInfo.substr(nPos, len-1);
-
-	nPos = strRecord.find_first_of(";");
-	if (nPos < 0)
-	{			
-		return false;
-	}
-
-	string strRecommenderOfficeIDRecord = strRecord.substr(0, nPos);
-	if (strRecommenderOfficeIDRecord.length() <= 20)
-	{			
-		return false;
-	}
-
-	string RecommenderOfficeID = strRecommenderOfficeIDRecord.substr(20,nPos -20);
-
-	memcpy(pRecommenderId, RecommenderOfficeID.c_str(), MAX_OFFICEID_LEN);
-
-	return TRUE;
-}
-
-BOOL ConsoleFSM::SetRecommender()
-{
-	Recommender ex = {};
-	char cRecommenderID[9] = {0};
-
-	Dbg("start SetRecommender");
-
-	//从用户证书中获取推荐人ID		
-	BOOL bRet = GetRecomenderIdFromUserInfo(cRecommenderID);
-	if (bRet)
-	{	
-		ex.OfficeID = cRecommenderID;
-	}
-	else
-	{
-		Dbg("GetUserInfoFromCert failed!");
-		ex.OfficeID = "";
-	}
-
-	SpSendBroadcast(m_pEntity->GetFunction(), eMsg_Recommender, eMsgSig_Recommender, ex);
-	Dbg("OfficeID=%s", ex.OfficeID);
-	return TRUE;
-}
-
-void ConsoleFSM::GetEkeyStatus(int &status) {
-	status = g_FindKey?1:0;
-}

+ 0 - 613
Module/mod_MaintainWatcher/ConsoleFSM.h

@@ -1,613 +0,0 @@
-#pragma once
-#include "SpBase.h"
-#include "SpFSM.h"
-#include "USBKeyAPI.h"
-#include "VerifyCertificate.h"
-//#include "libsharememory.h"
-#include "SpSecureClient.h"
-#include "MaintainWatcher_msg_g.h"
-#include "..\mod_cardissuer\CardIssuer_client_g.h"
-#include "..\mod_DeviceControl\DeviceControl_client_g.h"
-#include "MaintainWatcherErrorCode.h"
-using namespace CardIssuer;
-using namespace DeviceControl;
-
-#define USER_EVT_JMP_VERIFYPWD			EVT_USER+1
-#define USER_EVT_JMP_VERIFYTASK			EVT_USER+2
-#define USER_EVT_JMP_RELEASE			EVT_USER+3
-#define USER_EVT_CERT_ANS               EVT_USER+4
-#define USER_EVT_DISCONNECT             EVT_USER+5
-#define USER_EVT_TASK_ANS               EVT_USER+6
-#define USER_EVT_USBKEYINFO_ANS         EVT_USER+7
-#define USER_EVT_JMP_UKEYINSERT			EVT_USER+8
-#define USER_EVT_JMP_UKEYPULLOUT		EVT_USER+9
-#define USER_EVT_JMP_PWDSUCCESS			EVT_USER+10
-#define USER_EVT_JMP_PWDERR				EVT_USER+11
-
-#define SHARE_MEM_NAME       "VerifyResult"
-#define ROOT_CERT_PATH       ".\\cfg\\certs\\RootCert.pem"
-#define CA_CERT_PATH         ".\\cfg\\certs\\CaCert.pem"
-#define USER_CERT_PATH		 ".\\cfg\\certs\\userCert.pem"
-#define CERT_DIR			 ".\\cfg\\certs"
-
-//用户类型
-#define USER_TYPE_MAINTAIN		    00		//维护用户
-#define USER_TYPE_MATERIAL_MANAGER  01		//物料管理用户
-#define USER_TYPE_CUSTOMER_MANAGER  02		//客户经理
-#define USER_TYPE_AGENT3			03      //Agent3用户
-#define USER_TYPE_FINANCING_MANAGER 04      //理财经理
-
-//机型
-#define MACHINETYPE_STAND2S     "RVC.Stand2S" //站立式双屏
-#define MACHINETYPE_STAND1S     "RVC.Stand1S" //站立式单屏
-#define MACHINETYPE_WALL		"RVC.Wall"	  //挂墙式
-#define MACHINETYPE_EMBED2S     "RVC.Embed2S" //嵌墙式双屏
-#define MACHINETYPE_EMBED1S     "RVC.Embed1S" //嵌墙式单屏
-#define MACHINETYPE_PAD			"RVC.PAD"	  //携带式移动终端
-
-//场所
-#define SIT_LIB   "cmb.LIB" //银行大堂内
-#define SIT_SSB   "cmb.SSB" //自助营业网点
-#define SIT_FLB   "cmb.FLB" //离行机器,银行业务为主界面,如企业,商场
-#define SIT_LSS   "cmb.LSS" //面向生活销售机,一般部署在小区,面向销售广告
-#define SIT_SMM   "cmb.SMM" //商场销售门户,放置在商场,多商户门户
-
-
-
-// [StructName("RvcCertReq")]
-struct CertReq
-{
-	char CertVersion[8];
-};
-//    [StructName("RvcCertAns")]
-struct CertAns
-{
-	char RootCert[4096];
-	char CaCert[4096];
-};
-
-#pragma pack(1)
-typedef struct 	// 45
-{
-	char state;
-}CertBlackListReq;
-
-typedef struct
-{
-	char ukeyID[20];
-}CertBlackListRet;
-#pragma pack()
-
-struct CertAnsEvent : public FSMEvent 
-{
-	CertAnsEvent(BYTE *pBuf, int nLen) : FSMEvent(USER_EVT_CERT_ANS) 
-	{
-		memcpy(&m_reply, pBuf, sizeof(CertAns));
-	}
-	virtual ~CertAnsEvent() {}
-	CertAns m_reply;
-};
-
-struct TaskReq
-{
-	char TaskID[16];
-};
-
-struct TaskAns
-{
-	char TaskStatus[1];
-};
-
-struct TaskAnsEvent : public FSMEvent 
-{
-	TaskAnsEvent(BYTE *pBuf, int nLen) : FSMEvent(USER_EVT_TASK_ANS) 
-	{
-		memcpy(&m_reply, pBuf, sizeof(TaskAns));
-	}
-	virtual ~TaskAnsEvent() {}
-	TaskAns m_reply;
-};
-
-struct USBKeyInfoReq
-{
-	char USBKeyID[16];
-};
-
-struct USBKeyInfoAns
-{
-	char USBKeyInitTime[20];
-};
-
-struct USBKeyInfoAnsEvent : public FSMEvent 
-{
-	USBKeyInfoAnsEvent(BYTE *pBuf, int nLen) : FSMEvent(USER_EVT_USBKEYINFO_ANS) 
-	{
-		memcpy(&m_reply, pBuf, sizeof(USBKeyInfoAns));
-	}
-	virtual ~USBKeyInfoAnsEvent() {}
-	USBKeyInfoAns m_reply;
-};
-
-class CAConnection;
-class ConsoleFSM : public FSMImpl<ConsoleFSM>, public IFSMStateHooker
-{
-public:
-	enum {s0,s1,s2,s3,s4,s5};
-
-	BEGIN_FSM_STATE(ConsoleFSM)
-		FSM_STATE_ENTRY(s0,"Starting",s0_on_entry,s0_on_exit,s0_on_event)
-		FSM_STATE_ENTRY(s1, "Ukey Insert", s1_on_entry, s1_on_exit, s1_on_event)
-		FSM_STATE_ENTRY(s2, "Ukey pullout", s2_on_entry, s2_on_exit, s2_on_event)
-		FSM_STATE_ENTRY(s3, "Verify", s3_on_entry, s3_on_exit, s3_on_event)
-		FSM_STATE_ENTRY(s4, "Realse", s4_on_entry, s4_on_exit, s4_on_event)
-		END_FSM_STATE()
-
-		BEGIN_FSM_RULE(ConsoleFSM,s0)
-		FSM_RULE_ENTRY_ANY(s0, s1, USER_EVT_JMP_UKEYINSERT)
-		FSM_RULE_ENTRY_ANY(s0, s2, USER_EVT_JMP_UKEYPULLOUT)
-		FSM_RULE_ENTRY_ANY(s1, s2, USER_EVT_JMP_UKEYPULLOUT)
-		FSM_RULE_ENTRY_ANY(s1, s3, USER_EVT_JMP_VERIFYPWD)
-		FSM_RULE_ENTRY_ANY(s1, s4, USER_EVT_JMP_RELEASE)
-		FSM_RULE_ENTRY_ANY(s2, s4, USER_EVT_JMP_RELEASE)
-		FSM_RULE_ENTRY_ANY(s3, s2, USER_EVT_JMP_UKEYPULLOUT)
-		FSM_RULE_ENTRY_ANY(s3, s4, USER_EVT_JMP_RELEASE)
-		FSM_RULE_ENTRY_ANY(s4, s0, EVT_TIMER)
-		FSM_RULE_ENTRY_ANY(s4, s2, USER_EVT_JMP_UKEYPULLOUT)
-		END_FSM_RULE()
-
-	ConsoleFSM();
-	~ConsoleFSM();
-
-	virtual void OnStateTrans(int iSrcState, int iDstState);
-
-	virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName);
-
-	virtual ErrorCodeEnum OnInit();
-	virtual ErrorCodeEnum OnExit();
-
-	void s0_on_entry();
-	void s0_on_exit();
-	unsigned int s0_on_event(FSMEvent* event);
-
-	void s1_on_entry();
-	void s1_on_exit();
-	unsigned int s1_on_event(FSMEvent* event);
-
-	void s2_on_entry();
-	void s2_on_exit();
-	unsigned int s2_on_event(FSMEvent* event);
-
-	void s3_on_entry();
-	void s3_on_exit();
-	unsigned int s3_on_event(FSMEvent* event);
-
-	void s4_on_entry();
-	void s4_on_exit();
-	unsigned int s4_on_event(FSMEvent* event);
-
-	//DWORD VerifyUser();
-	DWORD VerifyUser(const char* pcPIN);
-	DWORD VerifyOther();
-	void DownloadCerts();
-	void DownloadCertBlackList();
-	BOOL GetTaskStatus(const char* pTaskID);
-	BOOL VerifyTaskStatus(const char* pTaskID);
-	DWORD VerifyTerminalInfo();
-	DWORD VerifyTerminalNo();	
-	DWORD VerifyCardIssuerSN();
-	DWORD CheckCertVaildity();
-	BOOL CheckUSBKeyLife(const char* pUSBKeyID);
-	BOOL GetUserInfo();
-	ErrorCodeEnum SetRunConfig();
-	ErrorCodeEnum LoadRunConfig();
-	ErrorCodeEnum LoadCenterConfig();
-	BOOL GetMenuStatus();
-	BOOL GetIssuerNum();
-	ErrorCodeEnum OpenGpio(BOOL bOpen);
-	BOOL SetRecommender();
-	void CloseConnection();
-	CSmartPointer<IEntityFunction> GetFunction();
-	void GetEkeyStatus(int &);
-
-	int m_nSRState; //是否进入录音录像业务状态值,0:在业务状态;1:正在录音录像
-	CSimpleStringA m_strPwd; //界面输入的电子钥匙密码
-	DWORD m_errcode;
-	string m_strTerminalId; //终端号
-	string m_strKeyHID;     //电子钥匙ID
-	string m_strUserID;     //用户ID
-	string m_strNowTime;    //当前时间
-	BOOL m_bAns;//是否收到分行服务的回复,0:未收到;1:收到
-	BOOL m_bInputpwdDlg;//是否已经弹出输入密码对话框
-	BOOL m_bVerifyPwd;//是否验证完密码
-	CSimpleStringA m_strMachineType, m_strSite;
-
-	typedef struct TaskRecord 
-	{
-		string strWarningId;
-		char startTime[20];
-		char endTime[20];
-	}*PTaskRecord;
-
-	typedef struct EventInfo
-	{
-		BOOL bOpenRVC;
-		BOOL bLocalMaintance;
-		USBKEY_HANDLE hHandle;
-	}*PEventInfo;
-
-	char m_TaskStatus[1]; //'O',打开;'D',已下载;'C',已关闭;
-	char m_USBKeyInitTime[20];
-private:
-	//读配置文件
-	ErrorCodeEnum LoadServerConfig();
-	ErrorCodeEnum LoadRootConfig();
-		
-	int m_nUkeyStatus;
-	int m_nCheckTerminalNo; //物料类型电子钥匙是否校验任务标志,0:不校验;1:校验
-	int m_nCheckMaintainTask; //维护类型的电子钥匙是否校验任务标志,0:不校验;1:校验
-	int m_nVerifyBlackList;	//是否校验电子钥匙黑名单,0:不校验;1:校验
-	CSimpleStringA m_StringVerifyKey,m_StringConsoleName;	
-	CSimpleStringA m_strUIstate;	
-	BOOL m_bMenu;    //是否在首页状态 0:不在;1:在
-	
-
-	ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData);
-	ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData);
-	//USBKEY_INFO g_USBKeyInfo; //Ukey信息
-	USBKEY_HANDLE m_Handle; //Ukey句柄
-	//string m_strTerminalId; //终端号
-	//string m_strKeyHID;     //电子钥匙ID
-	//string m_strUserID;     //用户ID
-	string m_strUserType;   //用户类型
-	char m_StartTime[20];  //操作起始时间
-	char m_EndTime[20];    //操作结束时间
-	TaskRecord* m_TaskRecords[128]; //任务记录信息数组
-	unsigned int m_RecordNum; //当前终端号对应的任务记录数
-	CSimpleStringA m_CardIssuerSN;//当前连接的卡机号
-
-	PEventInfo m_EventInfo; //用户界面信息
-	LPVOID m_lpMem; //共享内存指针
-
-	BOOL m_bHaveFindUkey;//识别到Ukey
-	BOOL m_bVerifySuccess;//用户验证成功
-
-	CRITICAL_SECTION cs;
-	CAConnection *m_pConnection;
-	CardIssuerService_ClientBase *m_pCardIssuerService;
-	DeviceControlService_ClientBase *m_pDeviceControlService;
-private:
-};
-
-void Black_init(unsigned char *s, unsigned char *key, unsigned long Len);
-void Black_crypt(unsigned char*s, unsigned char*Data, unsigned long  Len);
-void certBlackCrypt(char *dstStr, char *srcStr);
-BOOL checkDirExist(TCHAR *filePath);
-BOOL checkFileExist(TCHAR *filePath, BOOL isCreate);
-BOOL IsCertInBlack(char *certNo);
-
-
-
-class CAConnection : public SpSecureClient
-{
-public:
-	CAConnection(CEntityBase *pEntity, ConsoleFSM *pFSM) : SpSecureClient(pEntity), m_pFSM(pFSM) {}
-	virtual ~CAConnection() {}
-
-	void SendVersionReq()
-	{
-		CertReq req = {0};
-		
-		////检测本地是否存在根证书和分行证书
-		//FILE* fp = fopen("RootCert.pem", "r");
-		//if (NULL != fp)
-		//{
-		//	//有则获取证书版本
-		//} 
-		//else
-		//{
-		//	//没有则发生默认版本,下载证书
-		//	memcpy(req.CertVersion, "10000000", 8);
-		//}
-
-		memcpy(req.CertVersion, "10000000", 8);
-
-		CSmartPointer<IPackage> pkt = CreateNewPackage("CertReq");
-		pkt->AddStruct("CertReq", false, false, (LPBYTE)&req, sizeof(CertReq));
-		SendPackage(pkt);
-	}
-
-	void SendCertBlackListReq()
-	{
-		CertBlackListReq req;
-		memset(&req, 0, sizeof(CertBlackListReq));
-		req.state = 'L';//get black list
-
-		CSmartPointer<IPackage> package = CreateNewPackage("CertBla");
-		package->AddStruct("CertBlackListReq", true, false, (BYTE*)&req, sizeof(req));
-		SendPackage(package);
-	}
-	
-	void SendTaskReq(const char* pTaskID)
-	{
-		TaskReq req = {0};
-
-		memcpy(req.TaskID, pTaskID, 16);
-
-		CSmartPointer<IPackage> pkt = CreateNewPackage("TaskReq");	
-		pkt->AddStruct("TaskReq", false, false, (LPBYTE)&req, sizeof(TaskReq));
-		if (SendPackage(pkt) == "")
-		{
-			Dbg("SendPackage failed, send Task req failed");
-			return;
-		}
-		else
-		{
-			Dbg("send get task req success");
-		}	
-		
-
-		pkt = ReceivePackage(5);
-		if (pkt == NULL)
-		{
-			Dbg("ReceivePackage failed, don't revceive TaskReq ans");
-			return;
-		}
-
-		int nLen = pkt->GetStructLen("TaskAns");
-		if (nLen > 0) 
-		{
-			BYTE *pBuf = new BYTE[nLen];
-			memset(pBuf, 0, nLen);
-			int nArrayNum = 0;
-
-			if (pkt->GetStructData("TaskAns", pBuf, &nLen, &nArrayNum)) 
-			{
-				Dbg("recieve task ans success");
-
-				FSMEvent *evt = new TaskAnsEvent(pBuf, nLen);
-				TaskAnsEvent *ans = (TaskAnsEvent *)evt;
-				if (ans->m_reply.TaskStatus == NULL)
-				{
-					Dbg("Don't get <TaskID=%s> status!",pTaskID);
-				}
-				else 
-				{
-					Dbg("get <TaskID=%s> status <%c>!",pTaskID,ans->m_reply.TaskStatus[0]);
-					memcpy(m_pFSM->m_TaskStatus, ans->m_reply.TaskStatus, 1);
-				}
-				delete evt;
-			} 
-			else 
-			{
-				Dbg("create invalid TaskAns packet!");
-				OnDisconnect();
-			}
-			delete pBuf;
-		}
-		else
-		{
-			Dbg("don't recieve TaskAns packet!");
-			//OnDisconnect();
-		}
-	}
-
-	void SendUSBKeyInfoReq(const char* pUSBKeyID)
-	{
-		USBKeyInfoReq req = {0};
-
-		memcpy(req.USBKeyID, pUSBKeyID, 16);
-
-		CSmartPointer<IPackage> pkt = CreateNewPackage("USBKeyInfoReq");	
-		pkt->AddStruct("USBKeyInfoReq", false, false, (LPBYTE)&req, sizeof(USBKeyInfoReq));
-		if (SendPackage(pkt) == "")
-		{
-			Dbg("SendPackage failed, send USBKeyInfo req failed");
-			return;
-		}
-		else
-		{
-			Dbg("send USBKeyInfo req success");
-		}	
-
-
-		pkt = ReceivePackage(5);
-		if (pkt == NULL)
-		{
-			Dbg("ReceivePackage failed, don't revceive USBKeyInfo ans");
-			return;
-		}
-
-		int nLen = pkt->GetStructLen("USBKeyInfoAns");
-		if (nLen > 0) 
-		{
-			BYTE *pBuf = new BYTE[nLen];
-			memset(pBuf, 0, nLen);
-			int nArrayNum = 0;
-
-			if (pkt->GetStructData("USBKeyInfoAns", pBuf, &nLen, &nArrayNum)) 
-			{
-				Dbg("recieve USBKeyInfo ans success");
-
-				FSMEvent *evt = new USBKeyInfoAnsEvent(pBuf, nLen);
-				USBKeyInfoAnsEvent *ans = (USBKeyInfoAnsEvent *)evt;
-				if (ans->m_reply.USBKeyInitTime == NULL)
-				{
-					Dbg("Don't get <TaskID=%s> info!",pUSBKeyID);
-				}
-				else 
-				{
-					Dbg("get <USBKeyID=%s> info <%s>!",pUSBKeyID,ans->m_reply.USBKeyInitTime);
-					memcpy(m_pFSM->m_USBKeyInitTime, ans->m_reply.USBKeyInitTime, 20);
-				}
-				delete evt;
-			} 
-			else 
-			{
-				Dbg("create invalid TaskAns packet!");
-				//OnDisconnect();
-			}
-			delete pBuf;
-		}
-		else
-		{
-			Dbg("don't recieve TaskAns packet!");
-			//OnDisconnect();
-		}
-	}
-
-protected:
-	virtual void OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg) 
-	{
-		Dbg("start OnReceivePackage!");
-		string serviceCode = pRecvPkg->GetServiceCode();
-
-		if (serviceCode == "CertReq") 
-		{
-			int nLen = pRecvPkg->GetStructLen("CertAns");
-			if (nLen > 0) 
-			{
-				BYTE *pBuf = new BYTE[nLen];
-				memset(pBuf, 0, nLen);
-				int nArrayNum = 0;
-
-				if (pRecvPkg->GetStructData("CertAns", pBuf, &nLen, &nArrayNum)) 
-				{
-					FSMEvent *evt = new CertAnsEvent(pBuf, nLen);
-					CertAnsEvent *ans = (CertAnsEvent *)evt;
-					if (ans->m_reply.RootCert == NULL
-						|| ans->m_reply.CaCert == NULL)
-					{
-						Dbg("Don't update ca cert!");
-					}
-					else 
-					{
-						Dbg("Update ca cert!");
-						//保存证书到指定目录
-						FILE* fp = fopen(ROOT_CERT_PATH, "w");						
-						fwrite(ans->m_reply.RootCert, 1, strlen(ans->m_reply.RootCert), fp);
-						fclose(fp);
-
-						fp = fopen(CA_CERT_PATH, "w");
-						fwrite(ans->m_reply.CaCert, 1, strlen(ans->m_reply.CaCert), fp);
-						fclose(fp);
-					}
-					delete evt;
-				} 
-				else 
-				{
-					Dbg("create invalid cert RvcCertAns packet!");
-					//OnDisconnect();
-				}
-				delete pBuf;
-			}
-		}
-		else if (serviceCode == "CertBla")
-		{
-			HandleCertBlackListRet(pRecvPkg);
-		}
-		else 
-		{
-			Dbg("unknown service code!");
-			//OnDisconnect();
-		}		
-	};
-
-	void HandleCertBlackListRet(const CSmartPointer<IPackage> &pRecvPkg)
-	{
-		DWORD dwSysCode, dwUserCode;
-		string strErrMsg;
-
-		m_pFSM->m_bAns = TRUE;//告诉状态机收到回复
-
-		if (pRecvPkg->GetErrMsg(dwSysCode, dwUserCode, strErrMsg))
-		{
-			cout << "error in package: " << strErrMsg.c_str() << " [" << dwSysCode << "]" << endl;
-		}
-		else
-		{
-			int nLen = pRecvPkg->GetStructLen("CertBlackListRet");
-			if (nLen <= 0)
-			{
-				Dbg("not find struct [CertBlackListRet] in package");
-			}
-			else
-			{
-				//Save File
-				char activePath1[1024], activePath2[1024], realActivePath[1024], dirPath[1024], blackListPath[1024];
-
-				sprintf(activePath1, "D:\\Run\\version\\active.txt");
-				sprintf(activePath2, "C:\\Run\\version\\active.txt");
-				if (checkFileExist(activePath1, FALSE))
-				{
-					memcpy(realActivePath, activePath1, strlen(activePath1) + 1);
-					sprintf(dirPath, "D:\\Run\\version");
-				}
-				else if (checkFileExist(activePath2, FALSE))
-				{
-					memcpy(realActivePath, activePath2, strlen(activePath2) + 1);
-					sprintf(dirPath, "C:\\Run\\version");
-				}
-				else
-					return;
-				//read version
-				char buffer[255];
-				ifstream iniFile(realActivePath);
-				iniFile.getline(buffer, 100);
-				iniFile.close();
-				sprintf(blackListPath, "%s\\%s\\cfg\\certs", dirPath, buffer);
-				//certs文件夹,需要判断该文件夹是否存在,不存在则创建该文件夹
-				if (!checkDirExist(blackListPath))
-					return;
-				sprintf(blackListPath, "%s\\CertBlackList.txt", blackListPath);
-				//CertBlackList.txt文件,不存在则创建
-				if (!checkFileExist(blackListPath, TRUE))
-					return;
-				ofstream blackFile(blackListPath);
-				if (blackFile.is_open())
-				{
-					blackFile << "";
-					blackFile.close();
-				}
-				else
-					return;
-
-				BYTE *pBuf = new BYTE[nLen];
-				memset(pBuf, 0, nLen);
-
-				int nArrayNum = 0;
-				if (!pRecvPkg->GetStructData("CertBlackListRet", pBuf, &nLen, &nArrayNum))
-				{
-					Dbg("get struct [CertBlackListRet] data fail");
-				}
-				else
-				{
-
-					CertBlackListRet *pReq = (CertBlackListRet*)pBuf;
-					ofstream blackFile(blackListPath);
-					for (int i = 0; i < nArrayNum; i++)
-					{
-						char dstID[300];
-						cout << (char *)pReq[i].ukeyID << endl;
-						certBlackCrypt(dstID, pReq[i].ukeyID);
-						blackFile << dstID << endl;
-					}
-					blackFile.close();
-				}
-
-				delete[] pBuf;
-			}
-		}
-	}
-
-	/*virtual void OnDisconnect() 
-	{
-		m_pFSM->PostEventFIFO(new FSMEvent(USER_EVT_DISCONNECT));
-	}*/
-
-	virtual void OnReceivePackage(IPackage *pRecvPkg)
-	{
-	}
-
-private:
-	ConsoleFSM *m_pFSM;
-};

+ 0 - 75
Module/mod_MaintainWatcher/MaintainWatcherErrorCode.h

@@ -1,75 +0,0 @@
-#pragma once
-
-//错误码
-#define VERIFYTYPE_ERR						 0x0020 //证书验证不匹配
-#define PASSWORD_ERR						 0x0021 //密码错误
-#define USERTYPE_ERR						 0x0022 //用户类型不匹配
-#define GET_TERMINALNO_ERR					 0x0023 //获取终端号失败
-#define TERMINAL_AUTHORIZED_ERR				 0x0024 //设备未授权
-#define TERMINAL_AUTHORIZED_OVERTIME_ERR     0x0025 //设备授权过期
-#define TERMINAL_AUTHORIZED_NOTBEGIN_ERR     0x0026 //设备授权未开始生效
-#define TERMINAL_NO_TASK					 0x0027 //电子钥匙未下载操作任务
-#define GET_CERT_CERTTYPE_ERR                0x0028 //获取证书类型失败
-#define GET_NO_FRAMEWORK_PERMIT_ERR          0x0029 //没有框架登陆权限
-#define GET_USERINFO_ERR                     0x0030 //从电子钥匙获取用户信息失败
-#define IN_BLACKLIST_ERR                     0x003a //电子钥匙在黑名单中
-#define GET_ISSUERNUM_ERR                    0x003b //获取外拓卡箱号失败
-#define VERIFY_ISSUERNUM_ERR                 0x003c //验证外拓卡箱号失败
-#define VERIFY_TERMINALNO_ERR                0x003d //验证终端号失败
-#define LOG_FULL_ERR					     0x003e //操作日志已满
-#define GET_CERT_VALIDITY_ERR                0x003f //获取证书有效期失败
-#define OVERTTIMER_WAR                       0x1001 //即将过期告警
-
-static void GetNewForm(const char* form, char* newForm) {
-	int indexNum = 0;
-	int acount = 0;
-	newForm[0] = '{';
-	for (int i = 0;i < strlen(form);i++)
-	{
-		//if((i-1 >= 0 && form[i]=='\\') || (i-1 < 0))
-		if (form[i] == '%') {
-
-			if (acount != 0)
-			{
-				newForm[++indexNum] = '"';
-				if (acount % 2 != 0) {
-					newForm[++indexNum] = ':';
-				}
-				else {
-					newForm[++indexNum] = ',';
-				}
-			}
-			newForm[++indexNum] = '"';
-			acount++;
-		}
-		if (form[i] == ' ') continue;
-		newForm[++indexNum] = form[i];
-	}
-	newForm[++indexNum] = '"';
-	newForm[++indexNum] = '}';
-
-}
-
-static string GetOutPutStr(const char* form, ...) {
-	char* newForm = new char[strlen(form) * 3 + 5];
-	memset(newForm, 0, strlen(form) * 3 + 5);
-	if (strlen(form) < 2) {
-		strcpy(newForm, "{\"\"}");
-	}
-	else {
-		GetNewForm(form, newForm);
-	}
-	va_list vaList;
-	va_start(vaList, form);
-	int acount = _vscprintf(newForm, vaList);
-	char* buf = new char[acount + 1];
-	memset(buf, 0, acount + 1);
-	vsprintf(buf, newForm, vaList);
-	va_end(vaList);
-
-	string ret;
-	ret.assign(buf);
-	delete buf;
-	delete newForm;
-	return ret;
-}

+ 0 - 453
Module/mod_MaintainWatcher/MaintainWatcher_client_g.h

@@ -1,453 +0,0 @@
-
-#ifndef __MAINTAINWATCHER_CLIENT_G_H
-#define __MAINTAINWATCHER_CLIENT_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "MaintainWatcher_def_g.h"
-
-namespace MaintainWatcher {
-class MaintainCertificate_ClientBase : public CClientSessionBase {
-public:
-	explicit MaintainCertificate_ClientBase(CEntityBase *pEntity) : m_pEntityBase(pEntity), m_bSysManaged(false) {}
-
-	MaintainCertificate_ClientBase* operator () (const linkContext &curLink) 
-	{
-		m_context = curLink;
-		return this;
-	}
-
-protected:
-	virtual ~MaintainCertificate_ClientBase()
-	{
-		/// override by user
-	}
-public:
-
-	void OnConnectSucceed()
-	{
-		bSessionClosed = false;
-	}
-	void OnClose(ErrorCodeEnum)
-	{
-		Dbg("session closed.");
-		bSessionClosed = true;
-	}
-	bool QuerySessionClosed()
-	{
-		return bSessionClosed;
-	}
-	ErrorCodeEnum Connect(CSmartPointer<IAsynWaitSp> &spAsyncWait)
-	{
-		CSmartPointer<IEntityFunction> pFunc = m_pEntityBase->GetFunction();
-		ErrorCodeEnum Error = pFunc->ConnectRemoteEntity(this, "MaintainWatcher", "MaintainCertificate", spAsyncWait);
-		if (Error == Error_Succeed) {
-			m_bSysManaged = true;
-			bSessionClosed = false;
-		}
-		return Error;
-	}
-	ErrorCodeEnum Connect()
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Connect(spAsyncWait);
-		if (Error == Error_Succeed) {
-			Error = spAsyncWait->WaitAnswer();
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetUserID(MaintainCertificate_GetUserID_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetUserID, MaintainCertificate_MethodSignature_GetUserID, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetUserID(MaintainCertificate_GetUserID_Req &Req, MaintainCertificate_GetUserID_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUserID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetUserID(MaintainCertificate_GetUserID_Req &Req, MaintainCertificate_GetUserID_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUserID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetUkeyID(MaintainCertificate_GetUkeyID_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetUkeyID, MaintainCertificate_MethodSignature_GetUkeyID, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetUkeyID(MaintainCertificate_GetUkeyID_Req &Req, MaintainCertificate_GetUkeyID_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUkeyID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetUkeyID(MaintainCertificate_GetUkeyID_Req &Req, MaintainCertificate_GetUkeyID_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUkeyID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetSerialNumber(MaintainCertificate_GetSerialNumber_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetSerialNumber, MaintainCertificate_MethodSignature_GetSerialNumber, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetSerialNumber(MaintainCertificate_GetSerialNumber_Req &Req, MaintainCertificate_GetSerialNumber_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSerialNumber(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetSerialNumber(MaintainCertificate_GetSerialNumber_Req &Req, MaintainCertificate_GetSerialNumber_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSerialNumber(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetCertLife(MaintainCertificate_GetCertLife_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetCertLife, MaintainCertificate_MethodSignature_GetCertLife, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetCertLife(MaintainCertificate_GetCertLife_Req &Req, MaintainCertificate_GetCertLife_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetCertLife(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetCertLife(MaintainCertificate_GetCertLife_Req &Req, MaintainCertificate_GetCertLife_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetCertLife(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetAuthorizedID(MaintainCertificate_GetAuthorizedID_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetAuthorizedID, MaintainCertificate_MethodSignature_GetAuthorizedID, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetAuthorizedID(MaintainCertificate_GetAuthorizedID_Req &Req, MaintainCertificate_GetAuthorizedID_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAuthorizedID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetAuthorizedID(MaintainCertificate_GetAuthorizedID_Req &Req, MaintainCertificate_GetAuthorizedID_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAuthorizedID(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetAuthorizeTime(MaintainCertificate_GetAuthorizeTime_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetAuthorizeTime, MaintainCertificate_MethodSignature_GetAuthorizeTime, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetAuthorizeTime(MaintainCertificate_GetAuthorizeTime_Req &Req, MaintainCertificate_GetAuthorizeTime_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAuthorizeTime(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetAuthorizeTime(MaintainCertificate_GetAuthorizeTime_Req &Req, MaintainCertificate_GetAuthorizeTime_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetAuthorizeTime(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetUserInfo(MaintainCertificate_GetUserInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetUserInfo, MaintainCertificate_MethodSignature_GetUserInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetUserInfo(MaintainCertificate_GetUserInfo_Req &Req, MaintainCertificate_GetUserInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUserInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetUserInfo(MaintainCertificate_GetUserInfo_Req &Req, MaintainCertificate_GetUserInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetUserInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum SetSRStatus(MaintainCertificate_SetSRStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_SetSRStatus, MaintainCertificate_MethodSignature_SetSRStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SetSRStatus(MaintainCertificate_SetSRStatus_Req &Req, MaintainCertificate_SetSRStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetSRStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SetSRStatus(MaintainCertificate_SetSRStatus_Req &Req, MaintainCertificate_SetSRStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SetSRStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum VerifyPwd(MaintainCertificate_VerifyPwd_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_VerifyPwd, MaintainCertificate_MethodSignature_VerifyPwd, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum VerifyPwd(MaintainCertificate_VerifyPwd_Req &Req, MaintainCertificate_VerifyPwd_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = VerifyPwd(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum VerifyPwd(MaintainCertificate_VerifyPwd_Req &Req, MaintainCertificate_VerifyPwd_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = VerifyPwd(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetSignedInfo(MaintainCertificate_GetSignedInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetSignedInfo, MaintainCertificate_MethodSignature_GetSignedInfo, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetSignedInfo(MaintainCertificate_GetSignedInfo_Req &Req, MaintainCertificate_GetSignedInfo_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSignedInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetSignedInfo(MaintainCertificate_GetSignedInfo_Req &Req, MaintainCertificate_GetSignedInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetSignedInfo(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum USB(MaintainCertificate_USB_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_USB, MaintainCertificate_MethodSignature_USB, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum USB(MaintainCertificate_USB_Req &Req, MaintainCertificate_USB_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = USB(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum USB(MaintainCertificate_USB_Req &Req, MaintainCertificate_USB_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = USB(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum GetEKeyStatus(MaintainCertificate_GetEKeyStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(MaintainCertificate_Method_GetEKeyStatus, MaintainCertificate_MethodSignature_GetEKeyStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetEKeyStatus(MaintainCertificate_GetEKeyStatus_Req &Req, MaintainCertificate_GetEKeyStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetEKeyStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetEKeyStatus(MaintainCertificate_GetEKeyStatus_Req &Req, MaintainCertificate_GetEKeyStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetEKeyStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-
-	bool SafeDelete()
-	{
-		if (!m_bSysManaged) {
-			delete this;
-		}
-		return m_bSysManaged;
-	}
-
-protected:
-	bool m_bSysManaged;
-	CEntityBase *m_pEntityBase;
-	linkContext m_context;
-	bool bSessionClosed;
-};
-
-///////////////////////////
-
-} // namespace MaintainWatcher
-#endif // __MAINTAINWATCHER_CLIENT_G_H

+ 0 - 302
Module/mod_MaintainWatcher/MaintainWatcher_def_g.h

@@ -1,302 +0,0 @@
-#ifndef __MAINTAINWATCHER_DEF_G_H
-#define __MAINTAINWATCHER_DEF_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace MaintainWatcher {
-//
-// const goes here
-//
-
-#define MaintainCertificate_Method_GetUserID 0
-#define MaintainCertificate_Method_GetUkeyID 1
-#define MaintainCertificate_Method_GetSerialNumber 2
-#define MaintainCertificate_Method_GetCertLife 3
-#define MaintainCertificate_Method_GetAuthorizedID 4
-#define MaintainCertificate_Method_GetAuthorizeTime 5
-#define MaintainCertificate_Method_GetUserInfo 6
-#define MaintainCertificate_Method_SetSRStatus 7
-#define MaintainCertificate_Method_VerifyPwd 8
-#define MaintainCertificate_Method_GetSignedInfo 9
-#define MaintainCertificate_Method_USB 10
-#define MaintainCertificate_Method_GetEKeyStatus 11
-
-#define MaintainCertificate_MethodSignature_GetUserID 105041094
-#define MaintainCertificate_MethodSignature_GetUkeyID -332837180
-#define MaintainCertificate_MethodSignature_GetSerialNumber 1968900179
-#define MaintainCertificate_MethodSignature_GetCertLife 1273647830
-#define MaintainCertificate_MethodSignature_GetAuthorizedID 1692205992
-#define MaintainCertificate_MethodSignature_GetAuthorizeTime 128040495
-#define MaintainCertificate_MethodSignature_GetUserInfo 890151885
-#define MaintainCertificate_MethodSignature_SetSRStatus 1520245213
-#define MaintainCertificate_MethodSignature_VerifyPwd -1851561034
-#define MaintainCertificate_MethodSignature_GetSignedInfo 240192194
-#define MaintainCertificate_MethodSignature_USB 109707598
-#define MaintainCertificate_MethodSignature_GetEKeyStatus 1901611218
-
-struct MaintainCertificate_GetUserID_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetUserID_Ans
-{
-	CSimpleStringA UserID;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UserID;
-	}
-
-};
-
-struct MaintainCertificate_GetUkeyID_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetUkeyID_Ans
-{
-	CSimpleStringA UkeyID;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UkeyID;
-	}
-
-};
-
-struct MaintainCertificate_GetSerialNumber_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetSerialNumber_Ans
-{
-	CSimpleStringA SerialNumber;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & SerialNumber;
-	}
-
-};
-
-struct MaintainCertificate_GetCertLife_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetCertLife_Ans
-{
-	CSimpleStringA StartTime;
-	CSimpleStringA EndTime;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & StartTime & EndTime;
-	}
-
-};
-
-struct MaintainCertificate_GetAuthorizedID_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetAuthorizedID_Ans
-{
-	CSimpleStringA AuthorizedID;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & AuthorizedID;
-	}
-
-};
-
-struct MaintainCertificate_GetAuthorizeTime_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetAuthorizeTime_Ans
-{
-	CSimpleStringA AuthorizeTime;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & AuthorizeTime;
-	}
-
-};
-
-struct MaintainCertificate_GetUserInfo_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetUserInfo_Ans
-{
-	CSimpleStringA UserInfo;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UserInfo;
-	}
-
-};
-
-struct MaintainCertificate_SetSRStatus_Req
-{
-	int status;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status;
-	}
-
-};
-
-struct MaintainCertificate_SetSRStatus_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_VerifyPwd_Req
-{
-	CSimpleStringA Pwd;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & Pwd;
-	}
-
-};
-
-struct MaintainCertificate_VerifyPwd_Ans
-{
-	double Errcode;
-	CSimpleStringA ErrMsg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & Errcode & ErrMsg;
-	}
-
-};
-
-struct MaintainCertificate_GetSignedInfo_Req
-{
-	CSimpleStringA ServiceNo;
-	CSimpleStringA SerialNo;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & ServiceNo & SerialNo;
-	}
-
-};
-
-struct MaintainCertificate_GetSignedInfo_Ans
-{
-	CSimpleStringA SignedInfo;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & SignedInfo;
-	}
-
-};
-
-struct MaintainCertificate_USB_Req
-{
-	bool open;
-	int reserved1;
-	int reserved2;
-	CSimpleStringA reserved3;
-	CSimpleStringA reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & open & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct MaintainCertificate_USB_Ans
-{
-	int reserved1;
-	int reserved2;
-	CSimpleStringA reserved3;
-	CSimpleStringA reserved4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & reserved1 & reserved2 & reserved3 & reserved4;
-	}
-
-};
-
-struct MaintainCertificate_GetEKeyStatus_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct MaintainCertificate_GetEKeyStatus_Ans
-{
-	int status;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status;
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace MaintainWatcher
-
-#endif // __MAINTAINWATCHER_DEF_G_H

+ 0 - 142
Module/mod_MaintainWatcher/MaintainWatcher_msg_g.h

@@ -1,142 +0,0 @@
-
-#ifndef __MAINTAINWATCHER_MSG_G_H
-#define __MAINTAINWATCHER_MSG_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace MaintainWatcher {
-#define eMsg_UkeyVerify 0
-#define eMsg_UkeyPullOut 1
-#define eMsg_UkeyVerifyEx 2
-#define eMsg_UkeyNormalMaintain 3
-#define eMsg_UkeyInsert 4
-#define eMsg_InputPwd 5
-#define eMsg_Recommender 6
-#define eMsg_TheUkeyInsert 7
-#define eMsg_TheUkeyPullOut 8
-
-#define eMsgSig_UkeyVerify 1724529971
-#define eMsgSig_UkeyPullOut -813795400
-#define eMsgSig_UkeyVerifyEx -16378889
-#define eMsgSig_UkeyNormalMaintain -1043376910
-#define eMsgSig_UkeyInsert -568862035
-#define eMsgSig_InputPwd -954968110
-#define eMsgSig_Recommender 1982749368
-#define eMsgSig_TheUkeyInsert 1767270155
-#define eMsgSig_TheUkeyPullOut -458384894
-
-struct UkeyVerify
-{
-	CSimpleStringA AgentId;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & AgentId;
-	}
-
-};
-
-///////////////////////////
-
-struct UkeyPullOut
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-///////////////////////////
-
-struct UkeyVerifyEx
-{
-	CSimpleStringA UserInfo;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UserInfo;
-	}
-
-};
-
-///////////////////////////
-
-struct UkeyNormalMaintain
-{
-	CSimpleStringA UserInfo;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UserInfo;
-	}
-
-};
-
-///////////////////////////
-
-struct UkeyInsert
-{
-	CSimpleStringA UkeyID;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & UkeyID;
-	}
-
-};
-
-///////////////////////////
-
-struct InputPwd
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-///////////////////////////
-
-struct Recommender
-{
-	CSimpleStringA OfficeID;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & OfficeID;
-	}
-
-};
-
-///////////////////////////
-
-struct TheUkeyInsert
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-///////////////////////////
-
-struct TheUkeyPullOut
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-///////////////////////////
-
-} // namespace MaintainWatcher
-#endif // __MAINTAINWATCHER_MSG_G_H

+ 0 - 395
Module/mod_MaintainWatcher/MaintainWatcher_server_g.h

@@ -1,395 +0,0 @@
-
-#ifndef __MAINTAINWATCHER_SERVER_G_H
-#define __MAINTAINWATCHER_SERVER_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "MaintainWatcher_def_g.h"
-
-namespace MaintainWatcher {
-class MaintainCertificate_ServerSessionBase : public CServerSessionBase
-{
-public:
-	MaintainCertificate_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual ~MaintainCertificate_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual bool IsExclusive() { return false; }
-
-	virtual bool IsSessionOverlap() { return true; }
-
-	virtual ErrorCodeEnum GetMessageAttr(DWORD dwMessageID, DWORD dwSignature, bool &bOverlap)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case MaintainCertificate_Method_GetUserID:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetUserID) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetUkeyID:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetUkeyID) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetSerialNumber:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetSerialNumber) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetCertLife:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetCertLife) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetAuthorizedID:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetAuthorizedID) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetAuthorizeTime:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetAuthorizeTime) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetUserInfo:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetUserInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_SetSRStatus:
-			if (dwSignature == MaintainCertificate_MethodSignature_SetSRStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_VerifyPwd:
-			if (dwSignature == MaintainCertificate_MethodSignature_VerifyPwd) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetSignedInfo:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetSignedInfo) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_USB:
-			if (dwSignature == MaintainCertificate_MethodSignature_USB) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetEKeyStatus:
-			if (dwSignature == MaintainCertificate_MethodSignature_GetEKeyStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case MaintainCertificate_Method_GetUserID:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetUserID) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetUkeyID:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetUkeyID) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetSerialNumber:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetSerialNumber) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetCertLife:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetCertLife) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetAuthorizedID:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetAuthorizedID) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetAuthorizeTime:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetAuthorizeTime) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetUserInfo:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetUserInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_SetSRStatus:
-			if (dwSignature != MaintainCertificate_MethodSignature_SetSRStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_VerifyPwd:
-			if (dwSignature != MaintainCertificate_MethodSignature_VerifyPwd) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetSignedInfo:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetSignedInfo) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_USB:
-			if (dwSignature != MaintainCertificate_MethodSignature_USB) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case MaintainCertificate_Method_GetEKeyStatus:
-			if (dwSignature != MaintainCertificate_MethodSignature_GetEKeyStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	virtual void Handle_GetUserID(SpReqAnsContext<MaintainCertificate_GetUserID_Req, MaintainCertificate_GetUserID_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetUkeyID(SpReqAnsContext<MaintainCertificate_GetUkeyID_Req, MaintainCertificate_GetUkeyID_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetSerialNumber(SpReqAnsContext<MaintainCertificate_GetSerialNumber_Req, MaintainCertificate_GetSerialNumber_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetCertLife(SpReqAnsContext<MaintainCertificate_GetCertLife_Req, MaintainCertificate_GetCertLife_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetAuthorizedID(SpReqAnsContext<MaintainCertificate_GetAuthorizedID_Req, MaintainCertificate_GetAuthorizedID_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetAuthorizeTime(SpReqAnsContext<MaintainCertificate_GetAuthorizeTime_Req, MaintainCertificate_GetAuthorizeTime_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetUserInfo(SpReqAnsContext<MaintainCertificate_GetUserInfo_Req, MaintainCertificate_GetUserInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_SetSRStatus(SpReqAnsContext<MaintainCertificate_SetSRStatus_Req, MaintainCertificate_SetSRStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_VerifyPwd(SpReqAnsContext<MaintainCertificate_VerifyPwd_Req, MaintainCertificate_VerifyPwd_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetSignedInfo(SpReqAnsContext<MaintainCertificate_GetSignedInfo_Req, MaintainCertificate_GetSignedInfo_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_USB(SpReqAnsContext<MaintainCertificate_USB_Req, MaintainCertificate_USB_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetEKeyStatus(SpReqAnsContext<MaintainCertificate_GetEKeyStatus_Req, MaintainCertificate_GetEKeyStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
-	{
-		CAutoBuffer Buf;
-		DWORD dwMessageID;
-		DWORD dwMessageSignature;
-		ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf);
-		if (Error == Error_Succeed) {
-#ifdef DEBUG
-			assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed);
-#else
-			if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) {
-				pTransactionContext->SendAnswer(Error_MethodSignatureFailed);
-				return;
-			}
-#endif
-			switch (dwMessageID) {
-				case MaintainCertificate_Method_GetUserID:
-					{
-						SpReqAnsContext<MaintainCertificate_GetUserID_Req,MaintainCertificate_GetUserID_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetUserID_Req,MaintainCertificate_GetUserID_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetUserID(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetUkeyID:
-					{
-						SpReqAnsContext<MaintainCertificate_GetUkeyID_Req,MaintainCertificate_GetUkeyID_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetUkeyID_Req,MaintainCertificate_GetUkeyID_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetUkeyID(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetSerialNumber:
-					{
-						SpReqAnsContext<MaintainCertificate_GetSerialNumber_Req,MaintainCertificate_GetSerialNumber_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetSerialNumber_Req,MaintainCertificate_GetSerialNumber_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetSerialNumber(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetCertLife:
-					{
-						SpReqAnsContext<MaintainCertificate_GetCertLife_Req,MaintainCertificate_GetCertLife_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetCertLife_Req,MaintainCertificate_GetCertLife_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetCertLife(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetAuthorizedID:
-					{
-						SpReqAnsContext<MaintainCertificate_GetAuthorizedID_Req,MaintainCertificate_GetAuthorizedID_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetAuthorizedID_Req,MaintainCertificate_GetAuthorizedID_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetAuthorizedID(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetAuthorizeTime:
-					{
-						SpReqAnsContext<MaintainCertificate_GetAuthorizeTime_Req,MaintainCertificate_GetAuthorizeTime_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetAuthorizeTime_Req,MaintainCertificate_GetAuthorizeTime_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetAuthorizeTime(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetUserInfo:
-					{
-						SpReqAnsContext<MaintainCertificate_GetUserInfo_Req,MaintainCertificate_GetUserInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetUserInfo_Req,MaintainCertificate_GetUserInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetUserInfo(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_SetSRStatus:
-					{
-						SpReqAnsContext<MaintainCertificate_SetSRStatus_Req,MaintainCertificate_SetSRStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_SetSRStatus_Req,MaintainCertificate_SetSRStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_SetSRStatus(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_VerifyPwd:
-					{
-						SpReqAnsContext<MaintainCertificate_VerifyPwd_Req,MaintainCertificate_VerifyPwd_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_VerifyPwd_Req,MaintainCertificate_VerifyPwd_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_VerifyPwd(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetSignedInfo:
-					{
-						SpReqAnsContext<MaintainCertificate_GetSignedInfo_Req,MaintainCertificate_GetSignedInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetSignedInfo_Req,MaintainCertificate_GetSignedInfo_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetSignedInfo(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_USB:
-					{
-						SpReqAnsContext<MaintainCertificate_USB_Req,MaintainCertificate_USB_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_USB_Req,MaintainCertificate_USB_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_USB(ctx);
-					}
-					break;
-				case MaintainCertificate_Method_GetEKeyStatus:
-					{
-						SpReqAnsContext<MaintainCertificate_GetEKeyStatus_Req,MaintainCertificate_GetEKeyStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<MaintainCertificate_GetEKeyStatus_Req,MaintainCertificate_GetEKeyStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_GetEKeyStatus(ctx);
-					}
-					break;
-				default:
-					assert(0);
-					break;
-			}
-			
-		} else {
-			pTransactionContext->SendAnswer(Error);
-		}
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace MaintainWatcher
-#endif // __MAINTAINWATCHER_SERVER_G_H

+ 0 - 107
Module/mod_MaintainWatcher/UkeyService.xml

@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="gb2312" ?>
-<entity name="MaintainWatcher">
-	<class name="MaintainCertificate" overlap="true" exclusive="false">
-		<twoway name="GetUserID" overlap="true">
-			<res>
-					<param name="UserID" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetUkeyID" overlap="true">
-			<res>
-					<param name="UkeyID" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetSerialNumber" overlap="true">
-			<res>
-					<param name="SerialNumber" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetCertLife" overlap="true">
-			<res>
-					<param name="StartTime" type="string"/>
-					<param name="EndTime" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetAuthorizedID" overlap="true">
-			<res>
-					<param name="AuthorizedID" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetAuthorizeTime" overlap="true">
-			<res>
-					<param name="AuthorizeTime" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetUserInfo" overlap="true">
-			<res>
-					<param name="UserInfo" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="SetSRStatus" overlap="true">
-			<req>
-					<param name="status" type="int"/>
-			</req>
-		</twoway>
-		<twoway name="VerifyPwd" overlap="true">
-			<req>
-					<param name="Pwd" type="string"/>
-			</req>
-			<res>
-				  <param name="Errcode" type="double"/>
-					<param name="ErrMsg" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="GetSignedInfo" overlap="true">
-			<req>
-					<param name="ServiceNo" type="string"/>
-					<param name="SerialNo" type="string"/>
-			</req>
-			<res>
-					<param name="SignedInfo" type="string"/>
-			</res>
-		</twoway>
-		<twoway name="USB" overlap="true">
-			<req>
-				<param name="open" type="bool" />
-				<param name="reserved1" type="int" />
-				<param name="reserved2" type="int" />				
-				<param name="reserved3" type="string" />
-				<param name="reserved4" type="string" />
-			</req>
-			<res>
-				<param name="reserved1" type="int" />
-				<param name="reserved2" type="int" />				
-				<param name="reserved3" type="string" />
-				<param name="reserved4" type="string" />
-			</res>			
-		</twoway>
-		<twoway name="GetEKeyStatus" overlap="true">
-			<res>
-					<param name="status" type="int"/>
-			</res>
-		</twoway>
-	</class>
- <message name="UkeyVerify">
-   <param name="AgentId" type="string"/>
- </message>
- <message name="UkeyPullOut">
- </message> 
- <message name="UkeyVerifyEx">
-   <param name="UserInfo" type="string"/>
- </message>
- <message name="UkeyNormalMaintain">
-   <param name="UserInfo" type="string"/>
- </message>
- <message name="UkeyInsert">
- 	<param name="UkeyID" type="string"/>
- </message> 
- <message name="InputPwd">
- </message> 
- <message name="Recommender">
- 	<param name="OfficeID" type="string"/>
- </message>
- <message name="TheUkeyInsert">
- </message>
- <message name="TheUkeyPullOut">
- </message> 
-</entity>

+ 0 - 522
Module/mod_MaintainWatcher/mainfrm.cpp

@@ -1,522 +0,0 @@
-#include "stdafx2.h"
-#include "mainfrm.h"
-#include "ukeytask.h"
-
-BOOL CMainFrame::PreTranslateMessage( MSG* pMsg )
-{
-	return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg);
-}
-
-BOOL CMainFrame::OnIdle()
-{
-	BOOL bEnable = m_iSelectIdx != -1;
-	UIEnable(ID_START, bEnable);
-	UIEnable(ID_STOP, bEnable);
-	UIEnable(ID_PAUSE, bEnable);
-	UIEnable(ID_CONTINUE, bEnable);
-	UIEnable(ID_KILL, bEnable);
-	UIUpdateToolBar();
-	return FALSE;
-}
-
-int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
-{
-	CreateSimpleToolBar();
-	m_hWndStatusBar = m_status.Create(m_hWnd, rcDefault, NULL, WS_VISIBLE|WS_CHILD,WS_EX_STATICEDGE);
-	m_status.SetMinHeight(120);
-	int _parts[] = {400,200,200,-1};
-	m_status.SetParts(sizeof(_parts)/sizeof(_parts[0]), _parts);
-	//static
-	WTL::CStatic staticbar;
-	RECT rc;
-	m_status.GetRect(0, &rc);
-	rc.left += 5;
-	rc.right= rc.left+ 110;
-	rc.top += 30;
-	rc.bottom = rc.top + 30;
-	staticbar.Create(m_hWndStatusBar,&rc,"UKEY密码(8位)",WS_CHILD|WS_VISIBLE | ES_AUTOHSCROLL | ES_LEFT);
-	rc.left = rc.right-3;
-	rc.right= rc.left+ 180;
-	rc.top -= 5;
-	rc.bottom = rc.top + 30;
-	m_cmd.SetOwner(this);
-	m_cmd.Create(m_hWndStatusBar, &rc, NULL, WS_CHILD|ES_PASSWORD|WS_VISIBLE | ES_AUTOHSCROLL | ES_LEFT, WS_EX_STATICEDGE);
-	m_cmd.SetPasswordChar('*');
-	rc.left = rc.left+45;
-	rc.right= rc.left+ 80;
-	rc.top =rc.bottom+15;
-	rc.bottom = rc.top + 25;
-	m_OpenKeyboard.Create(m_hWndStatusBar, &rc,_T("软键盘"),WS_CHILD | WS_VISIBLE  |SS_NOTIFY  ,0,IDC_BTN_SOFTBOARD);
-	rc.left = rc.left+150;
-	rc.right= rc.left+ 80;
-	rc.top -=45;
-	rc.bottom = rc.top + 30;
-	m_PasswordOk.Create(m_hWndStatusBar, &rc,_T("确定"),WS_CHILD| WS_VISIBLE,0,IDC_BTN_OK);
-	//打开机柜按钮
-	m_status.GetRect(1, &rc);
-	rc.left = rc.left+80;
-	rc.top = rc.top+30;
-	rc.bottom = rc.top + 50;
-	rc.right = rc.left + 120;
-	m_OpenDoor.Create(m_hWndStatusBar, &rc,_T("打开机柜"),WS_CHILD| WS_VISIBLE,0,IDC_BTN_OPENDOOR);
-	rc.left = rc.right+60;
-	rc.right = rc.left + 120;
-	m_OpenLocalconsole.Create(m_hWndStatusBar, &rc,_T("进入本地维护"),WS_CHILD| WS_VISIBLE,0,IDC_BTN_LOCALCONSOLE);
-
-
-	m_hWndClient = m_splitter.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
-	UpdateLayout();
-	m_verticalSplitter.Create(m_splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
-	//output
-	m_output.Create(m_splitter, rcDefault, NULL, 
-		WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_LEFT|ES_MULTILINE|WS_VSCROLL, WS_EX_STATICEDGE);
-	m_output_font.CreateFont(20,0,0,0,FALSE,FALSE,FALSE,0,DEFAULT_CHARSET,
-		OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH,NULL);
-	m_output.SetFont(m_output_font);
-
-	CRect rect;
-	GetClientRect(rect);
-	m_splitter.SetSplitterPos(rect.Height()*3/5);
-	m_splitter.SetSplitterPanes(m_verticalSplitter, m_output);
-	m_left_list.Create(m_verticalSplitter, rcDefault, NULL, 
-		WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
-		LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SINGLESEL, 0, IDC_LIST1);
-	m_left_list.SetExtendedListViewStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0);
-
-	m_right_list.Create(m_verticalSplitter, rcDefault, NULL,
-		WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
-		LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SINGLESEL, 0, IDC_LIST2);
-	m_right_list.SetExtendedListViewStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0);
-
-	m_verticalSplitter.SetSplitterPos((rect.Width()-4)/2);
-	m_verticalSplitter.SetSplitterPanes(m_left_list, m_right_list);
-
-	LVCOLUMN col = {0};
-
-	col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
-	col.fmt = LVCFMT_LEFT;
-	col.cx = 5/3*rect.Width() / 10-1;
-	col.pszText = _T("terminalno");
-	m_left_list.InsertColumn(0, &col);
-	m_right_list.InsertColumn(0, &col);
-
-	col.pszText = _T("warning");
-	col.cx = 5/3*rect.Width() / 10-1;
-	m_left_list.InsertColumn(1, &col);
-	m_right_list.InsertColumn(1, &col);
-
-	col.pszText = _T("entityname");
-	col.cx = 5/3*rect.Width() / 10-1;
-	m_left_list.InsertColumn(2, &col);
-	m_right_list.InsertColumn(2, &col);
-
-	col.pszText = _T("time");
-	col.cx = 5/3*rect.Width() / 10-1;
-	m_left_list.InsertColumn(3, &col);
-	m_right_list.InsertColumn(3, &col);
-
-	UIAddToolBar(m_hWndToolBar);
-
-	CMessageLoop* pLoop = _Module.GetMessageLoop();
-	pLoop->AddMessageFilter(this);
-	pLoop->AddIdleHandler(this);
-
-	// load all entity
-	CAutoArray<EntityEntry> Entities;
-	m_pConsole->GetAllEntity(Entities);
-	for (int i = 0; i < Entities.GetCount(); ++i) {
-		LoadEntity(i, Entities[i]);
-	}
-
-	::AtlLoadAccelerators(MAKEINTRESOURCE(IDR_MAINFRAME));
-	return 0;
-}
-
-int CMainFrame::FindEntitylistItemIndex(int entity_id)
-{
-	int i;
-	for (i = 0; i < m_left_list.GetItemCount(); ++i) {
-		int id = (int)m_left_list.GetItemData(i);
-		if (id == entity_id)
-			return i*2;
-	}
-	for (i = 0; i < m_right_list.GetItemCount(); ++i) {
-		int id = (int)m_right_list.GetItemData(i);
-		if (id == entity_id)
-			return i*2+1;
-	}
-	return -1;
-}
-
-int CMainFrame::FindEntitylistItemIndex(const char *entity_name)
-{
-	int i;
-	for (i = 0; i < m_left_list.GetItemCount(); ++i) {
-		char str[128];
-		m_left_list.GetItemText(i, 0, str, sizeof(str));
-		char *p = strchr(str, ':');
-		if (p)
-			++p;
-		if (_stricmp(entity_name, p) == 0)
-			return i*2;
-	}
-	for (i = 0; i < m_right_list.GetItemCount(); ++i) {
-		char str[128];
-		m_right_list.GetItemText(i, 0, str, sizeof(str));
-		char *p = strchr(str, ':');
-		if (p)
-			++p;
-		if (_stricmp(entity_name, p) == 0)
-			return i*2+1;
-	}
-	return -1;
-}
-
-void CMainFrame::SetEntityState(int entity_id, int state, int pid)
-{
-	int idx = FindEntitylistItemIndex(entity_id);
-	if (idx != -1) {
-		char tmp[16];
-		wsprintfA(tmp, "%d", pid);
-		if (idx & 1) {
-			m_right_list.SetItem((idx-1)/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
-			m_right_list.SetItem((idx-1)/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
-		} else {
-			m_left_list.SetItem(idx/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
-			m_left_list.SetItem(idx/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
-		}
-	}
-}
-
-void CMainFrame::SetEntityState(const char *entity_name, int state, int pid)
-{
-	int idx = FindEntitylistItemIndex(entity_name);
-	if (idx != -1) {
-		char tmp[16];
-		wsprintfA(tmp, "%d", pid);
-		if (idx & 1) {
-			m_right_list.SetItem((idx-1)/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
-			m_right_list.SetItem((idx-1)/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
-		} else {
-			m_left_list.SetItem(idx/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
-			m_left_list.SetItem(idx/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
-		}
-	}
-}
-
-void CMainFrame::LoadEntity( int idx, EntityEntry &e )
-{
-	char tmp[16];
-	wsprintfA(tmp, "%d", e.Pid);
-	CSimpleStringA strName = CSimpleStringA::Format("%s:%s", (LPCSTR)e.ModuleName, (LPCSTR)e.Name);
-	if (idx & 1) {
-		idx = (idx-1)/2;
-		m_right_list.InsertItem(LVIF_PARAM|LVIF_TEXT, idx, (LPCSTR)strName, 0, 0, 0, e.Id);
-		m_right_list.AddItem(idx, 1, (LPCSTR)EntityEntry::GetTypeName(e.Type));
-		m_right_list.AddItem(idx, 2, (LPCSTR)EntityEntry::GetStateName(e.State));
-		m_right_list.AddItem(idx, 3, tmp);
-	} else {
-		idx = idx / 2;
-		m_left_list.InsertItem(LVIF_PARAM|LVIF_TEXT, idx, (LPCSTR)strName, 0, 0, 0, e.Id);
-		m_left_list.AddItem(idx, 1, (LPCSTR)EntityEntry::GetTypeName(e.Type));
-		m_left_list.AddItem(idx, 2, (LPCSTR)EntityEntry::GetStateName(e.State));
-		m_left_list.AddItem(idx, 3, tmp);
-	}
-}
-
-
-
-#define PREFIX_LEN	26
-// [2011-02-20 16:13:23.123] 
-void CMainFrame::output_printf(const char *fmt, ...)
-{
-	int len;
-	va_list arg;
-	va_start(arg, fmt);
-	len = _vscprintf(fmt, arg);
-	if (len > 0) {
-		SYSTEMTIME st;
-		char *buf;
-		GetLocalTime(&st);
-		buf = (char*)malloc(PREFIX_LEN + len+1);
-		sprintf(buf, "[%04d-%02d-%02d %02d:%02d:%02d.%03d] ", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
-		vsprintf(buf+PREFIX_LEN, fmt, arg);
-		m_strOuput += buf;
-		m_nLineCount++;
-
-		// 检测最大长度
-		CheckOutputMaxLen();
-
-		m_output.SetWindowText(m_strOuput);
-		m_output.SetFocus();
-		m_output.ShowCaret();
-		m_output.SetSel(m_strOuput.GetLength(), m_strOuput.GetLength());
-		m_output.LineScroll(-1);
-		free(buf);
-	}
-	va_end(arg);
-}
-
-void CMainFrame::CheckOutputMaxLen()
-{
-	if (m_nLineCount > 200)
-	{
-		int count = 0;
-		int index = 0;
-		while(count < 50 && index < m_strOuput.GetLength())
-		{
-			index = m_strOuput.Find("\r\n", index);
-			if (index == -1)
-				break;
-
-			index += 2;
-			count++;
-		}
-
-		if (index >0 && index < m_strOuput.GetLength())
-		{
-			m_strOuput.Delete(0, index);
-			m_nLineCount -= count;
-		}
-		else
-		{
-			m_strOuput = "";
-			m_nLineCount = 0;
-		}
-	}
-}
-
-#undef PREFIX_LEN
-
-
-LRESULT CMainFrame::OnListLeftItemchanged(NMHDR* phdr)
-{
-	NMLISTVIEW* pnmlv = (NMLISTVIEW*) phdr;
-	m_iSelectIdx = m_left_list.GetSelectedIndex();
-	if (m_iSelectIdx != -1) {
-		m_iSelectIdx = m_iSelectIdx * 2;
-	}
-	return 0;
-}
-
-LRESULT CMainFrame::OnListRightItemchanged(NMHDR* phdr)
-{
-	NMLISTVIEW* pnmlv = (NMLISTVIEW*) phdr;
-	m_iSelectIdx = m_right_list.GetSelectedIndex();
-	if (m_iSelectIdx != -1) {
-		m_iSelectIdx = m_iSelectIdx * 2+1;
-	}
-	return 0;
-}
-
-//LRESULT CMainFrame::OnSoftBoard()
-//{
-//   ShellExecute(NULL, _T("open"), _T("osk.exe"), NULL, NULL, SW_SHOW);
-//   return 0;
-//}
-
-LRESULT CMainFrame::OnListLeftItemclicked(NMHDR* phdr)
-{
-	m_iSelectIdx = m_left_list.GetSelectedIndex();
-	if (m_iSelectIdx != -1) {
-		m_iSelectIdx = m_iSelectIdx * 2;
-	}
-	return 0;
-}
-
-LRESULT CMainFrame::OnListRightItemclicked(NMHDR* phdr)
-{
-	m_iSelectIdx = m_right_list.GetSelectedIndex();
-	if (m_iSelectIdx != -1) {
-		m_iSelectIdx = m_iSelectIdx * 2+1;
-	}
-	return 0;
-}
-
-void CMainFrame::OnTimer(UINT_PTR nIDEvent)
-{
-	if (m_bOperationPending) {
-	}
-}
-
-void CMainFrame::StartEntity(const char *entity_name, const char *cmdline)
-{
-	ErrorCodeEnum Error = m_pConsole->AsyncStartEntity(entity_name, cmdline, NULL);
-	if (Error == Error_Succeed) {
-		output_printf("starting %s\r\n", entity_name);
-		m_bOperationPending = TRUE;
-		SetTimer(0, 100, NULL);
-	} else {
-		output_printf("start %s failed, error = 0x%08X\r\n", entity_name, Error);
-	}
-}
-
-void CMainFrame::StopEntity(const char *entity_name)
-{
-	ErrorCodeEnum Error = m_pConsole->AsyncStopEntity(entity_name, NULL);
-	if (Error == Error_Succeed) {
-		output_printf("stopping %s\r\n", entity_name);
-		m_bOperationPending = TRUE;
-		SetTimer(0, 100, NULL);
-	} else {
-		output_printf("stop %s failed, error = 0x%08X\r\n", entity_name, Error);
-	}
-}
-
-void CMainFrame::OnEditEnter(const char *tmp)
-{
-	char entity[128];
-	if (_strnicmp(tmp, "start", 5) == 0) { /* start entity */
-		const char *p = tmp+5;
-		while (*p == ' ') p++;
-		if (sscanf(p, "%s", entity) == 1) {
-			const char *cmdline = p + strlen(entity);
-			while (*cmdline == ' ') cmdline++;
-			StartEntity(entity, cmdline);
-		} else {
-			output_printf("invalid input format!\r\n");
-		}
-	} else if (_strnicmp(tmp, "stop", 4) == 0) { /* stop entity */
-		const char *p = tmp+4;
-		while (*p == ' ') p++;
-		if (sscanf(p, "%s", entity) == 1) {
-			StopEntity(entity);
-		} else {
-			output_printf("invalid input format!\r\n");
-		}
-	} else if (_strnicmp(tmp, "pause", 5) == 0) { /* pause entity */
-		const char *p = tmp+5;
-		while (*p == ' ') p++;
-		if (sscanf(p, "%s", entity) == 1) {
-			//PauseEntity(entity);
-		} else {
-			output_printf("invalid input format!\r\n");
-		}
-	} else if (_strnicmp(tmp, "continue", 8) == 0) { /* continue entity */
-		const char *p = tmp+8;
-		while (*p == ' ') p++;
-		if (sscanf(p, "%s", entity) == 1) {
-			//ContinueEntity(entity);
-		} else {
-			output_printf("invalid input format!\r\n");
-		}
-	} else if (_strnicmp(tmp, "terminate", 9) == 0) { /* terminate entity */
-		const char *p = tmp+9;
-		while (*p == ' ') p++;
-		if (sscanf(p, "%s", entity) == 1) {
-			//TerminateEntity(entity);
-		} else {
-			output_printf("invalid input format!\r\n");
-		}
-	} else if (_stricmp(tmp, "help") == 0 || _stricmp(tmp, "?") == 0) {
-		Usage();
-	}
-	m_cmd.SetWindowText(NULL);
-}
-
-void CMainFrame::Usage()
-{
-	output_printf("help -- display help usage\r\n");
-	output_printf("start <Entity_Name> [arg1] [arg2] ... [argn] -- start entity with args[optional] \r\n");
-	output_printf("stop <Entity_Name> -- stop entity\r\n");
-	output_printf("pause <Entity_Name> -- pause entity\r\n");
-	output_printf("continue <Entity_Name> -- pause entity\r\n");
-	output_printf("terminate <Entity_Name> -- terminate entity\r\n");
-}
-
-HBRUSH CMainFrame::OnCtlColorEdit( CDCHandle dc, CEdit edit )
-{
-	if (m_output.m_hWnd == edit.m_hWnd) {
-		dc.SetTextColor(RGB(0, 255, 0));
-		dc.SetBkColor(RGB(0,0,0));
-		return (HBRUSH)GetStockObject(BLACK_BRUSH);
-	} else {
-		SetMsgHandled(FALSE);
-		return 0;
-	}
-}
-
-HBRUSH CMainFrame::OnCtlColorStatic( CDCHandle dc, CStatic wndStatic )
-{
-	if (m_output.m_hWnd == wndStatic.m_hWnd) {
-		dc.SetTextColor(RGB(0, 255, 0));
-		dc.SetBkColor(RGB(0, 0, 0));
-		return (HBRUSH)GetStockObject(BLACK_BRUSH);
-	} else {
-		SetMsgHandled(FALSE);
-		return 0;
-	}
-}
-
-void CMainFrame::OnOutputChanged( UINT uNotifyCode, int nID, CWindow wndCtl )
-{
-	int n = m_output.GetWindowTextLength();
-	m_strOuput.GetBufferSetLength(n); 
-	m_output.GetWindowText(m_strOuput.GetBufferSetLength(n), n+1);
-}
-
-void CMainFrame::OnStartMenuRange(UINT uNotifyCode, int nID, CWindow wndCtl)
-{
-	CMenuHandle menuMain = GetMenu();
-	CMenuHandle menuStartList = menuMain.GetSubMenu(2);
-	WTL::CString strText;
-	menuStartList.GetMenuStringA(nID, strText, MF_BYCOMMAND);
-	if (strText.GetLength() > 0) {
-		int m = strText.Find("\t", 0);
-		if (m > 0) {
-			strText = strText.Left(m);
-		}
-		const char *p = strchr(strText, ' ');
-		if (p) {
-			char name[128];
-			memcpy(name, strText, p-(LPCSTR)strText);
-			name[p-(LPCSTR)strText] = 0;
-			p++;
-			StartEntity(name, p);
-		}
-	}
-}
-
-void CCommandEdit::OnChar( UINT nChar, UINT nRepCnt, UINT nFlags )
-{
-	if (nChar == VK_RETURN) {
-		char tmp[512];
-		int n = GetWindowText(tmp, sizeof(tmp));
-		if (n <= 0)
-			return;
-		if (m_nHistorySize) {
-			int last = (m_nHistoryHead + m_nHistorySize-1) % MAX_HISTORY;
-			if (strcmp(tmp, m_strHistoryList[last]) != 0) {
-				m_nHistoryCursor = (m_nHistoryHead + m_nHistorySize) % MAX_HISTORY;
-				m_strHistoryList[m_nHistoryCursor] = tmp;
-				m_nHistorySize = (m_nHistorySize + 1) % MAX_HISTORY;
-			}
-		} else {
-			m_nHistoryCursor = (m_nHistoryHead + m_nHistorySize) % MAX_HISTORY;
-			m_strHistoryList[m_nHistoryCursor] = tmp;
-			m_nHistorySize = (m_nHistorySize + 1) % MAX_HISTORY;
-		}
-		m_frm->OnEditEnter(tmp);
-		SetWindowText(NULL);
-	} else {
-		SetMsgHandled(FALSE);
-	}
-}
-//
-//void CCommandEdit::OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )
-//{
-//	int last = m_nHistoryCursor; 
-//
-//	if (nChar == VK_UP) {
-//		if (m_nHistoryCursor != m_nHistoryHead)
-//			m_nHistoryCursor = (m_nHistoryCursor + MAX_HISTORY - 1) % MAX_HISTORY;
-//		SetWindowText(m_strHistoryList[last]);
-//	} else if (nChar == VK_DOWN) {
-//		if (m_nHistorySize && (m_nHistoryCursor != (m_nHistoryHead+m_nHistorySize-1) % MAX_HISTORY))
-//			m_nHistoryCursor = (m_nHistoryCursor + 1) % MAX_HISTORY;
-//		SetWindowText(m_strHistoryList[last]);
-//	} else {
-//		SetMsgHandled(FALSE);
-//	}
-//}
-

+ 0 - 141
Module/mod_MaintainWatcher/mainfrm.h

@@ -1,141 +0,0 @@
-#ifndef __MAIN_FRAME_H
-#define __MAIN_FRAME_H
-
-#pragma once
-
-#include "resource.h"
-#include "ukeytask.h"
-
-class CMainFrame;
-
-//class CUkeyVerifyDlg : public ATL::CDialogImpl<CUkeyVerifyDlg>, ISysVarListener
-//{
-//public:
-//	CUkeyVerifyDlg(UKEYTask *pTask): m_pUkeyTask(pTask){}
-//	enum { IDD = IDD_VERIFYDLG};
-//
-//	BEGIN_MSG_MAP_EX(CUkeyVerifyDlg)
-//		MESSAGE_HANDLER_EX(WM_INITDIALOG, OnInitDialog)
-//
-//	END_MSG_MAP()
-//private:
-//	UKEYTask *m_pUkeyTask;
-//};
-
-class CCommandEdit : public ATL::CWindowImpl<CCommandEdit, WTL::CEdit>
-{
-public:
-	enum { MAX_HISTORY = 50 };
-
-	BEGIN_MSG_MAP_EX(CCommandEdit)
-		MSG_WM_CHAR(OnChar)
-	END_MSG_MAP()
-	CCommandEdit() : m_nHistoryCursor(0), m_nHistorySize(0), m_nHistoryHead(0) {}
-
-	void SetOwner(CMainFrame *frm) { m_frm = frm; }
-	void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
-private:
-	int m_nHistoryCursor;
-	int m_nHistorySize;
-	int m_nHistoryHead;
-	WTL::CString m_strHistoryList[MAX_HISTORY];
-	CMainFrame *m_frm;
-};
-
-class CMainFrame : public WTL::CFrameWindowImpl<CMainFrame>,
-			       public WTL::CMessageFilter, 
-				   public WTL::CIdleHandler,
-				   public WTL::CUpdateUI<CMainFrame>
-{
-public:
-	DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
-
-	CMainFrame(IConsole *pConsole) : m_pConsole(pConsole), m_bOperationPending(FALSE), m_iSelectIdx(-1), m_nLineCount(0) {}
-	virtual ~CMainFrame() {}
-
-	virtual BOOL PreTranslateMessage(MSG* pMsg);
-	virtual BOOL OnIdle();
-
-	BEGIN_MSG_MAP_EX(CMainFrame)
-		MSG_WM_CREATE(OnCreate)
-		MSG_WM_TIMER(OnTimer)
-		MSG_WM_CTLCOLOREDIT(OnCtlColorEdit)
-		MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
-		COMMAND_RANGE_HANDLER_EX(ID_STARTMENU_BEGIN, ID_STARTMENU_END, OnStartMenuRange)
-		COMMAND_CODE_HANDLER_EX(EN_CHANGE, OnOutputChanged)
-		NOTIFY_HANDLER_EX(IDC_LIST1, LVN_ITEMCHANGED, OnListLeftItemchanged)
-		NOTIFY_HANDLER_EX(IDC_LIST2, LVN_ITEMCHANGED, OnListRightItemchanged)
-		NOTIFY_HANDLER_EX(IDC_LIST1, NM_CLICK, OnListLeftItemclicked)
-		NOTIFY_HANDLER_EX(IDC_LIST2, NM_CLICK, OnListRightItemclicked)
-		CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
-		CHAIN_MSG_MAP(WTL::CFrameWindowImpl<CMainFrame>)
-	END_MSG_MAP()
-
-	BEGIN_UPDATE_UI_MAP(CMainFrame)
-		UPDATE_ELEMENT(ID_START, UPDUI_TOOLBAR)
-		UPDATE_ELEMENT(ID_STOP, UPDUI_TOOLBAR)
-		UPDATE_ELEMENT(ID_PAUSE, UPDUI_TOOLBAR)
-		UPDATE_ELEMENT(ID_CONTINUE, UPDUI_TOOLBAR)
-		UPDATE_ELEMENT(ID_KILL, UPDUI_TOOLBAR)
-		UPDATE_ELEMENT(ID_FILE_SUBSCRIBE, UPDUI_MENUPOPUP)
-		UPDATE_ELEMENT(ID_FILE_UNSUBSCRIBE, UPDUI_MENUPOPUP)
-	END_UPDATE_UI_MAP()
-
-	int OnCreate(LPCREATESTRUCT lpCreateStruct);
-
-	LRESULT OnListLeftItemchanged(NMHDR* phdr);
-	LRESULT OnListRightItemchanged(NMHDR* phdr);
-	LRESULT OnListLeftItemclicked(NMHDR* phdr);
-	LRESULT OnListRightItemclicked(NMHDR* phdr);
-	void OnTimer(UINT_PTR nIDEvent);
-	HBRUSH OnCtlColorEdit(CDCHandle dc, CEdit edit);
-	HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic);
-	void OnOutputChanged(UINT uNotifyCode, int nID, CWindow wndCtl);
-	void OnStartMenuRange(UINT uNotifyCode, int nID, CWindow wndCtl);
-
-	WTL::CListViewCtrl m_left_list;
-	WTL::CListViewCtrl m_right_list;
-	WTL::CSplitterWindow m_verticalSplitter;
-	WTL::CHorSplitterWindow m_splitter;
-	WTL::CEdit m_output;
-	CCommandEdit m_cmd;
-	WTL::CFont m_output_font;
-	WTL::CStatusBarCtrl m_status;
-	WTL::CString m_strOuput;	
-	WTL::CButton m_OpenDoor;
-	WTL::CButton m_OpenLocalconsole;
-	WTL::CButton m_OpenKeyboard;
-	WTL::CButton m_PasswordOk;
-	WTL::CButton m_OpenLocalConsole;
-	int m_nLineCount;
-
-	BOOL m_bOperationPending;
-	int m_iSelectIdx;
-
-	//
-	// IConsoleUISink
-
-
-	void StartEntity(const char *entity_name, const char *cmdline);
-	void StopEntity(const char *entity_name);
-
-	void output_printf(const char *fmt, ...);
-	void CheckOutputMaxLen();
-
-	void OnEditEnter(const char *tmp);
-	void Usage();
-
-private:
-
-	int FindEntitylistItemIndex(int entity_id);
-	int FindEntitylistItemIndex(const char *entity_name);
-	void SetEntityState(int entity_id, int state, int pid);
-	void SetEntityState(const char *entity_name, int state, int pid);
-	void LoadEntity( int idx, EntityEntry &e);
-	void SetEntity();
-
-private:
-	IConsole *m_pConsole;
-};
-
-#endif // __MAIN_FRAME_H

+ 0 - 465
Module/mod_MaintainWatcher/mod_MaintainWatcher.cpp

@@ -1,465 +0,0 @@
-#include "stdafx2.h"
-#include "SpBase.h"
-#include "ConsoleFSM.h"
-#include "MaintainWatcher_server_g.h"
-#include "MaintainWatcher_def_g.h"
-#include "..\EventCode.h"
-
-using namespace  MaintainWatcher;
-class CUKEYConsoleEntity;
-
-class MaintainWatcherSession : public MaintainCertificate_ServerSessionBase
-{
-public:
-	MaintainWatcherSession(CUKEYConsoleEntity *pEntity): m_pEntity(pEntity) {}
-	virtual ~MaintainWatcherSession() {}
-
-	virtual void Handle_GetUserID(SpReqAnsContext<MaintainCertificate_GetUserID_Req, MaintainCertificate_GetUserID_Ans>::Pointer ctx);
-	virtual void Handle_GetUkeyID(SpReqAnsContext<MaintainCertificate_GetUkeyID_Req, MaintainCertificate_GetUkeyID_Ans>::Pointer ctx);
-	virtual void Handle_GetSerialNumber(SpReqAnsContext<MaintainCertificate_GetSerialNumber_Req, MaintainCertificate_GetSerialNumber_Ans>::Pointer ctx);
-	virtual void Handle_GetCertLife(SpReqAnsContext<MaintainCertificate_GetCertLife_Req, MaintainCertificate_GetCertLife_Ans>::Pointer ctx);
-	virtual void Handle_GetAuthorizedID(SpReqAnsContext<MaintainCertificate_GetAuthorizedID_Req, MaintainCertificate_GetAuthorizedID_Ans>::Pointer ctx);
-	virtual void Handle_GetAuthorizeTime(SpReqAnsContext<MaintainCertificate_GetAuthorizeTime_Req, MaintainCertificate_GetAuthorizeTime_Ans>::Pointer ctx);
-	virtual void Handle_GetUserInfo(SpReqAnsContext<MaintainCertificate_GetUserInfo_Req, MaintainCertificate_GetUserInfo_Ans>::Pointer ctx);
-	virtual void Handle_SetSRStatus(SpReqAnsContext<MaintainCertificate_SetSRStatus_Req, MaintainCertificate_SetSRStatus_Ans>::Pointer ctx);
-	virtual void Handle_GetSignedInfo(SpReqAnsContext<MaintainCertificate_GetSignedInfo_Req, MaintainCertificate_GetSignedInfo_Ans>::Pointer ctx);
-	virtual void Handle_VerifyPwd(SpReqAnsContext<MaintainCertificate_VerifyPwd_Req, MaintainCertificate_VerifyPwd_Ans>::Pointer ctx);
-	virtual void Handle_USB(SpReqAnsContext<MaintainCertificate_USB_Req, MaintainCertificate_USB_Ans>::Pointer ctx);
-	virtual void Handle_GetEKeyStatus(SpReqAnsContext<MaintainCertificate_GetEKeyStatus_Req, MaintainCertificate_GetEKeyStatus_Ans>::Pointer ctx);
-	
-private:
-	CUKEYConsoleEntity *m_pEntity;
-};
-
-class CUKEYConsoleEntity : public CEntityBase, public ILogListener
-{
-public:
-	CUKEYConsoleEntity() {}
-	virtual ~CUKEYConsoleEntity() {}
-	virtual const char *GetEntityName() const { return "MaintainWatcher"; }
-
-	virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 
-	{ 
-		// 定阅所有日志和Dbg信息显示用
-		//MessageBoxA(0,0,0,0);
-		//GetFunction()->SubscribeLog(m_logSubID, this, Log_Ignore, Severity_None, Error_IgnoreAll, -2, NULL, false);
-
-		//订阅进入推荐人事件
-		CUUID m_SubIDReturnMenu;
-		ErrorCodeEnum Error = GetFunction()->SubscribeLog(m_SubIDReturnMenu, this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_IEBROWSER_SET_RECOMMANDDER, "IEBrowser", false);
-		if (Error_Succeed != Error) 
-		{
-			Dbg("SubScribe LOG_EVT_BROWSER_SET_RECOMMANDDER failed.");
-			LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_SUBSCRIBE,
-				GetOutPutStr("%s%08X%s%08X","SubscribeLog",Error,"Event", LOG_EVT_IEBROWSER_SET_RECOMMANDDER).c_str());
-		}
-
-		//Error = Error_Succeed;
-		Error = m_fsm.Init(this);
-		pTransactionContext->SendAnswer(Error) ;
-	}
-
-	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext) 
-	{ 
-		pTransactionContext->SendAnswer(Error_Succeed); 
-	}
-
-	virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
-		const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, 
-		const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext& pLinkInfo) 
-	{
-		if (dwUserCode == LOG_EVT_IEBROWSER_SET_RECOMMANDDER) 
-		{
-			Dbg("recv LOG_EVT_BROWSER_SET_RECOMMANDDER event from IEBrowser");
-			m_fsm.SetRecommender();
-		}	
-
-		if (strlen(pszMessage)>2)
-		{
-			CSimpleStringA str = pszMessage;
-			if (str[str.GetLength()-2] == '\r' && str[str.GetLength()-1]=='\n')
-				str[str.GetLength()-2] = 0;
-						
-			if (eLogType == Log_Error)
-				str = CSimpleStringA::Format("[%s] %s || SysCode: 0x%X, UserCode: 0x%X\r\n", pszEntityName, (const char*)str, dwSysError, dwUserCode);
-			else
-				str = CSimpleStringA::Format("[%s] %s\r\n", pszEntityName, (const char*)str);
-		}
-	}
-
-	virtual bool IsService()const{return true;}
-	virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/){return new MaintainWatcherSession(this);}
-	void GetEkeyStatus(int &status) {
-		m_fsm.GetEkeyStatus(status);
-	}
-public:
-	ConsoleFSM m_fsm;
-};
-
-void MaintainWatcherSession::Handle_GetUserID(SpReqAnsContext<MaintainCertificate_GetUserID_Req, MaintainCertificate_GetUserID_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cUserID[17] = {0};
-	bool bRet = GetUserIDFromCert(USER_CERT_PATH, FORMAT_PEM, cUserID);
-	//DWORD dwRet = GetHIDFromCert(cHID);
-	if (bRet)
-	{
-		ctx->Ans.UserID = cUserID;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.UserID = "";
-		ctx->Answer(Error_Unexpect);
-	}
-
-
-}
-void MaintainWatcherSession::Handle_GetEKeyStatus(SpReqAnsContext<MaintainCertificate_GetEKeyStatus_Req, MaintainCertificate_GetEKeyStatus_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	int status;
-	m_pEntity->GetEkeyStatus(status);
-	ctx->Ans.status = status;
-	ctx->Answer(Error_Succeed);
-}
-void MaintainWatcherSession::Handle_GetUkeyID(SpReqAnsContext<MaintainCertificate_GetUkeyID_Req, MaintainCertificate_GetUkeyID_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cHID[32] = {0};
-	bool bRet = GetHIDFromCert(USER_CERT_PATH, FORMAT_PEM, cHID);
-	if (bRet)
-	{
-		ctx->Ans.UkeyID = cHID;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.UkeyID = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_GetSerialNumber(SpReqAnsContext<MaintainCertificate_GetSerialNumber_Req, MaintainCertificate_GetSerialNumber_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cSerialNum[32] = {0};
-	bool bRet = GetSerialNoFromCert(USER_CERT_PATH, FORMAT_PEM, cSerialNum);
-	if (bRet)
-	{
-		ctx->Ans.SerialNumber = cSerialNum;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.SerialNumber = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_GetCertLife(SpReqAnsContext<MaintainCertificate_GetCertLife_Req, MaintainCertificate_GetCertLife_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cStratTime[32] = {0};
-	char cEndTime[32] = {0};
-	bool bRet = GetValidityFromCert(USER_CERT_PATH, FORMAT_PEM, cStratTime, cEndTime);
-	if (bRet)
-	{
-		ctx->Ans.StartTime = cStratTime;
-		ctx->Ans.EndTime = cEndTime;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.StartTime = "";
-		ctx->Ans.EndTime = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_GetAuthorizedID(SpReqAnsContext<MaintainCertificate_GetAuthorizedID_Req, MaintainCertificate_GetAuthorizedID_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cAuthorizedID[32] = {0};
-	bool bRet = GetAuthorizerIDFromCert(USER_CERT_PATH, FORMAT_PEM, cAuthorizedID);
-	if (bRet)
-	{
-		ctx->Ans.AuthorizedID = cAuthorizedID;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.AuthorizedID = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_GetAuthorizeTime(SpReqAnsContext<MaintainCertificate_GetAuthorizeTime_Req, MaintainCertificate_GetAuthorizeTime_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cAuthorizeTime[32] = {0};
-	bool bRet = GetAuthorizeTimeFromCert(USER_CERT_PATH, FORMAT_PEM, cAuthorizeTime);
-	if (bRet)
-	{
-		ctx->Ans.AuthorizeTime = cAuthorizeTime;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.AuthorizeTime = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_GetUserInfo(SpReqAnsContext<MaintainCertificate_GetUserInfo_Req, MaintainCertificate_GetUserInfo_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	char cUserType[3] = {0};
-	bool bRet = GetUserTypeFromCert(USER_CERT_PATH, FORMAT_PEM, cUserType);
-	if (!bRet)
-	{
-		Dbg("GetUserTypeFromCert err!");
-		//return;
-	}
-
-	char cUserInfo[2048] = {0};
-	bRet = GetUserInfoFromCert(USER_CERT_PATH, FORMAT_PEM, cUserInfo);
-
-	string strUserInfo = cUserInfo;
-	strUserInfo += "UserType=";
-	strUserInfo += cUserType;
-	strUserInfo += ";";
-	memcpy(cUserInfo, strUserInfo.c_str(), strUserInfo.length());
-	Dbg("Handle_GetUserInfo:UserInfo=%s", strUserInfo.c_str());
-
-	if (bRet)
-	{
-		ctx->Ans.UserInfo = cUserInfo;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.UserInfo = "";
-		ctx->Answer(Error_Unexpect);
-	}
-}
-
-void MaintainWatcherSession::Handle_SetSRStatus(SpReqAnsContext<MaintainCertificate_SetSRStatus_Req, MaintainCertificate_SetSRStatus_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	ctx->Answer(Error_Succeed); // 告知中台已经收到状态设置
-	m_pEntity->m_fsm.m_nSRState = ctx->Req.status;
-
-}
-
-void MaintainWatcherSession::Handle_VerifyPwd(SpReqAnsContext<MaintainCertificate_VerifyPwd_Req, MaintainCertificate_VerifyPwd_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DWORD dwRet = 0;
-	CSimpleStringA strErrmsg;
-	
-	if (8 == ctx->Req.Pwd.GetLength())
-	{
-		dwRet = m_pEntity->m_fsm.VerifyUser(ctx->Req.Pwd.GetData());
-	}
-	else
-	{
-		dwRet = 0xF000FFFF;
-	}
-
-	if (dwRet != 0)
-	{
-		switch (dwRet)
-		{
-		case 0xF0000001:
-			strErrmsg = "没有检测到电子钥匙,请插入电子钥匙!";
-			break;
-
-		case 0xF1000002:
-			strErrmsg = "加载电子钥匙失败,请确认电子钥匙是否初始化!";
-			break;
-
-		case 0xF1000007:
-			strErrmsg = "电子钥匙未开始生效,请确认电子钥匙有效期!";
-			break;
-
-		case 0xF1000008:
-			strErrmsg = "电子钥匙超过有效期,请续期!";
-			break;
-
-		case 0xF100000a:
-			strErrmsg = "电子钥匙CRL签名验证失败!";
-			break;
-
-		case 0xF100000b:
-			strErrmsg = "电子钥匙已被撤销, 请重新初始化电子钥匙!";
-			break;
-
-		case 0xF100000c:
-			strErrmsg = "电子钥匙HID(硬件ID)验证失败, 请重新初始化电子钥匙!";
-			break;
-
-		case 0xF100000d:
-			strErrmsg = "电子钥匙验证失败,请确认电子钥匙是否正确初始化!";
-			break;
-
-		case 0xF100000e:
-			strErrmsg = "申请内存失败, 终端内存不足!";
-			break;
-
-		case 0xF1000012:
-			strErrmsg = "从电子钥匙获取任务信息错误, 请确认是否下载任务到电子钥匙!";
-			break;
-
-		case 0xF1000013:
-			strErrmsg = "电子钥匙验证失败,请确认电子钥匙是否正确初始化!";
-			break;
-
-		case 0xF1000014:
-			strErrmsg = "电子钥匙未开始生效,请确认电子钥匙有效期!";
-			break;
-
-		case 0xF1000015:
-			strErrmsg = "电子钥匙超过有效期,请续期!";
-			break;
-
-		case 0xF0000018:
-			strErrmsg = "当前登录用户访问权限不够,请登录到Administrator用户!";/*打开本地3des密钥文件失败!*/
-			break;
-
-		case 0xF0000019:
-			strErrmsg = "当前登录用户访问权限不够,请登录到Administrator用户!";/*打开本地3des密钥长度错误!*/
-			break;
-
-		case 0xF000001a:
-			strErrmsg = "找不到电子钥匙驱动,请确认是否成功安装驱动!";
-			break;
-
-		case 0xF000001b:
-			strErrmsg = "当前登录用户访问权限不够,请登录到Administrator用户!";
-			break;
-
-		case 0xF000FF00:
-		case 0xF000FFFF:
-			strErrmsg = "电子钥匙密码错误,请确认后重新输入!";
-			break;
-
-		case 0xF000000F:
-			strErrmsg = "电子钥匙未初始化,请初始化!";
-			break;
-
-		case VERIFYTYPE_ERR:
-			strErrmsg = "电子钥匙不具备系统登录权限,认证类型错误!";
-			break;
-
-		case USERTYPE_ERR:
-			strErrmsg = "电子钥匙不具备系统登录权限,用户类型错误!";
-			break;
-
-		case GET_USERINFO_ERR:
-			strErrmsg = "从电子钥匙获取用户信息失败!";
-			break;
-
-		case IN_BLACKLIST_ERR:
-			strErrmsg = "当前电子钥匙已被禁用,请取消挂失或更换其他电子钥匙!";
-			break;
-
-		case GET_ISSUERNUM_ERR:
-			strErrmsg = "获取外拓卡箱号失败!";
-			break;
-
-		case VERIFY_ISSUERNUM_ERR:
-			strErrmsg = "不具备当前外拓卡箱号的操作授权,请下载任务!";
-			break;
-
-		case VERIFY_TERMINALNO_ERR:
-			strErrmsg = "不具备当前终端的操作授权,请下载任务!";
-			break;
-
-		case LOG_FULL_ERR:
-			strErrmsg = "电子钥匙操作日志记录已满,请先登录作业平台上传操作日志!";
-			break;
-
-		case GET_NO_FRAMEWORK_PERMIT_ERR:
-			strErrmsg = "电子钥匙类型不支持此操作!";
-			break;
-		
-		case TERMINAL_NO_TASK:
-			strErrmsg = "电子钥匙未下载设备的操作权限,请下载!!";
-			break;
-
-		case TERMINAL_AUTHORIZED_ERR:
-			strErrmsg = "电子钥匙不具备此设备操作授权,请确认是否已授权!";
-			break;
-
-		case TERMINAL_AUTHORIZED_OVERTIME_ERR:
-			strErrmsg = "设备授权已过期,请确认授权时间!";
-			break;
-
-		case TERMINAL_AUTHORIZED_NOTBEGIN_ERR:
-			strErrmsg = "设备授权未开始生效,请确认授权时间!";
-			break;
-
-		case GET_CERT_VALIDITY_ERR:
-			strErrmsg = "获取证书有效时间失败!";
-			break;
-
-		case OVERTTIMER_WAR:
-			strErrmsg = "电子钥匙即将过期,请及时续期!";
-			break;
-
-		default:
-			strErrmsg = "电子钥匙验证失败,请联系维护人员!";
-			break;
-		}
-	}
-
-	m_pEntity->m_fsm.m_strPwd = ctx->Req.Pwd;
-	m_pEntity->m_fsm.m_errcode = dwRet;
-	Dbg("VerifyUser return %08X, errmsg:%s",dwRet, strErrmsg);
-	LogWarn(Severity_Middle, Error_Unexpect, ERR_MAINTAINWATCHER_EKEY_VERIFY,
-		GetOutPutStr("%s%08X%s%s", "VerifyUser", dwRet, "strErrmsg", strErrmsg).c_str());
-	m_pEntity->m_fsm.VerifyOther();
-	ctx->Ans.Errcode = dwRet;
-	ctx->Ans.ErrMsg = strErrmsg;
-	ctx->Answer(Error_Succeed);
-}
-
-void MaintainWatcherSession::Handle_GetSignedInfo(SpReqAnsContext<MaintainCertificate_GetSignedInfo_Req, MaintainCertificate_GetSignedInfo_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-
-	//拼装待签名的内容
-	//格式:电子钥匙ID@AgentID@终端ID@时间@业务号@流水号
-	char cIndata[128];
-	sprintf(cIndata, "%s@%s@%s@%s@%s@%s",
-		m_pEntity->m_fsm.m_strKeyHID, 
-		m_pEntity->m_fsm.m_strTerminalId,
-		m_pEntity->m_fsm.m_strUserID, 
-		m_pEntity->m_fsm.m_strNowTime,
-		ctx->Req.SerialNo,  
-		ctx->Req.ServiceNo);
-
-	/*char cSignedInfo[128] = {0};
-	DWORD dwRet = GenSignedInfo(hHandle, pIndata, cSignedInfo);
-	if (0 == dwRet)
-	{
-		ctx->Ans.SignedInfo = cSignedInfo;
-		ctx->Answer(Error_Succeed);
-	}
-	else
-	{
-		ctx->Ans.SignedInfo = "";
-		ctx->Answer(Error_Unexpect);
-	}*/
-}
-
-void MaintainWatcherSession::Handle_USB(SpReqAnsContext<MaintainCertificate_USB_Req, MaintainCertificate_USB_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	ErrorCodeEnum eErr = m_pEntity->m_fsm.OpenGpio(ctx->Req.open);
-	ctx->Answer(eErr);	
-}
-SP_BEGIN_ENTITY_MAP()
-	SP_ENTITY(CUKEYConsoleEntity)
-SP_END_ENTITY_MAP()

+ 0 - 152
Module/mod_MaintainWatcher/mod_MaintainWatcher.vcxproj

@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E601C019-E2B1-4EDB-B165-1CA2647FCD5D}</ProjectGuid>
-    <RootNamespace>mod_guiconsole</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <ProjectName>mod_MaintainWatcher</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>Windows7.1SDK</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>Windows7.1SDK</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="..\modmake.setting" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(VCInstallDir)atlmfc\include;$(VCInstallDir)include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;</IncludePath>
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(VCInstallDir)atlmfc\lib;$(VCInstallDir)lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;</LibraryPath>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_GUICONSOLE_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>StdAfx2.h</PrecompiledHeaderFile>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(FrameworkHeadRoot)\Common;$(OtherHeadPath)\Libsharememory;$(OtherHeadPath)\systemVerify;$(OtherHeadPath)\VerifyCertificate;$(OtherHeadPath)\USBKeyAPI;$(ThirdPartyHeadRoot)\wtl81_12085\Include\;$(ThirdPartyHeadRoot)\openssl-1.0.2s\include</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <!--<AdditionalDependencies>libeay32.lib;ssleay32.lib;Dongle_s.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>-->
-      <!--<AddModuleNamesToAssembly>..\..\ThirdParty\openssl;</AddModuleNamesToAssembly>-->
-      <AdditionalDependencies>$(FrameworkLib)\SpBase.lib;$(FrameworkLib)\RVCComm.lib;$(FrameworkLib)\libtoolkit.lib;$(ThirdPartyLib)\libeay32.lib;$(ThirdPartyLib)\ssleay32.lib;Dongle_s.lib;ws2_32.lib;strmiids.lib;Vfw32.lib;winmm.lib;Msdmo.lib;dmoguids.lib;wmcodecdspuuid.lib;uuid.lib;amstrmid.lib;mfuuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_GUICONSOLE_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>StdAfx2.h</PrecompiledHeaderFile>
-      <AdditionalIncludeDirectories>$(FrameworkHeadRoot)\Common;$(OtherHeadPath)\Libsharememory;$(OtherHeadPath)\systemVerify;$(OtherHeadPath)\VerifyCertificate;$(OtherHeadPath)\USBKeyAPI;$(ThirdPartyHeadRoot)\wtl81_12085\Include\;$(ThirdPartyHeadRoot)\openssl-1.0.2s\include</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalDependencies>$(FrameworkLib)\SpBase.lib;$(FrameworkLib)\RVCComm.lib;$(FrameworkLib)\libtoolkit.lib;$(ThirdPartyLib)\ssleay32.lib;$(ThirdPartyLib)\Dongle_s.lib;ws2_32.lib;strmiids.lib;Vfw32.lib;winmm.lib;Msdmo.lib;dmoguids.lib;wmcodecdspuuid.lib;uuid.lib;amstrmid.lib;mfuuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ConsoleFSM.cpp" />
-    <ClCompile Include="ukeyconsole.cpp" />
-    <ClCompile Include="ukeytask.cpp" />
-    <ClCompile Include="mainfrm.cpp" />
-    <ClCompile Include="mod_MaintainWatcher.cpp" />
-    <ClCompile Include="stdafx2.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="$(FrameworkHeadRoot)\Common\stdafx.h" />
-    <ClInclude Include="..\..\Other\USBKeyAPI\ConmonSoftDog.h" />
-    <ClInclude Include="ConsoleFSM.h" />
-    <ClInclude Include="..\..\Other\USBKeyAPI\Dongle_API.h" />
-    <ClInclude Include="..\EventCode.h" />
-    <ClInclude Include="..\..\Other\USBKeyAPI\FTSoftDog.h" />
-    <ClInclude Include="..\..\Other\libsharememory\libsharememory.h" />
-    <ClInclude Include="logfile.h" />
-    <ClInclude Include="MaintainWatcherErrorCode.h" />
-    <ClInclude Include="MaintainWatcher_client_g.h" />
-    <ClInclude Include="MaintainWatcher_def_g.h" />
-    <ClInclude Include="MaintainWatcher_msg_g.h" />
-    <ClInclude Include="MaintainWatcher_server_g.h" />
-    <ClInclude Include="resource1.h" />
-    <ClInclude Include="ukeytask.h" />
-    <ClInclude Include="mainfrm.h" />
-    <ClInclude Include="stdafx2.h" />
-    <ClInclude Include="..\..\Other\USBKeyAPI\USBKeyAPI.h" />
-    <ClInclude Include="..\..\Other\VerifyCertificate\VerifyCertificate.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\other\VerifyCertificate\VerifyCertificate.vcxproj">
-      <Project>{543A38FD-7EDC-48CC-9CAF-DA0CCEAA05E3}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\other\USBKeyAPI\USBKeyAPI.vcxproj">
-      <Project>{0F00F5A0-F0AD-4F9C-82AA-0F0BADEC9ACD}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="mod_ukeyconsole1.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\Version.rc" />
-  </ItemGroup>
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties RESOURCE_FILE="mod_ukeyconsole.rc" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>

+ 0 - 182
Module/mod_MaintainWatcher/mod_ukeyconsole.rc

@@ -1,182 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// Chinese (Simplified, PRC) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
-#pragma code_page(936)
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDR_MAINFRAME           ICON                    "icon1.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-IDR_MAINFRAME           BITMAP                  "toolbar1.bmp"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_ABOUTBOX DIALOGEX 0, 0, 316, 52
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "About"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,243,26,50,14
-    LTEXT           "CCDG",IDC_STATIC,23,20,121,8
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
-    IDD_ABOUTBOX, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 309
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 45
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Accelerator
-//
-
-IDR_MAINFRAME ACCELERATORS
-BEGIN
-    VK_NUMPAD1,     ID_ACCELERATOR40019,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD2,     ID_ACCELERATOR40021,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD3,     ID_ACCELERATOR40022,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD4,     ID_ACCELERATOR40023,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD5,     ID_ACCELERATOR40024,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD6,     ID_ACCELERATOR40025,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD7,     ID_ACCELERATOR40026,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD8,     ID_ACCELERATOR40027,    VIRTKEY, CONTROL, NOINVERT
-    VK_NUMPAD9,     ID_ACCELERATOR40028,    VIRTKEY, CONTROL, NOINVERT
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
-    IDR_MAINFRAME           "USB KEY CONSOLE"
-END
-
-#endif    // Chinese (Simplified, PRC) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// English (United States) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_USBKEY_VERIFY DIALOGEX 0, 0, 247, 59
-STYLE DS_ABSALIGN | DS_SETFONT | DS_MODALFRAME | WS_CHILD | WS_CAPTION
-EXSTYLE WS_EX_CLIENTEDGE
-CAPTION "USB KEY????"
-FONT 14, "??", 400, 0, 0x86
-BEGIN
-    RTEXT           "USB KEY????(8?)",IDC_STATIC,16,23,82,8
-    EDITTEXT        IDC_PASSWORD,104,21,117,12,ES_PASSWORD | ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
-    IDD_USBKEY_VERIFY, DIALOG
-    BEGIN
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // English (United States) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-

+ 0 - 100
Module/mod_MaintainWatcher/mod_ukeyconsole.vcxproj.filters

@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="mainfrm.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="stdafx2.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ukeyconsole.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ukeytask.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ConsoleFSM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="mod_MaintainWatcher.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="mainfrm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="stdafx2.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\Framework\Common\stdafx.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ukeytask.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ConsoleFSM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="USBKeyAPI.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Dongle_API.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="FTSoftDog.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ConmonSoftDog.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="VerifyCertificate.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="libsharememory.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="logfile.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="EventCode.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="MaintainWatcher_client_g.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="MaintainWatcher_def_g.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="MaintainWatcher_server_g.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="resource1.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="GUIConsole.ini">
-      <Filter>Header Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="mod_ukeyconsole1.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-</Project>

BIN
Module/mod_MaintainWatcher/mod_ukeyconsole1.rc


+ 0 - 59
Module/mod_MaintainWatcher/resource.h

@@ -1,59 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by mod_ukeyconsole.rc
-//
-#define IDR_MAINFRAME                   101
-#define IDD_USBKEY_VERIFY               104
-#define IDD_ABOUTDIALOG                 106
-#define IDD_ABOUTBOX                    106
-
-#define IDD_VERIFYDLG                   107
-#define IDC_TASKINFOLIST				        108
-#define IDC_VERIFYPIN										109
-#define IDD_ABOUT						110
-
-#define IDC_PASSWORD                    1002
-#define IDC_LIST1                       4001
-#define IDC_LIST2                       4002
-#define ID_FILE_EXIT                    40001
-#define ID_HELP_ABOUT                   40002
-#define ID_START                        40003
-#define ID_STOP                         40004
-#define ID_PAUSE                        40005
-#define ID_CONTINUE                     40006
-#define ID_ABOUT                        40011
-#define ID_FRESH                        40014
-#define ID_KILL                         40015
-#define ID_CUSTOMIZESTART               40016
-#define ID_CUSTOMIZESTART40017          40017
-#define ID_CUSTOMIZESTART40018          40018
-#define ID_FILE_REBOOT                  40030
-#define ID_FILE_SUBSCRIBE               40031
-#define ID_FILE_UNSUBSCRIBE             40032
-#define ID_FILE_TEST                    40033
-#define ID_BUTTON40036                  40036
-#define ID_ACCELERATOR40019             41000
-#define ID_STARTMENU_BEGIN              41000
-#define ID_ACCELERATOR40021             41001
-#define ID_ACCELERATOR40022             41002
-#define ID_ACCELERATOR40023             41003
-#define ID_ACCELERATOR40024             41004
-#define ID_ACCELERATOR40025             41005
-#define ID_ACCELERATOR40026             41006
-#define ID_ACCELERATOR40027             41007
-#define ID_ACCELERATOR40028             41008
-#define ID_STARTMENU_END                42000
-#define IDC_BTN_OPENDOOR                 6000
-#define IDC_BTN_SOFTBOARD				6001
-#define IDC_BTN_OK				6002
-#define IDC_BTN_LOCALCONSOLE                 6003
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        108
-#define _APS_NEXT_COMMAND_VALUE         40038
-#define _APS_NEXT_CONTROL_VALUE         1003
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif

BIN
Module/mod_MaintainWatcher/resource1.h


+ 0 - 1
Module/mod_MaintainWatcher/stdafx2.cpp

@@ -1 +0,0 @@
-#include "stdafx2.h"

+ 0 - 26
Module/mod_MaintainWatcher/stdafx2.h

@@ -1,26 +0,0 @@
-#pragma once
-
-#include "targetver.h"
-#define _WTL_USE_CSTRING
-#define _ATL_NO_AUTOMATIC_NAMESPACE
-#include <atlbase.h>
-#include <atlapp.h>
-
-extern CAppModule _Module;
-
-#include <atlcom.h>
-#include <atlhost.h>
-#include <atlwin.h>
-#include <atlctl.h>
-#include <atlmisc.h>
-#include <atlframe.h>
-#include <atlctrls.h>
-#include <atldlgs.h>
-#include <atlctrlw.h>
-#include <atlctrlx.h>
-#include <atlsplit.h>
-#include <atlcrack.h>
-#include <atlgdi.h>
-#include "atlddx.h"
-
-#include "stdafx.h"

+ 0 - 54
Module/mod_MaintainWatcher/ukeyconsole.cpp

@@ -1,54 +0,0 @@
-#include "stdafx2.h"
-#include "resource.h"
-#include "MainFrm.h"
-
-CAppModule _Module;
-
-int WINAPI gui_entry(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow, HWND *phWnd, IConsole *pConsole)
-{
-	HRESULT hRes = ::CoInitialize(NULL);
-	// If you are running on NT 4.0 or higher you can use the following call instead to 
-	// make the EXE free threaded. This means that calls come in on a random RPC thread.
-	//	HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
-	ATLASSERT(SUCCEEDED(hRes));
-
-	// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
-	::DefWindowProc(NULL, 0, 0, 0L);
-
-	AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES);	// add flags to support other controls
-
-	hRes = _Module.Init(NULL, hInstance);
-	ATLASSERT(SUCCEEDED(hRes));
-
-	ATL::AtlAxWinInit();
-
-	CMessageLoop theLoop;
-	_Module.AddMessageLoop(&theLoop);
-
-	CMainFrame wndMain(pConsole);
-	pConsole->Initialize();
-
-	if(wndMain.CreateEx() == NULL)
-	{
-		ATLTRACE(_T("Main window creation failed!\n"));
-		return -1;
-	}
-
-	if (phWnd) {
-		*phWnd = wndMain.m_hWnd;
-	}
-	pConsole->OnStartRead(TRUE);
-	wndMain.ShowWindow(nCmdShow);
-
-	int nRet = theLoop.Run();
-
-	_Module.RemoveMessageLoop();
-
-	_Module.Term();
-	::CoUninitialize();
-
-	pConsole->UnInitialize();
-	pConsole->OnStopReady();
-
-	return nRet;
-}

+ 0 - 241
Module/mod_MaintainWatcher/ukeytask.cpp

@@ -1,241 +0,0 @@
-#include "stdafx2.h"
-#include "SpBase.h"
-#include "ukeytask.h"
-
-
-extern int WINAPI gui_entry(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow, HWND *phWnd, IConsole *pConsole);
-#define OP_START_ENTITY		1
-#define OP_STOP_ENTITY		0
-#define OP_PAUSE_ENTITY		2
-#define OP_TERMINATE_ENTITY 3
-#define OP_CONTINUE_ENTITY	4
-#define OP_FIRE_ENTITY_STATE		5
-
-struct callback_entry : public IReleasable
-{
-	virtual ~callback_entry() {}
-	CSimpleStringA EntityName;
-	union {
-		void *pRawData;
-		int state;
-	};
-	int op;
-	ErrorCodeEnum ErrorResult;
-};
-
-ErrorCodeEnum UKEYTask::CloseWindow()
-{
-	if (m_hWndMainFrame) {
-		PostMessageA(m_hWndMainFrame, WM_CLOSE, -1, -1);
-		WaitForSingleObject(m_hEventStopReady, INFINITE);
-		return Error_Succeed;
-	} else {
-		return Error_NotInit;
-	}
-}
-
-ErrorCodeEnum UKEYTask::WaitWindowCreated()
-{
-	WaitForSingleObject(m_hEventStartReady, INFINITE);
-	return Error_Succeed;
-}
-
-void UKEYTask::Process()
-{
-	{
-		m_pEntity->GetFunction()->InitLogCurrentThread();
-	}
-	gui_entry(ModuleBase::GetModuleBase()->GetInstance(), NULL, NULL, SW_SHOW, &m_hWndMainFrame, this);
-	m_hWndMainFrame = NULL;
-}
-
-ErrorCodeEnum UKEYTask::Initialize()
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		//ErrorCodeEnum Error = pFuncPrivilege->RegistEntityStateEvent(NULL, this); // NULL to register for all
-		//if (Error == Error_Succeed) {
-		//	ResetEvent(m_hEventStartReady);
-		//	ResetEvent(m_hEventStopReady);
-		//	LOG_ASSERT(m_pSink == NULL);
-		//}
-		//return Error;
-			return Error_Succeed;
-	} else {
-		return Error_NoPrivilege;
-	}
-}
-
-ErrorCodeEnum UKEYTask::UnInitialize()
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		ErrorCodeEnum Error = pFuncPrivilege->UnregistEntityStateEvent(NULL);
-		return Error;
-	} else {
-		return Error_NoPrivilege;
-	}
-}
-
-void UKEYTask::OnStartRead(BOOL bOk)
-{
-	SetEvent(m_hEventStartReady);
-}
-
-void UKEYTask::OnStopReady()
-{
-	SetEvent(m_hEventStopReady);
-}
-
-ErrorCodeEnum UKEYTask::ReqFrameworkQuit()
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) 
-	{
-		return pFuncPrivilege->Reboot(RebootTrigger_ManualLocal, RebootWay_Framework);
-	}
-
-	return Error_Unexpect;
-}
-
-ErrorCodeEnum UKEYTask::AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData)
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		CSmartPointer<IAsynWaitSp> spWait;
-		ErrorCodeEnum Error = pFuncPrivilege->StartEntity(entity_name, cmdline, spWait);
-		if (Error == Error_Succeed) {
-			callback_entry *entry = new callback_entry();
-			entry->pRawData = pData;
-			entry->EntityName = entity_name;
-			entry->ErrorResult = Error_Unexpect;
-			entry->op = OP_START_ENTITY;
-			spWait->SetCallback(this, entry);
-		}
-		return Error;
-	} else {
-		return Error_NoPrivilege;
-	}
-}
-
-ErrorCodeEnum UKEYTask::AsyncStopEntity(const char *entity_name, void *pData)
-{
-	CSmartPointer<IEntityFunction> pFunc = m_pEntity->GetFunction();
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = pFunc.ConvertCase<IEntityFunctionPrivilege>();
-	if (pFuncPrivilege != NULL) {
-		CSmartPointer<IAsynWaitSp> spWait;
-		ErrorCodeEnum Error = pFuncPrivilege->StopEntity(entity_name, spWait);
-		if (Error == Error_Succeed) {
-			callback_entry *entry = new callback_entry();
-			entry->pRawData = pData;
-			entry->EntityName = entity_name;
-			entry->ErrorResult = Error_Unexpect;
-			entry->op = OP_STOP_ENTITY;
-			spWait->SetCallback(this, entry);
-		}
-		return Error;
-	} else {
-		return Error_NoPrivilege;
-	}
-}
-
-ErrorCodeEnum UKEYTask::GetAllEntity(CAutoArray<EntityEntry> &Entities)
-{
-	CSmartPointer<IEntityFunction> spFunc = m_pEntity->GetFunction();
-	CAutoArray<CSimpleStringA> strEntityNames;
-	CAutoArray<WORD> wDevelopIDs;
-	ErrorCodeEnum Error = spFunc->GetAllRegistedEntity(strEntityNames, wDevelopIDs);
-	if (Error == Error_Succeed) {
-		Entities.Init(strEntityNames.GetCount());
-		for (int i = 0; i < strEntityNames.GetCount(); ++i) {
-			Error = GetEntity(strEntityNames[i], Entities[i]);
-		}
-	}
-	return Error;
-}
-
-ErrorCodeEnum UKEYTask::GetEntity(const char *entity_name, EntityEntry &e)
-{
-	CSmartPointer<IEntityFunction> spFunc = m_pEntity->GetFunction();
-	LOG_ASSERT(spFunc != NULL);
-	CEntityStaticInfo StaticInfo;
-	CEntityRunInfo RunInfo;
-	ErrorCodeEnum Error = spFunc->GetEntityStaticInfo(entity_name, StaticInfo);
-	if (Error == Error_Succeed) {
-		Error = spFunc->GetEntityRunInfo(entity_name, RunInfo);
-		if (Error == Error_Succeed) {
-			e.Name = entity_name;
-			e.Id = RunInfo.dwEntityInstanceID;
-			e.ModuleName = _GetFileName(StaticInfo.strSpFileName);
-			e.State = RunInfo.eState;
-			e.Type = StaticInfo.bStartedByShell ? EE_AUTO : EE_MANUAL;
-			e.Pid = (int)RunInfo.dwProcessID;
-			e.DevelopID = (int)StaticInfo.wEntityDevelopID;
-		}
-	}
-	return Error;
-}
-
-void UKEYTask::OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp)
-{
-	if (m_hWndMainFrame) {
-		CSmartPointer<ICallbackListener> spCallback;
-		CSmartPointer<IReleasable> pData;
-		pAsynWaitSp->GetCallback(spCallback, pData);
-		LOG_ASSERT(pData.GetRawPointer() != NULL);
-		callback_entry *entry = static_cast<callback_entry*>((IReleasable*)pData.GetRawPointer());
-		entry->ErrorResult = pAsynWaitSp->AsyncGetAnswer();
-		callback_entry *new_entry = new callback_entry();
-		new_entry->EntityName = entry->EntityName;
-		new_entry->ErrorResult = entry->ErrorResult;
-		new_entry->op = entry->op;
-		new_entry->state = entry->state;
-		PostMessage(m_hWndMainFrame, WM_GUICONSOLE, 0, (LPARAM)new_entry);
-	}
-}
-
-UKEYTask::UKEYTask() : m_pEntity(NULL), m_hWndMainFrame(NULL),m_hThread(NULL)
-{
-	m_hEventStartReady = ::CreateEventA(NULL, TRUE, FALSE, NULL);
-	m_hEventStopReady = ::CreateEventA(NULL, TRUE, FALSE, NULL);
-}
-
-UKEYTask::~UKEYTask()
-{
-	CloseHandle(m_hEventStopReady);
-	CloseHandle(m_hEventStartReady);
-}
-
-ErrorCodeEnum UKEYTask::Kickoff()
-{
-	if (m_hThread) {
-		return Error_Duplication;
-	}
-	m_hThread = (HANDLE)_beginthreadex(0, 0, &__Process, this, 0, 0);
-	if (!m_hThread) {
-		return Error_Resource;
-	}
-	return  Error_Succeed;
-}
-
-ErrorCodeEnum UKEYTask::OutputMsg(const char *pMsg)
-{
-	char *pBuf = new char[strlen(pMsg)+1];
-	strcpy(pBuf, pMsg);
-	PostMessage(m_hWndMainFrame, WM_SHOWDEBUGMSG, 0, (LPARAM)pBuf);
-	return Error_Succeed;
-}
-
-ErrorCodeEnum UKEYTask::Close()
-{
-	if (!m_hThread) {
-		return Error_NotInit;
-	}
-	WaitForSingleObject(m_hThread, INFINITE);
-	return Error_Succeed;
-}
-

+ 0 - 119
Module/mod_MaintainWatcher/ukeytask.h

@@ -1,119 +0,0 @@
-#ifndef __GUI_TASK_H
-#define __GUI_TASK_H
-
-#pragma once
-
-#include "SpBase.h"
-
-#define EE_AUTO		0
-#define EE_MANUAL	1
-
-#define WM_GUICONSOLE	(WM_APP + 0x1)
-#define WM_SHOWDEBUGMSG	(WM_APP + 0x2)
-
-struct EntityEntry
-{
-	CSimpleStringA Name;
-	CSimpleStringA ModuleName;
-	int Type;
-	int State;
-	int Id;
-	int Pid;
-	int DevelopID;
-
-	static const char *GetTypeName(int type)
-	{
-		static const char *_names[] = {
-			"auto",
-			"manual"
-		};
-		return _names[type % ARRAYSIZE(_names)];
-	}
-
-	static const char *GetStateName(int state)
-	{
-		static const char *_names[] = {
-			"NoStart",
-			"Starting",
-			"Idle",
-			"Busy",
-			"Pause",
-			"UnLoading",
-			"Lost",
-			"Close",
-			"Killed",
-		};
-		return _names[state % ARRAYSIZE(_names)];
-	}
-
-	static const char *GetErrorName(ErrorCodeEnum Error)
-	{
-		return "Unknown Error";
-	}
-};
-
-struct StartMenuEntry
-{
-	CSimpleStringA strEntity;
-	CSimpleStringA strCmdLine;
-};
-struct IConsole
-{
-	virtual ErrorCodeEnum Initialize()=0;
-	virtual ErrorCodeEnum UnInitialize()=0;
-	virtual void OnStartRead(BOOL bOk)=0;
-	virtual void OnStopReady()=0;
-	virtual ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData)=0;
-	virtual ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData)=0;
-	virtual ErrorCodeEnum GetAllEntity(CAutoArray<EntityEntry> &Entities)=0;
-	virtual ErrorCodeEnum GetEntity(const char *entity_name, EntityEntry &e)=0;
-	virtual ErrorCodeEnum ReqFrameworkQuit() =0;
-};
-
-class UKEYTask : public IConsole, public ICallbackListener/*, public IEntityStateListener*/
-{
-public:
-	UKEYTask();
-	virtual ~UKEYTask();
-
-	void SetOwner(CEntityBase *pEntity) { m_pEntity = pEntity; }
-
-	ErrorCodeEnum WaitWindowCreated();
-	ErrorCodeEnum CloseWindow();
-
-	// IConsole
-	virtual ErrorCodeEnum Initialize();
-	virtual ErrorCodeEnum UnInitialize();
-	virtual void OnStartRead(BOOL bOk);
-	virtual void OnStopReady();
-	virtual ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData);
-	virtual ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData);
-	virtual ErrorCodeEnum GetAllEntity(CAutoArray<EntityEntry> &Entities);
-	virtual ErrorCodeEnum GetEntity(const char *entity_name, EntityEntry &e);
-	virtual ErrorCodeEnum ReqFrameworkQuit();
-	//ICallbackListener
-	virtual void OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp);
-
-	ErrorCodeEnum Kickoff();
-	ErrorCodeEnum Close();
-	ErrorCodeEnum OutputMsg(const char *pMsg);
-
-private:
-	void Process();
-	static unsigned int __stdcall __Process(void *arg)
-	{
-		UKEYTask *pThis = static_cast<UKEYTask *>(arg);
-		pThis->Process();
-		return 0;
-	}
-private:
-	HANDLE m_hEventStartReady;
-	HANDLE m_hEventStopReady;
-	HANDLE m_hThread;
-	HWND m_hWndMainFrame;
-	CEntityBase *m_pEntity;
-	CUUID m_logSubID;
-
-};
-
-#endif // __GUI_TASK_H

+ 2 - 1
Module/mod_ScannerSet/CameraImpl.cpp

@@ -1,6 +1,7 @@
 #include "stdafx.h"
 #include "CameraImpl.h"
-#include "Dshow.h" 
+#include "Dshow.h"
+#include "smartptr.h"
 
 
 static int Bin2Str(unsigned char *x, int xlen, char *str, int str_size)

+ 19 - 0
Module/mod_ScannerSet/CameraImpl.h

@@ -8,8 +8,23 @@
 #include <vector>
 #include <algorithm>
 
+
+
 #define DETECT_CAMERA_BUSY_ONE 0x21800001
 #define DETECT_CAMERA_BUSY_TWO 0x21800002
+
+#if 0
+
+#define SAFE_RELEASE_IDEV(hd)	\
+	do {	\
+	if(hd != NULL) {	\
+		(hd)->lpVtbl -> Release(hd);	\
+		hd = NULL;	\
+	}	\
+	} while (false)
+
+#else
+
 #define SAFE_RELEASE_IDEV(hd)	\
 	do {	\
 	if(hd != NULL) {	\
@@ -18,6 +33,10 @@
 	}	\
 	} while (false)
 
+#endif
+
+
+
 typedef struct _CAMERA_INFOR_ITEM
 {
 	char szDevName[MAX_PATH];

+ 1 - 1
Module/mod_ScannerSet/ScannerSetFSM.cpp

@@ -11,9 +11,9 @@
 #else
 #include "toolkit.h"
 #include "iniutil.h"
-#include "path.h"
 #include "CommEntityUtil.hpp"
 #endif //RVC_OS_WIN
+#include "path.h"
 
 #define CHECKDEV_TIMER_ID 1
 const int MILLISECOND_TO_CHECKDEV = 15 * 1000;

+ 13 - 0
Module/mod_ScannerSet/ScannerSet_def_g.h

@@ -38,6 +38,19 @@ namespace ScannerSet {
 #define ScannerService_MethodSignature_CrossTermCall 74706330
 #define ScannerService_MethodSignature_GetDevInfo 825740532
 
+#define ScannerService_LogCode_StartPreview "QLR040221800"
+#define ScannerService_LogCode_CancelPreview "QLR040221801"
+#define ScannerService_LogCode_ScanImage "QLR040221802"
+#define ScannerService_LogCode_SetWindowPos "QLR040221803"
+#define ScannerService_LogCode_SetProperty "QLR040221804"
+#define ScannerService_LogCode_ShowProperty "QLR040221805"
+#define ScannerService_LogCode_GetDevStatus "QLR040221806"
+#define ScannerService_LogCode_Exit "QLR040221807"
+#define ScannerService_LogCode_GetOnlineCameras "QLR040221808"
+#define ScannerService_LogCode_CrossTermInvokeInfo "QLR040221809"
+#define ScannerService_LogCode_CrossTermCall "QLR040221810"
+#define ScannerService_LogCode_GetDevInfo "QLR040221899"
+
 struct ScannerService_StartPreview_Req
 {
 	short rotateType;

+ 13 - 0
Module/mod_ScannerSet/mod_ScannerSet.cpp

@@ -9,6 +9,7 @@ void ScannerServerSession::Handle_StartPreview(SpReqAnsContext<ScannerService_St
 	ScannerService_StartPreview_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->Preview(ctx);
 }
 
@@ -16,6 +17,7 @@ void ScannerServerSession::Handle_CancelPreview(SpReqAnsContext<ScannerService_C
 	ScannerService_CancelPreview_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->CancelPreview(ctx);
 }
 
@@ -23,6 +25,7 @@ void ScannerServerSession::Handle_ScanImage(SpReqAnsContext<ScannerService_ScanI
 	ScannerService_ScanImage_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->ScanImage(ctx);
 }
 
@@ -30,12 +33,14 @@ void ScannerServerSession::Handle_SetWindowPos(SpReqAnsContext<ScannerService_Se
 	ScannerService_SetWindowPos_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->SetWinPos(ctx);
 }
 
 void ScannerServerSession::Handle_SetProperty(SpReqAnsContext<ScannerService_SetProperty_Req, ScannerService_SetProperty_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->SetProperty(ctx);
 }
 
@@ -43,6 +48,7 @@ void ScannerServerSession::Handle_ShowProperty(SpReqAnsContext<ScannerService_Sh
 	ScannerService_ShowProperty_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->ShowProperty(ctx);
 }
 
@@ -50,18 +56,21 @@ void ScannerServerSession::Handle_GetDevStatus(SpReqAnsContext<ScannerService_Ge
 	ScannerService_GetDevStatus_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->GetDevStatus(ctx);
 }
 
 void ScannerServerSession::Handle_CrossTermCall(SpReqAnsContext<ScannerService_CrossTermCall_Req, ScannerService_CrossTermCall_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->CrossTermCall(ctx);
 }
 
 void ScannerServerSession::Handle_CrossTermInvokeInfo(SpOnewayCallContext<ScannerService_CrossTermInvokeInfo_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->CrossTermInvokeInfo(ctx);
 }
 
@@ -69,18 +78,22 @@ void ScannerServerSession::Handle_GetDevInfo(SpReqAnsContext<ScannerService_GetD
 	ScannerService_GetDevInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->GetDevInfo(ctx);
 }
 
 void ScannerServerSession::Handle_GetOnlineCameras(SpReqAnsContext<ScannerService_GetOnlineCameras_Req,
 	ScannerService_GetOnlineCameras_Ans>::Pointer ctx) {
+	
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->GetOnlineCameras(ctx);
 }
 
 void ScannerServerSession::Handle_Exit(SpOnewayCallContext<ScannerService_Exit_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	m_pEntity->Exit(ctx);
 }
 

+ 8 - 18
Module/mod_ScannerSet/mod_ScannerSet.h

@@ -4,7 +4,9 @@
 #pragma once
 
 #include "modVer.h"
+#if defined(RVC_OS_LINUX)
 #include "SpTest.h"
+#endif //RVC_OS_LINUX
 
 #include "ScannerSetFSM.h"
 #include "EventCode.h"
@@ -12,9 +14,9 @@
 
 
 #include "HSPScanner_client_g.h"
-#include "MaintainWatcher_client_g.h"
 
 using namespace HSPScanner;
+
 using namespace ScannerSet;
 
 class CScannerEntity;
@@ -91,7 +93,9 @@ public:
 
     const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
 
-    ON_ENTITYT_TEST()
+#if defined(RVC_OS_LINUX)
+	ON_ENTITYT_TEST()
+#endif //RVC_OS_LINUX
 
 	virtual CServerSessionBase* OnNewSession(const char* , const char * )
 	{
@@ -102,10 +106,9 @@ public:
 		CSmartPointer<ITransactionContext> pTransactionContext) 
 	{
 		ErrorCodeEnum erroCode = m_fsm.Init(this);
-		GetFunction()->SubscribeLog(m_uuidMaintainWatcher, this,
-			Log_Event, Severity_Middle, Error_IgnoreAll, -2, "MaintainWatcher");
 #if defined(RVC_OS_WIN)
-        GetFunction()->SubscribeLog(m_uuidPortableScanner, this, Log_Error, Severity_High, Error_IgnoreAll, -1, "PortableScanner");
+        GetFunction()->SubscribeLog(m_uuidPortableScanner, this, 
+			Log_Error, Severity_High, Error_IgnoreAll, -1, "PortableScanner");
 #endif //RVC_OS_WIN
 		pTransactionContext->SendAnswer(erroCode);
 	}
@@ -293,18 +296,6 @@ public:
 	{
 		switch (dwUserCode)
 		{
-		case EVENT_USB_INSERT:
-			m_fsm.OnDeviceInsert();
-			break;
-		case EVENT_USB_OUTPUT:
-			m_fsm.OnDeviceRemoved();
-			break;
-		case EVENT_USB_CAMERA_NOT_ONLY:
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("EVENT_USB_CAMERA_NOT_ONLY occurs !!!");
-			break;
-		case EVENT_USB_CAMERA_INPUT:
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("EVENT_USB_CAMERA_INPUT occurs !!!");
-			break;
 		case LOG_ERROR_PORTABLESCANNER_IN_PREVIEW:
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("LOG_ERROR_PORTABLESCANNER_IN_PREVIEW: %s", pszMessage);
 			{
@@ -349,7 +340,6 @@ public:
 
 private:
 	CScannerFSM m_fsm;
-	CUUID m_uuidMaintainWatcher;
 	CUUID m_uuidPortableScanner;
 };
 

+ 192 - 0
Module/mod_ScannerSet/smartptr.h

@@ -0,0 +1,192 @@
+// SmartPtr.h
+//
+// Defines a smart pointer class that does not depend on any ATL headers
+
+#pragma once
+
+///////////////////////////////////////////////////////////////////////
+// Name: AreCOMObjectsEqual [template]
+// Desc: Tests two COM pointers for equality.
+///////////////////////////////////////////////////////////////////////
+
+template <class T1, class T2>
+bool AreComObjectsEqual(T1 *p1, T2 *p2)
+{
+    bool bResult = false;
+    if (p1 == NULL && p2 == NULL)
+    {
+        // Both are NULL
+        bResult = true;
+    }
+    else if (p1 == NULL || p2 == NULL)
+    {
+        // One is NULL and one is not
+        bResult = false;
+    }
+    else 
+    {
+        // Both are not NULL. Compare IUnknowns.
+        IUnknown *pUnk1 = NULL;
+        IUnknown *pUnk2 = NULL;
+        if (SUCCEEDED(p1->QueryInterface(IID_IUnknown, (void**)&pUnk1)))
+        {
+            if (SUCCEEDED(p2->QueryInterface(IID_IUnknown, (void**)&pUnk2)))
+            {
+                bResult = (pUnk1 == pUnk2);
+                pUnk2->Release();
+            }
+            pUnk1->Release();
+        }
+    }
+    return bResult;
+}
+
+// _NoAddRefOrRelease:
+// This is a version of our COM interface that dis-allows AddRef
+// and Release. All ref-counting should be done by the SmartPtr 
+// object, so we want to dis-allow calling AddRef or Release 
+// directly. The operator-> returns a _NoAddRefOrRelease pointer
+// instead of returning the raw COM pointer. (This behavior is the
+// same as ATL's CComPtr class.)
+template <class T>
+class _NoAddRefOrRelease : public T
+{
+private:
+    STDMETHOD_(ULONG, AddRef)() = 0;
+    STDMETHOD_(ULONG, Release)() = 0;
+};
+
+template <class T>
+class SmartPtr
+{
+public:
+
+    // Ctor
+    SmartPtr() : m_ptr(NULL)
+    {
+    }
+
+    // Ctor
+    SmartPtr(T *ptr)
+    {
+        m_ptr = ptr;
+        if (m_ptr)
+        {
+            m_ptr->AddRef();
+        }
+    }
+
+    // Copy ctor
+    SmartPtr(const SmartPtr& sptr)
+    {
+        m_ptr = sptr.m_ptr;
+        if (m_ptr)
+        {
+            m_ptr->AddRef();
+        }
+    }
+
+    // Dtor
+    ~SmartPtr() 
+    { 
+        if (m_ptr)
+        {
+            m_ptr->Release();
+        }
+    }
+
+    // Assignment
+    SmartPtr& operator=(const SmartPtr& sptr)
+    {
+        // Don't do anything if we are assigned to ourselves.
+        if (!AreComObjectsEqual(m_ptr, sptr.m_ptr))
+        {
+            if (m_ptr)
+            {
+                m_ptr->Release();
+            }
+
+            m_ptr = sptr.m_ptr;
+            if (m_ptr)
+            {
+                m_ptr->AddRef();
+            }
+        }
+        return *this;
+  }
+
+    // address-of operator
+	T** operator&()
+	{
+		return &m_ptr;
+	}
+
+    // dereference operator
+    _NoAddRefOrRelease<T>* operator->()
+    {
+        return (_NoAddRefOrRelease<T>*)m_ptr;
+    }
+
+    // coerce to underlying pointer type.
+    operator T*()
+    {
+        return m_ptr;
+    }
+
+    // Templated version of QueryInterface
+
+    template <class Q> // Q is another interface type
+    HRESULT QueryInterface(Q **ppQ)
+    {
+        return m_ptr->QueryInterface(__uuidof(Q), (void**)ppQ);
+    }
+
+    // safe Release() method
+    ULONG Release()
+    {
+        T *ptr = m_ptr;
+        ULONG result = 0;
+        if (ptr)
+        {
+            m_ptr = NULL;
+            result = ptr->Release();
+        }
+        return result;
+    }
+
+	// Attach to an existing interface (does not AddRef)
+	void Attach(T* p) 
+	{
+		if (m_ptr)
+        {
+			m_ptr->Release();
+        }
+		m_ptr = p;
+	}
+
+
+        
+	// Detach the interface (does not Release)
+    T* Detach()
+    {
+        T* p = m_ptr;
+        m_ptr = NULL;
+        return p;
+    }
+
+
+    // equality operator
+    bool operator==(T *ptr) const
+    {
+        return AreComObjectsEqual(m_ptr, ptr);
+    }
+
+    // inequality operator
+    bool operator!=(T *ptr) const
+    {
+        return !operator==(ptr);
+    }
+
+private:
+    T *m_ptr;
+};