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

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

?? old_opcwrap.h

?? opc client 工業自動化控制過程的客戶端
?? H
?? 第 1 頁 / 共 2 頁
字號:
//**************************************************************************
//
//  Copyright (c) FactorySoft, INC. 1996-1998, All Rights Reserved
//
//**************************************************************************
//
//  Filename   :  OPCWrap.h
//  $Author    :  Jim Hansen
//
//  Subsystem  :  FactorySoft OPC Client
//
//  Description:  Template wrapper classes for the OPC COM interfaces
//                These classes automatically QueryInterface, AddRef, and
//                Release when they are done, reducing reference count errors.
//
//**************************************************************************

#ifndef __OPCWRAP_H__               // Only Include Once
#define __OPCWRAP_H__

#include "opcda.h"
#include "opccomn.h"

#ifdef _DEBUG
#define TRACE_MSG(call, hr)  { \
	TRACE(_T("hr=%lx\n"), (hr));  \
	TCHAR msg[MAX_PATH*5]; \
	FormatMessage( FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, \
	NULL, \
	GetScode( hr ), \
	MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), \
	msg, MAX_PATH, NULL ); \
	TRACE(msg); \
	TRACE(_T("\n")); \
	::MessageBox( 0, msg, call, MB_OK ); \
      }
#else
#define TRACE_MSG(call,hr)  ;   // an empty statement
#endif


//*******************************************************************
template <class T, const IID* pIID>
class OInterfaceWrap
{
public:
	OInterfaceWrap() : m_pI(NULL) {}
	~OInterfaceWrap() { Detach(); }
	
	operator T*() {return m_pI;}
	operator IUnknown*() {return (IUnknown*)m_pI;}
	operator IUnknown**() {return (IUnknown**)&m_pI;}
	operator LPVOID *() {return (LPVOID *)&m_pI;}
	
	HRESULT Attach(IUnknown* pUnk)
	{
                ASSERT( pUnk != NULL );
                if( m_pI == pUnk)
			return S_OK;
                Detach();
                HRESULT hr = pUnk->QueryInterface( *pIID, (LPVOID*)&m_pI);
		//                if( FAILED(hr) )
		//                    TRACE_MSG(_T("QueryInterface"),hr);
                return hr;
	}
	
	HRESULT Attach(T* pI)
	{
                ASSERT( pI != NULL );
                if( m_pI == pI)
			return S_OK;
                Detach();
                m_pI = pI;
                m_pI->AddRef();
                return S_OK;
	}
	
	void Detach()
	{
                if( m_pI )
			m_pI->Release();
                m_pI = NULL;
	}
	
	HRESULT QueryInterface(REFIID iid, void ** ppvObject)
	{
                if( m_pI )
			return m_pI->QueryInterface(iid, ppvObject);
                return E_FAIL;
	}
	
	BOOL IsOk() const {return (m_pI != NULL); }
	
protected:
	T* m_pI;
};

//*******************************************************************
//  Server Interfaces
//*******************************************************************
typedef OInterfaceWrap<IOPCServer, &IID_IOPCServer> IOPCServerWrap;

class OPCServer : public IOPCServerWrap
{
public:
	OPCServer() {}
	
	HRESULT AddGroup(
                LPCWSTR     szName,
                BOOL        bActive,
                DWORD       dwRequestedUpdateRate,
                OPCHANDLE   hClientGroup,
                LONG      * pTimeBias,
                FLOAT     * pPercentDeadband,
                DWORD       dwLCID,
                OPCHANDLE * phServerGroup,
                DWORD     * pRevisedUpdateRate,
                REFIID      riid,
                LPUNKNOWN * ppUnk)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->AddGroup(szName, bActive, dwRequestedUpdateRate,
			hClientGroup, pTimeBias, pPercentDeadband,
			dwLCID, phServerGroup, pRevisedUpdateRate,
			riid, ppUnk );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::AddGroup"),hr);
		return hr; }
	
	HRESULT GetErrorString(
		HRESULT     dwError,
		LCID     dwLocale,
		LPWSTR     *   ppString)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->GetErrorString( dwError, dwLocale, ppString );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::GetErrorString"),hr);
		return hr; }
	
	HRESULT GetGroupByName(
		LPCWSTR     szName,
		REFIID      riid,
		LPUNKNOWN * ppUnk)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->GetGroupByName( szName, riid, ppUnk );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::GetGroupByName"),hr);
		return hr; }
	
	HRESULT GetStatus(OPCSERVERSTATUS **ppServerStatus)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->GetStatus( ppServerStatus );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::GetStatus"),hr);
		return hr; }
	
	HRESULT RemoveGroup(
		OPCHANDLE   hServerGroup,
		BOOL     bForce)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->RemoveGroup( hServerGroup, bForce );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::RemoveGroup"),hr);
		return hr; }
	
	HRESULT CreateGroupEnumerator(
		OPCENUMSCOPE dwScope,
		REFIID      riid,
		LPUNKNOWN * ppUnk)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->CreateGroupEnumerator( dwScope, riid, ppUnk );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCServer::CreateGroupEnumerator"),hr);
		return hr; }
};

//*******************************************************************
typedef OInterfaceWrap<IOPCItemProperties,
&IID_IOPCItemProperties> IOPCItemPropertiesWrap;

class OPCItemProperties : public IOPCItemPropertiesWrap
{
public:
	OPCItemProperties() {}
	
	HRESULT QueryAvailableProperties(
		LPWSTR szItemID,
		DWORD *pdwCount,
		DWORD **ppPropertyIDs,
		LPWSTR **ppDescriptions,
		VARTYPE **ppvtDataTypes)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->QueryAvailableProperties( szItemID,
                        pdwCount, ppPropertyIDs, ppDescriptions, ppvtDataTypes );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCItemProperties::QueryAvailableProperties"),hr);
		return hr; }
	
	HRESULT GetItemProperties(
		LPWSTR szItemID,
		DWORD dwCount,
		DWORD *pdwPropertyIDs,
		VARIANT **ppvData,
		HRESULT **ppErrors)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->GetItemProperties( szItemID,
                        dwCount, pdwPropertyIDs, ppvData, ppErrors );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCItemProperties::QueryAvailableProperties"),hr);
		return hr; }
	
	HRESULT LookupItemIDs(
		LPWSTR szItemID,
		DWORD dwCount,
		DWORD *pdwPropertyIDs,
		LPWSTR **ppszNewItemIDs,
		HRESULT **ppErrors)
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->LookupItemIDs( szItemID,
                        dwCount, pdwPropertyIDs, ppszNewItemIDs, ppErrors );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCItemProperties::QueryAvailableProperties"),hr);
		return hr; }
};

//*******************************************************************
typedef OInterfaceWrap<IOPCServerPublicGroups,
&IID_IOPCServerPublicGroups> IOPCServerPublicGroupsWrap;

class OPCServerPublicGroups : public IOPCServerPublicGroupsWrap
{
public:
	OPCServerPublicGroups() {}
	// not yet implemented
};

//*******************************************************************
typedef OInterfaceWrap<IOPCBrowseServerAddressSpace,
&IID_IOPCBrowseServerAddressSpace> IOPCBrowseServerAddressSpaceWrap;

class OPCBrowseServerAddressSpace : public IOPCBrowseServerAddressSpaceWrap
{
public:
	OPCBrowseServerAddressSpace() {}
	
	HRESULT QueryOrganization( OPCNAMESPACETYPE * pNameSpaceType)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->QueryOrganization( pNameSpaceType );
		if( FAILED( hr ) )
			TRACE_MSG(_T("Browse::QueryOrganization"),hr);
		return hr; }
	
	HRESULT ChangeBrowsePosition(
		OPCBROWSEDIRECTION dwBrowseDirection,
		LPCWSTR           szString)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->ChangeBrowsePosition( dwBrowseDirection, szString );
		//        if( FAILED( hr ) )  // error means can't go farther, etc.
		//            TRACE_MSG(_T("Browse::ChangeBrowsePosition"),hr);
		return hr; }
	
	HRESULT BrowseOPCItemIDs(
		OPCBROWSETYPE     dwBrowseFilterType,
		LPCWSTR           szFilterCriteria,
		VARTYPE           vtDataTypeFilter,
		DWORD             dwAccessRightsFilter,
		LPENUMSTRING *    ppIEnumString)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->BrowseOPCItemIDs( dwBrowseFilterType, szFilterCriteria,
			vtDataTypeFilter, dwAccessRightsFilter, ppIEnumString );
		if( FAILED( hr ) )
			TRACE_MSG(_T("Browse::BrowseOPCItemIDs"),hr);
		return hr; }
	
	HRESULT GetItemID(LPWSTR   szItemDataID,
		LPWSTR * szItemID)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->GetItemID( szItemDataID, szItemID );
		if( FAILED( hr ) )
			TRACE_MSG(_T("Browse::GetItemID"),hr);
		return hr; }
	
	HRESULT BrowseAccessPaths( LPCWSTR        szItemID,
		LPENUMSTRING * ppIEnumString)
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->BrowseAccessPaths( szItemID, ppIEnumString );
		if( FAILED( hr ) )
			TRACE_MSG(_T("Browse::BrowseAccessPaths"),hr);
		return hr; }
};

//*******************************************************************
//    Group Interfaces
//*******************************************************************
typedef OInterfaceWrap<IOPCGroupStateMgt,
&IID_IOPCGroupStateMgt> IOPCGroupStateMgtWrap;

class OPCGroupStateMgt : public IOPCGroupStateMgtWrap
{
public:
	OPCGroupStateMgt() {}
	
	HRESULT GetState( DWORD     * pUpdateRate,
		BOOL      * pActive,
		LPWSTR    * ppName,
		LONG      * pTimeBias,
		FLOAT     * pPercentDeadband,
		DWORD     * pLCID,
		OPCHANDLE * phClientGroup,
		OPCHANDLE * phServerGroup )
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->GetState( pUpdateRate, pActive, ppName, pTimeBias,
			pPercentDeadband, pLCID, phClientGroup, phServerGroup );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCGroupStateMgt::GetState"),hr);
		return hr; }
	
	HRESULT SetState( DWORD     * pRequestedUpdateRate,
		DWORD     * pRevisedUpdateRate,
		BOOL      * pActive,
		LONG      * pTimeBias,
		FLOAT     * pPercentDeadband,
		DWORD     * pLCID,
		OPCHANDLE * phClientGroup )
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->SetState( pRequestedUpdateRate, pRevisedUpdateRate, pActive,
			pTimeBias, pPercentDeadband, pLCID, phClientGroup );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCGroupStateMgt::SetState"),hr);
		return hr; }
	
	HRESULT SetName( LPCWSTR szName )
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->SetName( szName );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCGroupStateMgt::SetName"),hr);
		return hr; }
	
	HRESULT CloneGroup(LPCWSTR     szName,
		REFIID      riid,
		LPUNKNOWN * ppUnk )
        { //ASSERT( IsOk() );
		if( !IsOk() )
			return E_FAIL;
		HRESULT hr = m_pI->CloneGroup( szName, riid, ppUnk );
		if( FAILED( hr ) )
			TRACE_MSG(_T("OPCGroupStateMgt::CloneGroup"),hr);
		return hr; }
};

//*******************************************************************
typedef OInterfaceWrap<IOPCPublicGroupStateMgt,
&IID_IOPCPublicGroupStateMgt> IOPCPublicGroupStateMgtWrap;

class OPCPublicGroupStateMgt : public IOPCPublicGroupStateMgtWrap
{
public:
	OPCPublicGroupStateMgt() {}
	
	HRESULT GetState( BOOL * pPublic )
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->GetState( pPublic );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCPublicGroupStateMgt::GetState"),hr);
		return hr; }
	
	HRESULT MoveToPublic( void )
        { //ASSERT( IsOk() );
		HRESULT hr = m_pI->MoveToPublic( );
		if( FAILED( hr ) )
			TRACE_MSG(_T("IOPCPublicGroupStateMgt::MoveToPublic"),hr);
		return hr; }
	
};

//*******************************************************************
typedef OInterfaceWrap<IOPCSyncIO, &IID_IOPCSyncIO> IOPCSyncIOWrap;

class OPCSyncIO : public IOPCSyncIOWrap
{
public:
	OPCSyncIO() {}
	
	HRESULT Read(  OPCDATASOURCE   dwSource,
		DWORD           dwNumItems,
		OPCHANDLE     * phServer,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站在线观看视频| 狠狠色丁香久久婷婷综| 国产情人综合久久777777| 日韩免费观看高清完整版在线观看| 欧美日韩aaa| 欧美日韩国产片| 欧美高清一级片在线| 欧美日韩精品一区二区天天拍小说| 欧美综合色免费| 欧美性受xxxx黑人xyx| 日本韩国精品在线| 欧美亚洲动漫精品| 日韩一区二区视频| 精品剧情在线观看| 久久青草欧美一区二区三区| 中文字幕+乱码+中文字幕一区| 成人欧美一区二区三区| 亚洲综合在线视频| 日本不卡视频在线| 国产成+人+日韩+欧美+亚洲| 99久久婷婷国产| 欧美午夜影院一区| 欧美va在线播放| 欧美国产激情一区二区三区蜜月| 亚洲精品高清视频在线观看| 三级成人在线视频| 国产成人精品1024| 欧美三日本三级三级在线播放| 欧美精品自拍偷拍| 国产精品无人区| 亚洲超碰精品一区二区| 国产老肥熟一区二区三区| 91麻豆自制传媒国产之光| 欧美日韩国产成人在线91| 国产午夜亚洲精品理论片色戒| 亚洲人成网站色在线观看| 久久精品国产网站| 色综合网站在线| 精品国产乱码久久久久久免费| 中文字幕二三区不卡| 日韩高清不卡一区| 成人黄色a**站在线观看| 欧美人牲a欧美精品| 久久精品男人的天堂| 天堂久久一区二区三区| 99视频在线精品| 精品理论电影在线| 天堂成人国产精品一区| 99re热这里只有精品视频| 日韩女优av电影| 婷婷综合久久一区二区三区| av午夜精品一区二区三区| 精品免费国产一区二区三区四区| 亚洲一区在线电影| 不卡大黄网站免费看| 久久久综合九色合综国产精品| 亚洲国产日韩精品| 91小视频免费观看| 欧美极品美女视频| 国产精品一区二区不卡| 精品日韩av一区二区| 日日夜夜免费精品视频| 欧美三级在线播放| 亚洲午夜av在线| 色婷婷精品久久二区二区蜜臂av| 欧美激情一区二区在线| 国产综合色在线视频区| 欧美一二区视频| 日本中文字幕一区二区视频 | 开心九九激情九九欧美日韩精美视频电影 | 久久欧美一区二区| 国产成人精品午夜视频免费| 日韩一区二区三区在线观看 | 激情综合网激情| 日韩一本二本av| 麻豆精品国产91久久久久久| 日韩欧美色综合网站| 久久精品国产成人一区二区三区| 日韩免费成人网| 黄一区二区三区| 欧美激情中文字幕一区二区| 丁香一区二区三区| 国产精品久久久久久一区二区三区| 国产suv一区二区三区88区| 国产精品素人一区二区| 91在线视频播放| 亚洲一区二区三区国产| 欧美一级高清大全免费观看| 久久91精品久久久久久秒播| 国产日韩视频一区二区三区| www.欧美日韩| 日韩国产精品91| 日本一区二区三区久久久久久久久不 | 国产精品影视天天线| 久久久99精品免费观看| 亚洲精品在线一区二区| 日韩黄色片在线观看| 精品国产乱码久久久久久蜜臀| 国产精品一区在线观看乱码| 亚洲天堂网中文字| 7777精品伊人久久久大香线蕉完整版| 日韩中文字幕麻豆| 久久你懂得1024| 白白色 亚洲乱淫| 日韩精品五月天| 国产精品欧美一区喷水| 欧美性色aⅴ视频一区日韩精品| 午夜国产精品一区| 欧美精品一区二区三区四区 | 亚洲欧美日韩在线播放| 欧美人与z0zoxxxx视频| 国产麻豆午夜三级精品| 一区二区三区在线观看欧美 | 欧洲精品在线观看| 久久精品免费观看| 亚洲精品成人天堂一二三| 欧美一级免费大片| 成人黄色av电影| 久久er精品视频| 亚洲精品国产精品乱码不99| 久久日韩精品一区二区五区| 欧美亚洲高清一区| 成人黄色电影在线 | 91精品国产福利| 色哟哟亚洲精品| 国产在线国偷精品免费看| 亚洲一区二区三区四区中文字幕| 26uuu精品一区二区在线观看| 欧美午夜理伦三级在线观看| 国产精品亚洲专一区二区三区| 午夜久久电影网| 亚洲精品成人少妇| 亚洲视频一区二区在线| 国产亚洲美州欧州综合国| 91精品国产日韩91久久久久久| 色综合久久中文字幕| 国产91精品精华液一区二区三区 | 国产精品久久久久久久久免费桃花 | 国产99久久久精品| 久久电影网电视剧免费观看| 同产精品九九九| 亚洲香肠在线观看| 亚洲欧美一区二区不卡| 中文字幕精品一区| 国产拍欧美日韩视频二区| xf在线a精品一区二区视频网站| 91精品在线免费观看| 欧美日韩一卡二卡| 色老汉av一区二区三区| 色又黄又爽网站www久久| 91色porny在线视频| 91国偷自产一区二区开放时间| 波多野结衣中文字幕一区 | 亚洲欧美日韩久久| 亚洲精品成人a在线观看| 一区二区三区四区激情| 亚洲高清免费观看 | 亚洲国产精品久久久久婷婷884| 亚洲色图清纯唯美| 亚洲一区二区美女| 日韩av电影天堂| 久久激情五月激情| 国产在线精品一区二区不卡了 | 国产高清在线精品| 国产mv日韩mv欧美| 99国内精品久久| 欧美日韩在线电影| 日韩亚洲欧美在线| 久久久噜噜噜久久中文字幕色伊伊| 久久久久久日产精品| 亚洲婷婷综合久久一本伊一区| 亚洲男人的天堂一区二区| 亚洲成人一区在线| 精品亚洲国内自在自线福利| 国产成人免费网站| 91蜜桃婷婷狠狠久久综合9色| 欧美三级中文字幕在线观看| 欧美一区二区成人| 国产精品无遮挡| 亚洲电影激情视频网站| 国产乱码精品一区二区三区五月婷| 成人h动漫精品| 欧美日韩成人一区二区| 久久网这里都是精品| 亚洲亚洲人成综合网络| 久久99久久精品| 色综合咪咪久久| 欧美岛国在线观看| 亚洲欧美一区二区三区极速播放 | 精品国产青草久久久久福利| 中文字幕中文乱码欧美一区二区| 亚洲成年人网站在线观看| 精品影院一区二区久久久| 91老司机福利 在线| 久久婷婷色综合| 亚欧色一区w666天堂| 不卡的av在线播放| 26uuu色噜噜精品一区二区| 一区二区理论电影在线观看| 国产精品一区二区久久不卡 |