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

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

?? enumgi.cpp

?? 一個(gè)OPC服務(wù)器開(kāi)發(fā)的源代碼。結(jié)構(gòu)清晰
?? CPP
字號(hào):
/**************************************************************************
 *                                                                        *
 * Light OPC Server development library                                   *
 *                                                                        *
 *   Copyright (c) 2000  Timofei Bondarenko, Kostya Volovich              *
                                                                          *
 CreateEnumeator() for Groups & Items
 **************************************************************************/

#include "privopc.h"
#include "enum.h"


/*****************************************************************************/

STDMETHODIMP LightOPCServer::CreateGroupEnumerator(OPCENUMSCOPE dwScope,
						   REFIID riid,
						   LPUNKNOWN *ppUnk)
{
 HRESULT hr = S_OK;
 unsigned total = 0;
 const char *diag = "?";

 LO_CHECK_STATEz1("CreateGroupEnumerator", ppUnk);
 if (!ppUnk) { hr = E_INVALIDARG; goto Exit; }

 if (riid == IID_IEnumString)
   {
    loEnumString *ne = new loEnumString(0);
    diag = "IEnumString";
    if (!ne) hr = E_OUTOFMEMORY;
    else
      {
       lock_read();
       if (dwScope != OPC_ENUM_PUBLIC &&
           dwScope != OPC_ENUM_PUBLIC_CONNECTIONS)
         {
          unsigned ii;
          LightOPCGroup **glist = (LightOPCGroup**)grl.gl_list;
          if (ostatus.dwGroupCount && ostatus.dwGroupCount >
              ne->grow_list(ostatus.dwGroupCount)) hr = E_OUTOFMEMORY;
          else
            for(ii = grl.gl_count; ii--; glist++)
              if (*glist &&
                  S_OK != (hr = ne->add_item(&(*glist)->name)))
                 break;
         }
       total = ne->total;
       unlock();
       if (S_OK == hr &&
           S_OK == (hr = ne->initiate(&otrk)))
         *ppUnk = (IEnumString*)ne;
       else delete ne;
      }
   }
 else if (riid == IID_IEnumUnknown)
   {
    loEnumUnknown* ne = new loEnumUnknown(0);
    diag = "IEnumUnknown";
    if (!ne) hr = E_OUTOFMEMORY;
    else
      {
#if LO_USE_FREEMARSHALL
       int disable_freemarsh = 0;
#endif
       lock_read();
       if (dwScope != OPC_ENUM_PUBLIC &&
           dwScope != OPC_ENUM_PUBLIC_CONNECTIONS)
         {
          IUnknown **glist = (IUnknown**)grl.gl_list;
          unsigned ii;
          if (ostatus.dwGroupCount && ostatus.dwGroupCount >
              ne->grow_list(ostatus.dwGroupCount)) hr = E_OUTOFMEMORY;
          else
            for(ii = grl.gl_count; ii--; glist++)
              if (*glist)
                if (S_OK != (hr = ne->add_item(glist))) break;
#if LO_USE_FREEMARSHALL
                else if (!(*((LightOPCGroup**)glist))->freemarsh)
                   disable_freemarsh = 1;
#endif
         }
       unlock();

       total = ne->total;
       if (S_OK == hr &&
           S_OK == (hr = ne->initiate(&otrk)))
         {
          *ppUnk = (IEnumUnknown*)ne;
#if LO_USE_FREEMARSHALL
          if (disable_freemarsh) ne->DisableFreemarsh();
#else
          ne->DisableFreemarsh();
#endif
         }
       else delete ne;
      }
   }
 else hr = E_NOINTERFACE;

Exit:
 if (S_OK == hr)
   {
    UL_NOTICE((LOG_SR("CreateGroupEnumerator(%x, %s) = %u, %p"),
              dwScope, diag, total, *ppUnk));
    if (!total) { ENUM_EMPTY(hr, ldFlags, ppUnk); }
   }
 else
   {
    char ifa[40];
    UL_INFO((LOG_SR("CreateGroupEnumerator(%u, %s) =%s"),
		 dwScope, loTranslateIID(ifa, sizeof(ifa), &riid), loStrError(hr)));
   }
 LO_FINISH();
 return hr;
}

/*****************************************************************************/
HRESULT lo_conv_enum(loCallerx *cctx, VARIANT *dst,
                     loTagAttrib *ta, void *acpath)
{
 BSTR *bst;
 HRESULT hr, thr;
 SAFEARRAY *sa;

 hr = VariantCopy(dst, &ta->taEUinfo);
 if (S_OK == hr && (VT_ARRAY|VT_BSTR) == V_VT(dst) &&
    (sa = V_ARRAY(dst)) && 1 == SafeArrayGetDim(sa) &&
    sizeof(BSTR) == sa->cbElements /*SafeArrayGetElemsize(sa)*/&&
    S_OK == (hr = loSA_AccessData(sa, (void**)&bst)))
  {
   static const VARTYPE tvt = VT_BSTR;
   WORD qua = OPC_QUALITY_GOOD;
   unsigned ii;
   VARIANT tvar; VARIANTINIT(&tvar);

   loTagPair tp;
   tp.tpTi = ta->taTi;
   tp.tpRt = ta->taRt;
   tp.tpAP = acpath;

   for(ii = 0; ii < sa->rgsabound[0].cElements; ii++)
     {
      BSTR bsp;
      V_I4(&tvar) = ii; V_VT(&tvar) = VT_I4; 
#if 0
      hr = VARIANTCHANGEt(&tvar, &tvar, cctx->cta, taVTYPE(ta));
#else
      hr = VariantChangeType(&tvar, &tvar, 0, taVTYPE(ta));
#endif

      if (S_OK != hr) break;

      cctx->cactx.ca_se->driver.ldConvertTags(&cctx->cactx, 1, &tp,
                            &tvar, &qua, &hr, &thr, &thr,
                            &tvar, &tvt, cctx->cta.vc_lcid);
      if (S_OK != hr) break;
      bsp = bst[ii];
      bst[ii] = V_BSTR(&tvar);
      V_BSTR(&tvar) = bsp;
// UL_WARNING((LOGID, "conv %x %ls -> <%ls>%d", 
  //    cctx->cta.vc_lcid, bsp, bst[ii], wcslen(bst[ii])));
      VariantClear(&tvar);
     }
   VariantClear(&tvar);
   SafeArrayUnaccessData(sa);
  }
 return hr;
}

STDMETHODIMP LightOPCGroup::CreateEnumerator(REFIID riid, LPUNKNOWN *ppUnk)
{
 HRESULT hr = S_OK;
 unsigned total = 0;

 LO_CHECK_STATEz1("Group::CreateEnumerator", ppUnk);
 if (!ppUnk) { hr = E_INVALIDARG; goto Exit; }

 if (riid == IID_IEnumOPCItemAttributes)
   {
    loEnumItemAttributes* ne = new loEnumItemAttributes(0);

    if (!ne) hr = E_OUTOFMEMORY;
    else
      {
       unsigned ii;
       LightOPCItem *item;
       OPCITEMATTRIBUTES ia;
       VARIANT tvar; VARIANTINIT(&tvar);
       memset(&ia, 0, sizeof(ia));
       loTagEntry *tags = owner->se->tags;
       int am_mask = loOPC_RIGHTS;

       lock_read();
       if (owner->access_mode & loAM_RDONLY_ADD)
         am_mask &= ~OPC_WRITEABLE;
/*       if (count > ne->grow_list(count)) hr = E_OUTOFMEMORY;
       else */
       for(ii = 0; ii < itl.gl_count; ii++)
	     if (item = (LightOPCItem*)itl.gl_list[ii])
             {
              loTagAttrib *ta = &tags[item->tid].attr;
              ia.szAccessPath = item->szAccessPath;
              ia.szItemID = item->szItemID? item->szItemID: ta->taName;
              ia.bActive = item->bActive;
              ia.hClient = item->hClient;
              ia.hServer = ii + 1;
              ia.dwAccessRights = ta->taRights & am_mask/*(OPC_READABLE | OPC_WRITEABLE)*/;
              ia.dwBlobSize = 0;
              ia.pBlob = 0;
              ia.vtRequestedDataType = item->vtRequestedDataType;
              ia.vtCanonicalDataType = taVTYPE(ta);
              ia.dwEUType = (OPCEUTYPE)ta->taEUtype;
              ia.vEUInfo = ta->taEUinfo;
              if (ia.dwEUType == OPC_ENUMERATED &&
                  loCONV_CONVERT == item->convtype)
                {
                 loCallerx cctx = owner->ctxt;
                 cctx.cta.vc_lcid = grLCID;
                 hr = lo_conv_enum(&cctx, &tvar, ta, item->AcPath);
                 if (S_OK != hr) break;
                 ia.vEUInfo = tvar;
                }
              if (S_OK != (hr = ne->add_item(&ia))) break;
             }
       unlock();
       VariantClear(&tvar);
       total = ne->total;
       if (S_OK == hr &&
           S_OK == (hr = ne->initiate(&owner->otrk)))
         *ppUnk = (IEnumOPCItemAttributes*)ne;
       else delete ne;
      }
   }
 else hr = E_NOINTERFACE;

Exit:
 if (S_OK == hr)
   {
    UL_NOTICE((LOG_GRH("CreateEnumerator(IEnumOPCItemAttributes) = %u, %p"),
                     total, *ppUnk));
    if (!total) { ENUM_EMPTY(hr, owner->ldFlags, ppUnk); }
   }
 else
   {
    char ifa[40];
    UL_INFO((LOG_GRH("CreateEnumerator(%s) =%s"),
           loTranslateIID(ifa, sizeof(ifa), &riid), loStrError(hr)));
   }

 LO_FINISH();
 return hr;
}

/*****************************************************************************/
/* end of enumgi.cpp */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久电影| 337p亚洲精品色噜噜狠狠| 26uuu欧美| 看片的网站亚洲| 久久中文娱乐网| 国产盗摄视频一区二区三区| 国产欧美一区二区精品性色超碰| 不卡一区在线观看| 亚洲综合色网站| 欧美一卡二卡三卡| 国产乱码精品一区二区三区av| 国产精品美女久久久久高潮| 色婷婷香蕉在线一区二区| 亚洲成年人影院| 欧美xfplay| eeuss鲁一区二区三区| 一区二区三区久久久| 91精品国产综合久久婷婷香蕉| 久久精品国产亚洲a| 国产精品丝袜黑色高跟| 欧美性大战xxxxx久久久| 美女看a上一区| 中日韩av电影| 欧美三级三级三级爽爽爽| 欧美aaa在线| 国产精品传媒在线| 欧美精品国产精品| 国产成人鲁色资源国产91色综| 亚洲女女做受ⅹxx高潮| 日韩精品一区在线| 91亚洲精华国产精华精华液| 婷婷综合久久一区二区三区| 欧美国产精品一区二区| 欧美日韩亚州综合| 国产.欧美.日韩| 午夜成人免费视频| 国产精品污www在线观看| 3d动漫精品啪啪一区二区竹菊| 国产一区二区三区最好精华液| 亚洲精选一二三| 久久综合999| 91成人看片片| 国产不卡在线播放| 日韩vs国产vs欧美| 一区二区三区毛片| 国产精品另类一区| 精品国产乱码久久久久久牛牛 | 色综合久久综合网| 日韩电影在线一区二区| 亚洲男人的天堂在线观看| 日韩欧美国产不卡| 欧美老年两性高潮| 97精品视频在线观看自产线路二| 精品一区二区三区在线视频| 亚洲高清视频在线| 中文成人综合网| 亚洲精品一区二区三区精华液| 欧美性大战久久久久久久蜜臀| 成人app网站| 国内精品免费在线观看| 麻豆一区二区三区| 午夜精品久久久久久久久久| 亚洲精品视频自拍| 中文字幕在线观看一区| 国产日韩综合av| 欧美精品一区视频| 日韩精品一区二区三区中文精品| 欧美人体做爰大胆视频| 欧洲在线/亚洲| 91电影在线观看| 91精品办公室少妇高潮对白| 成人免费视频播放| 成人av在线网站| 丁香婷婷综合激情五月色| 国产精品一区不卡| 国产一区二区三区四| 国产综合色在线视频区| 国产美女久久久久| 国产一区二区在线观看免费| 国产又粗又猛又爽又黄91精品| 国内成+人亚洲+欧美+综合在线 | 精品少妇一区二区三区在线播放 | 成人h版在线观看| av网站一区二区三区| 不卡一区在线观看| 一本色道久久综合亚洲91| 99久久夜色精品国产网站| 色综合久久综合中文综合网| 欧美性做爰猛烈叫床潮| 欧美喷潮久久久xxxxx| 欧美一区二区三区在线看| 日韩欧美国产电影| 国产婷婷色一区二区三区四区| 国产欧美日本一区视频| 亚洲欧美在线另类| 一区二区三区欧美久久| 日本 国产 欧美色综合| 国模大尺度一区二区三区| 大尺度一区二区| 欧美中文字幕一区二区三区亚洲| 6080yy午夜一二三区久久| 精品久久久久久无| 国产精品黄色在线观看| 亚洲一级电影视频| 久久精品国产亚洲5555| av一区二区三区四区| 欧美综合欧美视频| 日韩欧美国产午夜精品| 国产精品久久久久9999吃药| 亚洲成人动漫一区| 国产精品123| 欧美亚洲国产一区在线观看网站| 欧美一区二区三区日韩视频| 国产网红主播福利一区二区| 一区二区三区四区在线免费观看| 日韩福利视频网| 成人av电影在线观看| 欧美日韩一区二区三区在线看| 精品国产自在久精品国产| 中文字幕亚洲欧美在线不卡| 视频一区二区三区中文字幕| 国产经典欧美精品| 欧美在线不卡一区| 精品国产乱码久久久久久图片| 亚洲视频免费观看| 国产一区二区导航在线播放| 色又黄又爽网站www久久| 日韩精品一区二区三区视频 | 亚洲精品免费在线观看| 精品在线亚洲视频| 欧美性做爰猛烈叫床潮| 亚洲国产精华液网站w| 视频一区二区国产| 91亚洲国产成人精品一区二区三 | www.av亚洲| 日韩免费电影网站| 性感美女久久精品| 99久久精品国产毛片| 精品国精品国产尤物美女| 亚洲成人777| 色婷婷综合久久久中文一区二区| 久久综合狠狠综合| 日韩精品三区四区| 色中色一区二区| 中文字幕不卡的av| 国产剧情一区二区| 日韩欧美中文字幕一区| 亚洲一级二级在线| 一本色道久久加勒比精品| 国产精品嫩草影院av蜜臀| 国内精品伊人久久久久av影院 | 91黄色免费看| 中文字幕在线不卡视频| 成熟亚洲日本毛茸茸凸凹| 精品国产91九色蝌蚪| 麻豆91在线观看| 日韩一区和二区| 日韩中文字幕1| 777色狠狠一区二区三区| 尤物av一区二区| 99re成人在线| 亚洲欧洲综合另类| 97成人超碰视| 亚洲精品自拍动漫在线| 91女人视频在线观看| 亚洲三级在线观看| 色视频一区二区| 亚洲一线二线三线久久久| 91啦中文在线观看| 亚洲精品国产无天堂网2021| 91视频免费观看| 亚洲精品一二三四区| 欧美性受xxxx| 午夜婷婷国产麻豆精品| 欧美精品黑人性xxxx| 美女一区二区三区| 2017欧美狠狠色| 国产成人超碰人人澡人人澡| 国产精品水嫩水嫩| 一本高清dvd不卡在线观看| 亚洲乱码中文字幕| 欧美人妖巨大在线| 久久国产综合精品| 国产片一区二区| 91在线一区二区| 日韩中文字幕区一区有砖一区| 91精品午夜视频| 国产精品一区免费在线观看| 国产精品免费av| 91麻豆视频网站| 天堂精品中文字幕在线| 日韩欧美国产午夜精品| 国产精品一二三四区| 国产精品久久久久精k8| 欧美日韩电影一区| 久久99精品国产91久久来源| 国产精品久久久久四虎| 欧美日韩1234| 国产成人精品免费在线| 一区二区三区在线观看国产 |