// [out]
arrhServer.RemoveAll();
arrhServer.FreeExtra();
arrItemType.RemoveAll();
arrItemType.FreeExtra();
//删除组
pOPC->RemoveGroup(hServer, //[in]
true); //[in]
//---------------
CoTaskMemFree(&;hServer);
CoTaskMemFree(&;hGroup);
if(pErrors) CoTaskMemFree(pErrors);
if(pResults) CoTaskMemFree(pResults);
if(pIAsync2) pIAsync2->Release();
if(pISync) pISync->Release();
if(pIItemMgt) pIItemMgt->Release();
if(pOPC) pOPC->Release();
if(pUNK) pUNK->Release();
pOPC=NULL;
pUNK=NULL;
pIItemMgt=NULL;
pIAsync2=NULL;
pISync=NULL;
hGroup=0;
hServer=0;
CoUninitialize(); //关闭COM
return 0;
}
//*************************************************************************
//函 数 名:AddGroup
//所属类名:COPCClient
//输 入:
//输 出:long
//功能描述:添加组
//全局变量:
//调用模块:
//作 者:叶帆
//日 期:2005年12月1日
//修 改 人:
//日 期:
//版 本:
//*************************************************************************
long COPCClient::AddGroup()
{
HRESULT hr;
WCHAR wchBuffer[255];
long lBias=0;
float fDeadband=0;
DWORD dwRevUpdateRate=0;
IUnknown *pUNKgroup; //组接口指针
MultiByteToWideChar(CP_ACP, 0, mIOMDevice->ConfigMessage, -1, wchBuffer, 255);
//添加组
hr = pOPC->AddGroup (
wchBuffer, // [in] group name
TRUE, // [in] active state
mIOMDevice->Scantime, // [in] requested update rate
hGroup, // [in] our handle to this group
&;lBias, // [unique,in] time bias
&;fDeadband, // [in] percent deadband
1033, // [in] requested language ID
&;hServer, // [out] server handle t
o this group
&;dwRevUpdateRate, // [out] revised update rate
IID_IUnknown, // [in] REFIID riid,
(LPUNKNOWN*)&;pUNKgroup); // [out, iid_is(riid)] LPUNKNOWN *pUNKgroup
if(FAILED(hr)) //加入组失败
{
CoTaskMemFree(&;hServer);
CoTaskMemFree(&;dwRevUpdateRate);
if(pUNKgroup) pUNKgroup->Release();
pUNKgroup=NULL;
return 1;
}
//--------------------------------------
//
查询pIItemMgt
hr=pUNKgroup->QueryInterface(IID_IOPCItemMgt, // [in]
(void**)&;pIItemMgt); // [out]
//查询失败
if(FAILED(hr))
{
CoTaskMemFree(&;hServer);
CoTaskMemFree(&;dwRevUpdateRate);
if(pUNKgroup) pUNKgroup->Release();
pUNKgroup=NULL;
if(pIItemMgt) pIItemMgt->Release();
pIItemMgt=NULL;
return 2;
}
if(pUNKgroup) pUNKgroup->Release();
pUNKgroup=NULL;
CoTaskMemFree(&;dwRevUpdateRate);
return 0;
}
//*************************************************************************
//函 数 名:AddItem
//所属类名:COPCClient
//输 入:
//输 出:long
//功能描述:加入项
//全局变量:
//调用模块:
//作 者:叶帆
//日 期:2005年12月1日
//修 改 人:
//日 期:
//版 本:
//*************************************************************************
long COPCClient::AddItem()
{
HRESULT hr;
OPCITEMDEF *pItemArray = NULL;
HRESULT *pErrors = NULL;
DWORD dwCoun