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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? impiopcsyncio.cpp

?? 基于Intellution開發包的開發的OPC服務器
?? CPP
字號:
// ImpIOPCSyncIO.cpp
//
//  This file contains the implementation of 
//  the IOPCSyncIO interface for groups in the XXX server.
//
//	(c) COPYRIGHT 1996-1998, INTELLUTION INC.
// ALL RIGHTS RESERVED
//
//
//	Functions defined in this module:
//
//			CImpIOPCSyncIO::CImpIOPCAsyncIO()
//			CImpIOPCSyncIO::~CImpIOPCAsyncIO()
//			CImpIOPCSyncIO::AddRef()
//			CImpIOPCSyncIO::Release()
//			CImpIOPCSyncIO::QueryInterface()
//			CImpIOPCSyncIO::Read()
//			CImpIOPCSyncIO::Write()
//
//
//
// 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 "OPC.h"

#include "OPCError.h"


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

////////////////////////////////////////////////////////////////
// CImpIOPCSyncIO()
//
// Constructor for this Interface
//
////////////////////////////////////////////////////////////////
CImpIOPCSyncIO::CImpIOPCSyncIO(LPUNKNOWN pUnkOuter)
{
	m_pUnkOuter = pUnkOuter;
	m_pParentGroup = (COPCDrvGroup *)pUnkOuter;
}


////////////////////////////////////////////////////////////////
// ~CImpIOPCSyncIO()
//
// Destructor for this Interface
//
////////////////////////////////////////////////////////////////

CImpIOPCSyncIO::~CImpIOPCSyncIO(void)
{
	m_pParentGroup->m_pCImpISyncIO = NULL;
}


/////////////////////////////////////////////////////////////////////////////
// IUnknown functions Delegate to Parent
//


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


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


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



/////////////////////////////////////////////////////////////////////////////
// CImpIOPCSyncIO (IOPCSyncIO) interface functions
//


////////////////////////////////////////////////////////////////
// Read()
//
// This function performs a synchronous read.
//
// Returns:
//	HRESULT	-	S_OK if the function succeeded.
//			-	E_OUTOFMEMORY if a memory allocator failed.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCSyncIO::Read(OPCDATASOURCE		dwSource, 
								  DWORD				dwNumItems, 
								  OPCHANDLE			*phServer, 
								  OPCITEMSTATE		**ppItemValues,
								  HRESULT			**ppErrors)
{
	DWORD			i;
	HRESULT			*hr;
	OPCITEMSTATE	*pItemState;
	OPCHANDLE		OPCHandle;
	COPCDrvItem		*pItem;


	// Defaults in case of error
	//
	*ppErrors		= hr			= NULL;
	*ppItemValues	= pItemState	= NULL;

	// Allocate memory for the item values and hresults
	//
	*ppErrors = hr = (HRESULT*) pIMalloc->Alloc(sizeof(HRESULT) *dwNumItems);
	if(NULL == hr)
	{
		return E_OUTOFMEMORY;
	}
	*ppItemValues = pItemState = 
		(OPCITEMSTATE*) pIMalloc->Alloc(sizeof(OPCITEMSTATE)*dwNumItems);
	if(NULL == pItemState) 
	{
		pIMalloc->Free(hr);
		return E_OUTOFMEMORY;
	}

	// For each item
	//
	for (i = 0; i < dwNumItems; i++)
	{
		// Validate the handle
		//
		OPCHandle = phServer[i];
		if (!m_pParentGroup->IsItemValid(OPCHandle))
		{
			hr[i] = OPC_E_INVALIDHANDLE;
			continue;
		}

		// Find the item that matches the server handle
		//
		pItem = m_pParentGroup->GetItemPtr(OPCHandle);

		// and extract the requested data...
		// GetValue attempts the conversion from Canonical to Requested
		// According the the OPC Spec, AddItems and/or SetDataTypes
		// will have already verified that this is possible.
		//
		pItemState[i].hClient = pItem->m_hClientItemHandle;
		VariantInit(&pItemState[i].vDataValue);

		hr[i] = pItem->GetValue(dwSource, 
								&pItemState[i].vDataValue, 
								&pItemState[i].wQuality, 
								&pItemState[i].ftTimeStamp);

		// For CACHE, If Group not active then quality is bad no matter what
		//
		if((OPC_DS_CACHE == dwSource) && (!m_pParentGroup->m_bActive))
		{
			((QUALITY_STATE *)&pItemState[i].wQuality)->nQuality = QUALITY_BAD;
			((QUALITY_STATE *)&pItemState[i].wQuality)->nSubStatus = SS_OUT_OF_SERVICE;
		}

		//
		// Note that doing a read does not affect OnDataChange
		// so we do NOT clear Changed flag
		//
	}

	return S_OK;
}


////////////////////////////////////////////////////////////////
// Write()
//
// This function performs a synchronous write.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCSyncIO::Write(DWORD		dwNumItems, 
								   OPCHANDLE	*phServer, 
								   VARIANT		*pItemValues, 
								   HRESULT		**ppErrors)
{
	COPCDrvGroup	&ParentGroup	= *m_pParentGroup;
	COPCDrvItem		*pItem			= NULL;
	HRESULT			*pHResultList	= NULL,
					hr;
	OPCHANDLE		OPCHandle;


	// Allocate memory for the hresults
	//
	*ppErrors = pHResultList = (HRESULT *)pIMalloc->Alloc(sizeof(HRESULT) * dwNumItems);
	if(pHResultList == NULL)
	{
		return E_OUTOFMEMORY;
	}

	// For each item
	//
	for (DWORD i = 0; i < dwNumItems; i++)
	{
		// Validate the handle
		//
		OPCHandle = phServer[i];
		if (!m_pParentGroup->IsItemValid(OPCHandle))
		{
			pHResultList[i] = OPC_E_INVALIDHANDLE;
			continue;
		}

		// Find the item that matches the server handle
		//
		pItem = m_pParentGroup->GetItemPtr(OPCHandle);

		// and write the requested data...
		//
		hr = pItem->WriteValue(&pItemValues[i]);
		if(FAILED(hr))
		{
			pHResultList[i] = OPC_E_BADTYPE;
		}
		else
		{
			pHResultList[i] = S_OK;
		}
	}

	return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区在线播放视频| av中文字幕一区| 色综合色综合色综合| 久久婷婷色综合| 亚洲一二三四在线观看| 成人h动漫精品| 精品捆绑美女sm三区| 亚洲成人自拍偷拍| 在线免费精品视频| 中文字幕一区二区三区视频| 久久国产视频网| 欧美日韩日本视频| 亚洲一区二区三区自拍| 99在线热播精品免费| 久久久不卡网国产精品一区| 免播放器亚洲一区| 欧美丰满美乳xxx高潮www| 一卡二卡欧美日韩| 色狠狠桃花综合| 亚洲精品老司机| 日本二三区不卡| 一区二区三区成人在线视频| 色域天天综合网| 亚洲蜜桃精久久久久久久| yourporn久久国产精品| 国产精品久久一卡二卡| 国产91对白在线观看九色| 国产亚洲精品7777| 成人免费观看av| 国产精品久久777777| 91亚洲国产成人精品一区二区三 | 精品国产伦理网| 日韩国产欧美三级| 日韩欧美一区中文| 毛片av一区二区| 精品av综合导航| 黄色资源网久久资源365| 26uuu精品一区二区在线观看| 韩国精品一区二区| 欧美激情在线一区二区三区| 成人精品亚洲人成在线| 玉足女爽爽91| 8x福利精品第一导航| 韩国女主播一区| 中文字幕免费不卡| 91丨porny丨首页| 亚洲第一电影网| xnxx国产精品| 成人app网站| 亚洲一区二区五区| 欧美大白屁股肥臀xxxxxx| 国产精品影视天天线| 自拍偷自拍亚洲精品播放| 欧美在线观看视频一区二区三区| 天天操天天色综合| 国产亚洲欧美激情| 欧美三级电影在线观看| 麻豆精品一区二区综合av| 国产欧美精品区一区二区三区 | 国产网红主播福利一区二区| 成人av午夜影院| 日韩av电影一区| 国产精品视频在线看| 在线电影欧美成精品| 国产精品系列在线观看| 亚洲成人久久影院| 国产色产综合色产在线视频| 在线国产电影不卡| 国产一区999| 午夜一区二区三区在线观看| 久久久久国产精品麻豆| 欧美视频完全免费看| 国产成人在线免费观看| 日韩高清在线不卡| 国产精品精品国产色婷婷| 日韩女优av电影在线观看| 日本韩国欧美一区| 国产91精品入口| 老汉av免费一区二区三区| 亚洲人吸女人奶水| 国产欧美日韩中文久久| 日韩色在线观看| 欧美亚洲国产bt| 成人精品视频一区二区三区 | 丝袜美腿成人在线| 国产精品毛片大码女人| 精品福利一区二区三区免费视频| 欧美视频在线观看一区| 99久久精品久久久久久清纯| 久久99精品国产麻豆婷婷洗澡| 亚洲国产视频直播| 一区二区三区.www| 国产精品福利av| 欧美激情综合网| 国产亚洲综合性久久久影院| 欧美一区午夜精品| 欧美精品日韩综合在线| 91黄视频在线观看| 91无套直看片红桃| eeuss鲁片一区二区三区| 国产成人精品亚洲午夜麻豆| 久久综合综合久久综合| 美女视频一区在线观看| 日韩1区2区日韩1区2区| 亚洲成av人片| 性感美女久久精品| 午夜精品久久久久久| 天天爽夜夜爽夜夜爽精品视频| 亚洲伊人伊色伊影伊综合网| 亚洲欧美日韩国产综合| 亚洲视频免费观看| 亚洲女同ⅹxx女同tv| 亚洲女人小视频在线观看| 亚洲视频在线一区观看| 亚洲精品视频在线看| 亚洲欧美日韩电影| 亚洲综合久久av| 舔着乳尖日韩一区| 美女视频第一区二区三区免费观看网站| 日韩国产一二三区| 久久精品国产免费| 国产福利一区在线| 成人午夜看片网址| av一区二区三区四区| 91在线丨porny丨国产| 91福利在线免费观看| 欧美日韩一区二区三区视频| 日韩亚洲欧美在线| 久久精品一区蜜桃臀影院| 亚洲欧洲av另类| 午夜欧美一区二区三区在线播放| 日韩二区三区在线观看| 国产一区美女在线| 99riav一区二区三区| 欧美性色aⅴ视频一区日韩精品| 欧美一区二区在线免费观看| 久久综合久久久久88| 亚洲日穴在线视频| 日韩中文字幕亚洲一区二区va在线| 捆绑调教美女网站视频一区| 成人伦理片在线| 91精品国产丝袜白色高跟鞋| 国产视频在线观看一区二区三区| 亚洲欧美激情小说另类| 五月综合激情日本mⅴ| 国产精品中文字幕日韩精品| 色中色一区二区| 精品乱人伦小说| 夜夜爽夜夜爽精品视频| 老司机精品视频在线| 91影院在线免费观看| 欧美一二三区在线观看| 国产精品美女久久久久久久久 | 国产精品正在播放| 欧美亚洲日本一区| 久久精品人人做人人综合| 亚洲色欲色欲www| 黑人精品欧美一区二区蜜桃| 色老汉av一区二区三区| 久久亚洲二区三区| 亚洲一区二区免费视频| 国产成人小视频| 91精品国产免费| 亚洲三级在线免费| 国产精品99久| 91麻豆精品国产| 自拍偷在线精品自拍偷无码专区| 裸体一区二区三区| 欧美丝袜丝nylons| 中文字幕一区二区在线观看 | 久久人人97超碰com| 亚洲成人精品一区二区| 91麻豆精品视频| 欧美韩国一区二区| 国产一区二区三区免费播放| 欧美一区二区视频观看视频| 亚洲欧美日韩国产一区二区三区| 国产精品资源在线看| 日韩午夜av电影| 蜜乳av一区二区| 这里只有精品视频在线观看| 亚洲综合色视频| 在线一区二区观看| 久久精品夜夜夜夜久久| 国内精品第一页| 亚洲精品在线三区| 麻豆91免费观看| 欧美电视剧在线观看完整版| 午夜精品在线看| 欧美视频在线播放| 亚洲午夜在线视频| 欧美三级日韩在线| 亚洲高清中文字幕| 欧美蜜桃一区二区三区| 亚洲成人综合视频| 欧美一区二区三区思思人| 日韩一区欧美二区| 欧美一级免费大片| 久久国产精品区| 久久久久久久久久久黄色|