亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? impiopcserver.cpp

?? 基于Intellution開發(fā)包的開發(fā)的OPC服務(wù)器
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
//	ImpIOPCServer.cpp
//
//  This file contains the implementation of 
//  the IOPCServer interface for the XXX server.
//
//	(c) COPYRIGHT 1996-1998, INTELLUTION INC.
// ALL RIGHTS RESERVED
//
//
//	Functions defined in this module:
//
//			CImpIOPCServer::CImpIOPCServer()
//			CImpIOPCServer::~CImpIOPCServer()
//			CImpIOPCServer::AddRef()
//			CImpIOPCServer::Release()
//			CImpIOPCServer::QueryInterface()
//			CImpIOPCSyncIO::GetStatus()
//			CImpIOPCSyncIO::GetErrorString()
//			CImpIOPCServer::AddGroup()
//			CImpIOPCServer::GetGroupByName()
//			CImpIOPCServer::RemoveGroup()
//			CImpIOPCServer::CreateGroupEnumerator()
//
//
//
// Modification Log:
//	Vers	Date     By		Notes
//	----	-------- ---	-----
//	1.0		08/26/97 jra	Created
//	1.3		03/10/98 jra	Modified to be wizard generated and driver specific.
//
//

#define WIN32_LEAN_AND_MEAN

#include "OpcStdAfx.h"

#include <afxconv.h>	// used for ATL conversion functions

#include "OPC.h"
#include "OPCERROR.h"
#include "OPCVersionInfo.h"


/////////////////////////////////////////////////////////////////////////////
// External global variables
/////////////////////////////////////////////////////////////////////////////
extern	CString		g_strDefaultGeneratedGroupName;
extern	DWORD		g_dwWaitPeriod;
extern	TCHAR		g_tszAcronym[];


/////////////////////////////////////////////////////////////////////////////
// Vendor information
/////////////////////////////////////////////////////////////////////////////
static	WCHAR	g_pwcVendorInfo[100];


/////////////////////////////////////////////////////////////////////////////
// Constructor /Destructor functions
//

////////////////////////////////////////////////////////////////
// CImpIOPCServer()
//
// Constructor for this Interface
//
////////////////////////////////////////////////////////////////
CImpIOPCServer::CImpIOPCServer(LPUNKNOWN pUnkOuter)
{
	m_pUnkOuter		= pUnkOuter;
	m_pParentServer	= (COPCDrvServer *)pUnkOuter;

	// Format the vendor info string show the version of the server.
	//
	CString	szVendorInfo;
	WCHAR	*wcTemp;

	szVendorInfo.Format("%sOPC - Intellution Inc. OPC Server v%d.%d.%d",
		g_tszAcronym, MAJOR_VERSION, MINOR_VERSION, BUILD_NUMBER);

	USES_CONVERSION;

	wcTemp = A2W(szVendorInfo.GetBuffer(szVendorInfo.GetLength() + 1));
	wcscpy(g_pwcVendorInfo, wcTemp);
	szVendorInfo.ReleaseBuffer();
}



////////////////////////////////////////////////////////////////
// ~CImpIOPCServer()
//
// Destructor for this Interface
//
////////////////////////////////////////////////////////////////
CImpIOPCServer::~CImpIOPCServer(void)
{
	m_pParentServer->m_pCImpIOPCServer = NULL;
}


/////////////////////////////////////////////////////////////////////////////
// IUnknown functions Delegate to Parent, but also perform internal reference
// checking and cleanup.
//


////////////////////////////////////////////////////////////////
// AddRef()
//
////////////////////////////////////////////////////////////////
STDMETHODIMP_(ULONG) CImpIOPCServer::AddRef(void)
{
	return m_pUnkOuter->AddRef();
}


////////////////////////////////////////////////////////////////
// Release()
//
////////////////////////////////////////////////////////////////
STDMETHODIMP_(ULONG) CImpIOPCServer::Release(void)
{
	return m_pUnkOuter->Release(); 
}


////////////////////////////////////////////////////////////////
// QueryInterface()
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCServer::QueryInterface(REFIID	iid, 
											LPVOID	*ppInterface)
{
	return m_pUnkOuter->QueryInterface(iid, ppInterface);
}



/////////////////////////////////////////////////////////////////////////////
// CImpIOPCServer (IOPCServer) interface functions
//


////////////////////////////////////////////////////////////////
// CImpIOPCServer::GetStatus()
//
// This function fills in the OPCSERVERSTATUS structure that 
// was passed in.
//
// Returns:
//	HRESULT	-	S_OK if the function succeeded.
//			-	E_FAIL if the function failed.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCServer::GetStatus(OPCSERVERSTATUS	**ppServerStatus)
{
	OPCSERVERSTATUS	*pServerStatus	= NULL;


	// Make sure that we got a good pointer
	//
	if (NULL == ppServerStatus)
	{
		return E_FAIL;
	}

	// Allocate some memory for the struct
	//
	pServerStatus = (OPCSERVERSTATUS *)pIMalloc->Alloc(sizeof(OPCSERVERSTATUS));
	if(NULL == pServerStatus)
	{
		*ppServerStatus = NULL;
		return E_FAIL;
	}

	// Get the vendor info
	//
	pServerStatus->szVendorInfo	= WSTRClone(g_pwcVendorInfo, pIMalloc);
	if (NULL == pServerStatus->szVendorInfo)
	{
		pIMalloc->Free(pServerStatus);
		*ppServerStatus = NULL;
		return E_FAIL;
	}

	// Get the start and update times
	//
	pServerStatus->ftStartTime = m_pParentServer->m_ftServerStartTime;
	pServerStatus->ftLastUpdateTime = m_pParentServer->m_ftLastUpdate;
	CoFileTimeNow(&pServerStatus->ftCurrentTime);

	// Get the general server state info
	//
	pServerStatus->dwServerState	= m_pParentServer->m_ServerState;
	pServerStatus->dwGroupCount		= m_pParentServer->GetNumGroupHandles();
	pServerStatus->dwBandWidth		= m_pParentServer->m_dwBandwidth;
		
	// Get the server build info
	//
	pServerStatus->wMajorVersion	= MAJOR_VERSION;
	pServerStatus->wMinorVersion	= MINOR_VERSION;
	pServerStatus->wBuildNumber		= BUILD_NUMBER;
	pServerStatus->wReserved		= 42;

	// return the result (if any) and the error
	//
	*ppServerStatus = pServerStatus;

	return S_OK;
}


////////////////////////////////////////////////////////////////
// CImpIOPCServer::GetErrorString()
//
// For server specific error codes we need to return a user 
// displayable string in the user's language. 
// The easiest way to do this is to put the strings in the RC 
// file and use LoadString.
//
// Currently, the LCID is ignored.
//
// Returns:
//	HRESULT	-	S_OK if the function succeeded
//			-	E_FAIL if the function failed.
//			-	E_OUTOFMEMORY if WSTRClone() failed.
//			-	E_INVALIDARG if we got a bad pointer.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCServer::GetErrorString(HRESULT		hr, 
											LCID		locale, 
											LPWSTR		*ppString)
{
	static WCHAR *pwcErrorString	= NULL;


	// Make sure we didn't get any bad parameters.
	//
	if (NULL == ppString)
	{
		return E_INVALIDARG;
	}

	switch(hr)
	{
	// Standard COM HRESULT values
	//
	case S_OK:
		pwcErrorString = L"Operation Successful";
		break;
	case E_INVALIDARG:
		pwcErrorString = L"The value of one or more parameters was not valid.";
		break;
	case E_OUTOFMEMORY:
		pwcErrorString = L"Not enough memory to complete the requested operation.";
		break;
	case E_FAIL:
		pwcErrorString = L"Error. Operation failed.";
		break;
	case E_NOINTERFACE:
		pwcErrorString = L"Interface not supported.";
		break;
	case E_POINTER:
		pwcErrorString = L"Invalid or NULL pointer.";
		break;
	case E_NOTIMPL:
		pwcErrorString = L"Operation not implemented.";
		break;
	// OPC specific HRESULT error values
	//
	case OPC_E_INVALIDITEMID:
		pwcErrorString = L"Item ID was invalid and not found.";
		break;
	case OPC_E_INVALIDHANDLE:
		pwcErrorString = L"The server handle is invalid.";
		break;
	case OPC_E_DUPLICATENAME:
		pwcErrorString = L"A group is already defined with that name.";
		break;
	case OPC_E_BADTYPE:
		pwcErrorString = L"Write operation failed due to a bad type.";
		break;
	case OPC_E_BADRIGHTS:
		pwcErrorString = L"The Items AccessRights do not allow the operation.";
		break;
	case OPC_E_INVALIDFILTER:
		pwcErrorString = L"The Filter string was not valid.";
		break;
	case OLE_E_NOCONNECTION:
		pwcErrorString = L"No previous connection.";
		break;
	case OPC_E_PUBLIC:
		pwcErrorString = L"The requested operation cannot be done on a public group.";
		break;
	case OPC_E_RANGE:
		pwcErrorString = L"The value passed to WRITE was out of range.";
		break;
	// OPC specific HRESULT success values
	//
	case OPC_S_UNSUPPORTEDRATE:
		pwcErrorString = L"The server does not support the requested data rate, but will use the closest available rate.";
		break;
	case OPC_S_CLAMP:
		pwcErrorString = L"The value passed to WRITE was accepted, but was clamped.";
		break;
	// Miscellaneous HRESULT return codes.
	//
	case CONNECT_E_ADVISELIMIT:
		pwcErrorString = L"Connection limit exceeded. Request cancelled.";
		break;
	case CONNECT_E_NOCONNECTION:
		pwcErrorString = L"Connection not established.";
		break;
	case CONNECT_E_CANNOTCONNECT:
		pwcErrorString = L"Cannot connect to interface.";
		break;
	case CLASS_E_NOAGGREGATION:
		pwcErrorString = L"Aggregation is not supported.";
		break;
	case CLASS_E_CLASSNOTAVAILABLE:
		pwcErrorString = L"Class not available.";
		break;
	case DV_E_FORMATETC:
		pwcErrorString = L"Bad stream format.";
		break;
	default:
		*ppString = NULL;
		return E_FAIL;
		break;
	}

	*ppString = WSTRClone(pwcErrorString, pIMalloc);
	if (NULL == *ppString)
	{
		return E_OUTOFMEMORY;
	}

	return S_OK;
}


////////////////////////////////////////////////////////////////
// CImpIOPCServer::AddGroup()
//
// This function creates a new group of the specified name on 
// this server.  
// Note TimeBias, Deadband and LCID are not implemented
//
// Returns:
//	HRESULT	-	S_OK if the function succeeded
//			-	E_FAIL if the function failed.
//			-	OPC_E_DUPLICATENAME if a group already contains
//				the name passed to us.
//			-	E_INVALIDARG if a parameter passed is invalid,
//				such as a bad pointer.
//			-	E_OUTOFMEMORY if a memory allocator failed.
//
////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69av一区二区三区| 国产亲近乱来精品视频| 久久 天天综合| 亚洲欧美自拍偷拍| 日韩欧美精品在线| 欧美亚洲图片小说| av色综合久久天堂av综合| 久久国产精品免费| 亚洲高清视频在线| 亚洲男人的天堂在线aⅴ视频| 精品人伦一区二区色婷婷| 欧美在线短视频| 成人av资源在线观看| 久久99精品国产麻豆不卡| 午夜精品久久久久久久| 国产精品成人午夜| 欧美极品少妇xxxxⅹ高跟鞋 | 在线播放国产精品二区一二区四区| 国产精品99久久久久久似苏梦涵| 日韩不卡免费视频| 亚洲一区二区欧美日韩| 亚洲人成伊人成综合网小说| 国产色综合一区| 精品国产凹凸成av人网站| 欧美日本一道本| 91精品办公室少妇高潮对白| 成人黄色综合网站| 国产传媒一区在线| 精品一区二区国语对白| 美脚の诱脚舐め脚责91| 日本亚洲三级在线| 日精品一区二区| 五月激情六月综合| 午夜精品久久一牛影视| 亚洲va在线va天堂| 亚洲一级在线观看| 亚洲国产综合色| 亚洲综合图片区| 一区二区三区精密机械公司| 亚洲三级在线观看| 亚洲欧美乱综合| 亚洲综合精品久久| 亚洲国产一区二区三区青草影视| 亚洲乱码国产乱码精品精可以看| 1000精品久久久久久久久| 中文字幕一区av| 亚洲免费观看高清完整版在线观看熊 | 水野朝阳av一区二区三区| 亚洲一区在线观看视频| 亚洲a一区二区| 婷婷开心激情综合| 奇米四色…亚洲| 麻豆精品视频在线观看| 国产一区在线精品| 高清免费成人av| 91蜜桃婷婷狠狠久久综合9色| 91麻豆国产香蕉久久精品| 欧美亚洲综合久久| 91精品国产综合久久精品麻豆 | 97久久超碰国产精品| 色一情一乱一乱一91av| 91精品1区2区| 555夜色666亚洲国产免| 久久婷婷一区二区三区| 中文字幕在线不卡一区二区三区| 亚洲精品精品亚洲| 香蕉久久夜色精品国产使用方法| 老司机一区二区| 国产酒店精品激情| 97久久超碰精品国产| 欧美男男青年gay1069videost| 日韩一区二区三区高清免费看看| 久久色成人在线| 亚洲女人****多毛耸耸8| 日韩国产在线一| 国产乱一区二区| 91蝌蚪国产九色| 91精品国产一区二区三区香蕉| 久久综合久久综合久久综合| 国产精品美女久久久久aⅴ国产馆| 一区二区三区资源| 久久99精品久久久久| 91欧美一区二区| 欧美一区在线视频| 国产精品―色哟哟| 丝袜美腿亚洲色图| 成人黄色av电影| 欧美一二三区精品| 国产精品色哟哟网站| 日本成人在线网站| 91女厕偷拍女厕偷拍高清| 欧美成人艳星乳罩| 亚洲欧美另类久久久精品 | 日韩黄色免费电影| av不卡免费在线观看| 日韩免费福利电影在线观看| 亚洲免费在线电影| 国产一区激情在线| 欧美久久一二三四区| 国产精品对白交换视频| 久久国产精品一区二区| 欧美视频在线观看一区二区| 国产日韩欧美激情| 免费xxxx性欧美18vr| 色偷偷成人一区二区三区91| 久久美女艺术照精彩视频福利播放 | 中文字幕免费在线观看视频一区| 婷婷综合久久一区二区三区| 不卡的电影网站| 欧美www视频| 五月婷婷激情综合| 色屁屁一区二区| 亚洲国产电影在线观看| 国产在线一区二区| 91精品福利在线一区二区三区| 亚洲黄色片在线观看| 99在线精品一区二区三区| 久久久亚洲高清| 久久精品国产精品青草| 91精品国产91久久综合桃花| 亚洲国产日产av| 日本道色综合久久| 中文字幕一区二区三区精华液 | 91精品久久久久久蜜臀| 亚洲高清中文字幕| 欧洲av在线精品| 亚洲精品国产无天堂网2021| k8久久久一区二区三区| 国产精品传媒在线| 不卡av免费在线观看| 中文字幕高清不卡| 成人综合在线观看| 国产区在线观看成人精品| 国产成人久久精品77777最新版本| 欧美成人精精品一区二区频| 日韩av一二三| 欧美一区二区三区系列电影| 日韩在线观看一区二区| 欧美一区二区视频免费观看| 首页国产丝袜综合| 91精品视频网| 精品一区二区影视| 精品国产123| 国产一区二区三区蝌蚪| 日本一区二区三区视频视频| 成人午夜激情影院| 亚洲欧洲精品成人久久奇米网| 99九九99九九九视频精品| 亚洲精品视频自拍| 欧美性受极品xxxx喷水| 亚洲6080在线| 日韩视频在线一区二区| 国内一区二区视频| 欧美国产亚洲另类动漫| 成人18精品视频| 夜夜精品浪潮av一区二区三区| 欧美亚洲一区二区在线| 奇米综合一区二区三区精品视频| 精品盗摄一区二区三区| 北条麻妃一区二区三区| 亚洲精品视频在线观看免费| 欧美日本韩国一区| 美女视频黄 久久| 国产欧美日韩久久| 日本久久一区二区三区| 日韩精品一级二级| 久久久久久毛片| 91在线观看美女| 午夜激情久久久| 欧美精品一区二区三区蜜桃视频| 成人免费视频国产在线观看| 亚洲宅男天堂在线观看无病毒| 91精品国产91热久久久做人人| 国产精品69毛片高清亚洲| 国产精品美女久久久久久久| 欧美日韩色综合| 国产麻豆日韩欧美久久| 亚洲免费大片在线观看| 91精品国产品国语在线不卡| 成人久久18免费网站麻豆| 午夜在线成人av| 欧美国产日韩亚洲一区| 欧美日韩一级视频| 国产.精品.日韩.另类.中文.在线.播放| 亚洲男人的天堂av| 久久一留热品黄| 日本道免费精品一区二区三区| 久久精品国产精品亚洲综合| 亚洲精选在线视频| 2020国产精品| 欧美午夜精品一区二区三区 | 国产综合色在线视频区| 亚洲美女视频一区| 久久人人爽人人爽| 欧美挠脚心视频网站| 91在线云播放| 激情丁香综合五月| 亚洲国产精品一区二区www| 欧美韩日一区二区三区四区| 欧美一级片免费看|