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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? impiopcitemmgt.cpp

?? 基于Intellution開(kāi)發(fā)包的開(kāi)發(fā)的OPC服務(wù)器
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// ImpIOPCItemMgt.cpp
//
//  This file contains the implementation of 
//  the IOPCItemMgt interface for groups in the XXX server.
//
//
//	(c) COPYRIGHT 1996-1998, INTELLUTION INC.
// ALL RIGHTS RESERVED
//
//
//	Functions defined in this module:
//
//			CImpIOPCItemMgt::CImpIDataObject()
//			CImpIOPCItemMgt::~CImpIDataObject()
//			CImpIOPCItemMgt::AddRef()
//			CImpIOPCItemMgt::Release()
//			CImpIOPCItemMgt::QueryInterface()
//			CImpIOPCItemMgt::AddItems()
//			CImpIOPCItemMgt::ValidateItems()
//			CImpIOPCItemMgt::RemoveItems()
//			CImpIOPCItemMgt::SetActiveState()
//			CImpIOPCItemMgt::SetClientHandles()
//			CImpIOPCItemMgt::SetDatatypes()
//			CImpIOPCItemMgt::CreateEnumerator()
//
//
//
// 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.
//	7.11	09/10/98 jra	Changed AddItems() to zero out allocated memory.
//
//

#define WIN32_LEAN_AND_MEAN

#include "OpcStdAfx.h"
#include "OPC.h"
#include "OPCError.h"


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

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


////////////////////////////////////////////////////////////////
// ~CImpIOPCItemMgt()
//   Destructor for this Interface
//
////////////////////////////////////////////////////////////////
CImpIOPCItemMgt::~CImpIOPCItemMgt(void)
{
	m_pParentGroup->m_pCImpIItemMgt = NULL;
}


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

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


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


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



/////////////////////////////////////////////////////////////////////////////
// CImpIOPCItemMgt (IOPCItemMgt) interface functions
//


////////////////////////////////////////////////////////////////
// AddItems()
//
// This function adds a list of items to a specific group.
//
// Returns:
//	HRESULT	-	S_OK if all Items added with no errors.
//			-	S_FALSE if some Items added with no errors, but
//				other Items added with errors. The caller will
//				then want to look at the ppErrors array.
//			-	E_OUTOFMEMORY if a memory allocator failed.
//			-	E_INVALIDARG if a parameter passed into the
//				function is invalid, such as a NULL pointer.
//			-	E_FAIL if the function failed altogether.
//			-	OPC_E_PUBLIC is a valid return value, but we
//				don't support public groups at all, so the client
//				can't try and add items to a public group because
//				we won't let them add a public group.
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCItemMgt::AddItems(DWORD			dwNumItems, 
									   OPCITEMDEF		*pItemArray,
									   OPCITEMRESULT	**ppAddResults, 
									   HRESULT			**ppErrors)
{
	OPCHANDLE		OPCHandle;
	OPCITEMRESULT	*pItemResult;
	HRESULT			*pHResultList,
					hr = S_OK;
	COPCDrvItem		*pNewItem;


	// Make sure we were passed good pointers
	//
	if((NULL == pItemArray)   ||
	   (NULL == ppAddResults) ||
	   (NULL == ppErrors))
	{
		return E_INVALIDARG;
	}

	// Defaults in case of error
	//
	*ppAddResults = pItemResult = NULL;
	*ppErrors = pHResultList = NULL;

	// First - allocate memory for the result array(s)
	//
	*ppAddResults = pItemResult = 
		(OPCITEMRESULT *)pIMalloc->Alloc(sizeof(OPCITEMRESULT) * dwNumItems);
	if(NULL == pItemResult)
	{
		*ppErrors = NULL;
		*ppAddResults = NULL;
		return E_OUTOFMEMORY;
	}

	// Now allocate the memory for the error array(s)
	//
	*ppErrors = pHResultList = 
		(HRESULT *)pIMalloc->Alloc(sizeof(HRESULT) * dwNumItems);
	if(NULL == pHResultList)
	{
		if(pItemResult)
		{
			pIMalloc->Free(pItemResult);
		}

		*ppErrors = NULL;
		*ppAddResults = NULL;
		return E_OUTOFMEMORY;
	}

	// jra 091998
	// Initialize the allocated memory to 0
	memset(pItemResult, 0, sizeof(OPCITEMRESULT) * dwNumItems);
	memset(pHResultList, 0, sizeof(HRESULT) * dwNumItems);

	// Now for each item... 
	//
	for (DWORD i = 0; i < dwNumItems; i++)
	{
		// Get the memory and a handle for this Item
		//
		pHResultList[i] = m_pParentGroup->ItemAlloc(&OPCHandle, &pNewItem);
		if (FAILED(pHResultList[i]))
		{
			pHResultList[i] = OPC_E_INVALIDITEMID;
			hr = S_FALSE;
			continue;
		}

		// Make sure the ItemID is syntatically correct and initialize it
		//
		pHResultList[i] = pNewItem->Init(OPCHandle,			// Server handle
										 &pItemArray[i],	// Item definition 
										 &pItemResult[i]);	// Item result
		if(FAILED(pHResultList[i]))
		{
			// Determine from the return value of Init() what the return
			// value for this HRESULT should be per the OPC spec.
			//
			switch(pHResultList[i])
			{
			case E_FAIL:
				pHResultList[i] = OPC_E_BADTYPE;
				break;
			default:
				pHResultList[i] = OPC_E_INVALIDITEMID;
				break;
			}
			delete pNewItem;
			hr = S_FALSE;
			continue;
		}

		// Everything is fine, so add the new item to the map and
		// record the fact the the group has a pointer to it
		//
		m_pParentGroup->ItemSet(pNewItem);
		pNewItem->AddRef();
	}

	return hr;
}


////////////////////////////////////////////////////////////////
// ValidateItems()
//
// This function determines if an ItemID would be added to the
// group without error. It does not affect the group in any way.
// It also returns informtion to the caller regarding canonical
// datatype, etc.
//
// Returns:
//	HRESULT	-	S_OK if everything was successful.
//			-	S_FALSE if the call was partially successful. This
//				tells the caller to see the ppErrors array for
//				more information.
//			-	E_FAIL if the function failed.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIOPCItemMgt::ValidateItems(DWORD			dwNumItems, 
											OPCITEMDEF		*pItemArray,
											BOOL			bBlobUpdate, 
											OPCITEMRESULT	**ppValidationResults, 
											HRESULT			**ppErrors)
{
	OPCITEMRESULT	*pItemResult;
	HRESULT			*pHResultList,
					hr = S_OK;


	// Make sure we were passed good pointers
	//
	if((NULL == pItemArray)			 ||
	   (NULL == ppValidationResults) ||
	   (NULL == ppErrors))
	{
		return E_INVALIDARG;
	}

	// Defaults in case of error
	//
	*ppValidationResults = pItemResult = NULL;
	*ppErrors = pHResultList = NULL;

	// First - allocate memory for the result array(s)
	//
	*ppValidationResults = pItemResult = 
		(OPCITEMRESULT *)pIMalloc->Alloc(sizeof(OPCITEMRESULT) * dwNumItems);
	if(NULL == pItemResult)
	{
		*ppErrors = NULL;
		*ppValidationResults = NULL;
		return E_FAIL;
	}

	// Now allocate the memory for the error array(s)
	//
	*ppErrors = pHResultList = 
		(HRESULT *)pIMalloc->Alloc(sizeof(HRESULT) * dwNumItems);
	if(NULL == pHResultList)
	{
		if(pItemResult)
		{
			pIMalloc->Free(pItemResult);
		}

		*ppErrors = NULL;
		*ppValidationResults = NULL;
		return E_FAIL;
	}

	// Now for each item... 
	//
	COPCDrvItem	*pTempItem = new COPCDrvItem(this->m_pParentGroup);
	pTempItem->AddRef();
	for(DWORD i = 0; i < dwNumItems; i++)
	{
		// We call Init() on each item definition. This will verify the
		// driver name, I/O address, signal conditioning, etc through a
		// call to the NIO functions for that driver.
		//
		pHResultList[i] = pTempItem->Init((OPCHANDLE)i,		// dummy handle
										  &pItemArray[i],	// OPCITEMDEF
										  &pItemResult[i]);	// OPCITEMRESULT
		
		// Modify the error returned
		if(FAILED(pHResultList[i]))
		{
			switch(pHResultList[i])
			{
			case E_FAIL:
				pHResultList[i] = OPC_E_BADTYPE;
				break;
			default:
				pHResultList[i] = OPC_E_INVALIDITEMID;
				break;
			}
			hr = S_FALSE;
		}
	}
	// Release the temp item. This will effectively delete it
	//
	pTempItem->Release();

	return hr;
}


////////////////////////////////////////////////////////////////
// RemoveItems()
//
// This function deletes a list of items from a specific group.
//
// Returns:
//	HRESULT	-	S_OK if everything was successful

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看中文| 国产精品一区二区久激情瑜伽 | 亚洲自拍偷拍综合| 国产网红主播福利一区二区| 欧美电影免费观看高清完整版在线 | 国产福利电影一区二区三区| 韩国精品在线观看| 国产精品77777| 99久久综合精品| 91精品福利在线| 欧美乱熟臀69xxxxxx| 制服视频三区第一页精品| 91精品国模一区二区三区| 精品国产一区二区三区不卡 | 精品一区二区三区免费毛片爱| 性感美女极品91精品| 日韩电影免费在线观看网站| 久久er精品视频| 国产精品自拍三区| gogogo免费视频观看亚洲一| 99精品欧美一区二区三区小说 | 国产精品综合一区二区| 国产精品亚洲成人| 91论坛在线播放| 欧美日韩精品欧美日韩精品| 精品成a人在线观看| 国产精品天干天干在观线| 一区二区高清免费观看影视大全| 天天色天天爱天天射综合| 国产一区二区三区免费看| aa级大片欧美| 欧美一级精品在线| 国产精品久久综合| 亚洲成a人片综合在线| 久久国产夜色精品鲁鲁99| a级高清视频欧美日韩| 91精品国产综合久久蜜臀 | 欧美三区免费完整视频在线观看| 欧美一区二区福利视频| 亚洲欧洲一区二区在线播放| 天天av天天翘天天综合网色鬼国产| 看片网站欧美日韩| 91免费观看视频| 欧美喷水一区二区| 中文字幕中文字幕一区二区| 日本欧美加勒比视频| 日本精品一级二级| 欧美极品少妇xxxxⅹ高跟鞋 | 国产精品一区二区三区99| 99视频热这里只有精品免费| 精品国产一区二区在线观看| 一区二区三区免费看视频| 国产福利91精品一区二区三区| 555www色欧美视频| 亚洲男人的天堂网| 高清不卡一区二区在线| 日韩欧美一区二区久久婷婷| 亚洲女与黑人做爰| 成人av电影观看| 久久久久97国产精华液好用吗| 日韩高清不卡一区二区三区| 欧洲一区在线观看| 亚洲视频每日更新| k8久久久一区二区三区| 国产欧美1区2区3区| 国产精品18久久久久久久久久久久| 欧美精品免费视频| 亚洲不卡av一区二区三区| 91网站在线播放| 亚洲欧洲www| 丁香桃色午夜亚洲一区二区三区| 久久久亚洲国产美女国产盗摄 | 国产成人自拍在线| 欧美激情在线观看视频免费| 国产成人免费视频| 国产亚洲欧美日韩日本| 国产成人av一区二区三区在线| 精品福利视频一区二区三区| 精品系列免费在线观看| 精品国产三级电影在线观看| 国内一区二区视频| 久久久久国色av免费看影院| 国产精品一线二线三线精华| 欧美精品一区二区高清在线观看| 奇米在线7777在线精品| 日韩欧美电影一区| 国产麻豆成人精品| 国产人成一区二区三区影院| 国产99精品在线观看| 最近日韩中文字幕| 91国产视频在线观看| 日一区二区三区| 精品国精品国产| 国产成人免费高清| 一区二区三区蜜桃| 91麻豆精品国产91| 国产资源在线一区| 中文字幕在线观看不卡视频| 欧美日韩精品欧美日韩精品一| 婷婷久久综合九色综合伊人色| 在线观看91精品国产麻豆| 激情亚洲综合在线| 综合久久一区二区三区| 欧美另类z0zxhd电影| 激情综合色综合久久| 中文字幕亚洲视频| 正在播放一区二区| 成人av在线一区二区三区| 一级中文字幕一区二区| 日韩视频免费观看高清完整版在线观看| 美女看a上一区| 亚洲欧美日韩在线播放| 精品久久久久久久人人人人传媒 | 欧美日韩精品一区二区在线播放| 久久电影国产免费久久电影 | 日韩国产欧美一区二区三区| 久久久久久久国产精品影院| 欧美在线观看一区二区| 国产精品一区二区视频| 婷婷丁香激情综合| 亚洲人成伊人成综合网小说| 精品国产免费人成在线观看| 在线观看三级视频欧美| 大桥未久av一区二区三区中文| 亚洲高清免费在线| 国产精品素人一区二区| 精品少妇一区二区三区日产乱码 | 极品尤物av久久免费看| 尤物视频一区二区| 久久精品一区二区三区av| 欧美精品久久久久久久多人混战| 成人精品国产福利| 国产一区欧美一区| 美女视频免费一区| 亚洲va欧美va天堂v国产综合| 国产午夜精品一区二区三区嫩草| 91精品国产美女浴室洗澡无遮挡| 色综合久久天天综合网| 国产精品一区二区久久不卡| 免费国产亚洲视频| 午夜av区久久| 亚洲综合免费观看高清在线观看| 国产精品美女一区二区在线观看| 欧美成人bangbros| 日韩一级片在线观看| 欧美日韩一区二区三区视频| 91电影在线观看| 色综合天天综合色综合av| 99久久精品国产毛片| 不卡的电视剧免费网站有什么| 国产成人在线电影| 成人精品视频网站| 成人av高清在线| 色综合久久综合网欧美综合网| 不卡一区在线观看| av在线不卡网| 色噜噜狠狠成人中文综合| 91免费看视频| 欧洲av一区二区嗯嗯嗯啊| 精品视频在线看| 欧美三级中文字| 日韩一区二区三| 日韩你懂的在线观看| 26uuu成人网一区二区三区| 精品国产一区二区亚洲人成毛片| 日韩精品资源二区在线| 精品国产乱码久久久久久牛牛| 欧美岛国在线观看| 亚洲国产激情av| 亚洲色图一区二区| 日韩黄色免费网站| 精品一区二区三区免费播放| 国产精品 日产精品 欧美精品| 成人性生交大合| 91激情在线视频| 日韩一本二本av| 国产精品久久久久aaaa樱花| 亚洲精品成人天堂一二三| 亚洲成av人片一区二区梦乃| 狠狠久久亚洲欧美| 99久久99精品久久久久久| 欧美日韩在线一区二区| 久久久亚洲精品一区二区三区| 国产精品久久精品日日| 午夜精品福利视频网站| 极品尤物av久久免费看| 成人av网站免费观看| 欧美日本在线视频| 国产精品素人一区二区| 日韩av电影一区| av在线综合网| 精品盗摄一区二区三区| 亚洲精品一二三| 精品一区二区三区视频| 91高清视频免费看| 亚洲国产精品黑人久久久 | 久久色在线视频| 亚洲午夜免费电影| 成人中文字幕合集| 日韩免费观看高清完整版在线观看|