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

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

?? geterr.c

?? 一個OPC服務器開發的源代碼。結構清晰
?? C
字號:
/**************************************************************************
 *                                                                        *
 * Light OPC Server development library                                   *
 *                                                                        *
 *   Copyright (c) 2000  Timofei Bondarenko, Kostya Volovich              *
                                                                          *
 Error descriptions
 **************************************************************************/

#include <windows.h>
#include <winerror.h>

#include <wchar.h>
#include <opcerror.h>
#include "loserv.h"
#include "util.h"
#include LO_OLE_ERRORS_h
#include <olectl.h>

#if 1
#define LO_ERR(err,derr) HRESULT lo##err = err
#else
#define LO_ERR(err,derr) HRESULT lo##err = derr
#endif
LO_ERR(OPC_E_NOTFOUND, E_FAIL);
LO_ERR(OPC_E_INVALIDHANDLE, E_FAIL);
LO_ERR(OPC_S_CLAMP, S_OK);
#undef LO_ERR

typedef struct err_descr
{
	int hresult;
	unsigned size;
	const char *text;
} err_descr;

#define ERR_TEXT(text) SIZEOF_ARRAY(text), text
#define ERR_DESCR(name,text) { name, ERR_TEXT(text " /" #name) }

static const err_descr descr[] = {
/**************** OPC codes from opcerror.h *********************************/
ERR_DESCR(OPC_E_INVALIDHANDLE, "The value of the handle is invalid."),
ERR_DESCR(OPC_E_BADTYPE, "The server cannot convert the data between the "
			 "requested data type and the canonical data type."),
ERR_DESCR(OPC_E_PUBLIC, "The requested operation cannot be done on a public group."),
ERR_DESCR(OPC_E_BADRIGHTS, "The Items AccessRights do not allow the operation."),
ERR_DESCR(OPC_E_UNKNOWNITEMID, "The item is no longer available in the server address space"),
ERR_DESCR(OPC_E_INVALIDITEMID, "The item definition doesn't conform to the server's syntax."),
ERR_DESCR(OPC_E_INVALIDFILTER, "The filter string was not valid"),
ERR_DESCR(OPC_E_UNKNOWNPATH, "The item's access path is not known to the server."),
ERR_DESCR(OPC_E_RANGE, "The value was out of range."),
ERR_DESCR(OPC_E_DUPLICATENAME, "Duplicate name not allowed."),
ERR_DESCR(OPC_S_UNSUPPORTEDRATE, "The server does not support the requested data rate "
		                 "but will use the closest available rate."),
ERR_DESCR(OPC_S_CLAMP, "A value passed to WRITE was accepted but the output was clamped."),

#ifdef OPC_E_INVALID_PID /* OPC-DA v2 */
ERR_DESCR(OPC_S_INUSE, "The operation cannot be completed because the "
		       "object still has references that exist."),
ERR_DESCR(OPC_E_INVALIDCONFIGFILE, "The server's configuration file is an invalid format."),
ERR_DESCR(OPC_E_NOTFOUND, "The server could not locate the requested object."),
ERR_DESCR(OPC_E_INVALID_PID, "The server does not recognise the passed property ID."),
#endif

#ifdef OPC_E_NOTSUPPORTED /* OPC-DA v3 */
ERR_DESCR(OPC_E_DEADBANDNOTSET, "The item deadband has not been set for this item."),
ERR_DESCR(OPC_E_DEADBANDNOTSUPPORTED, "The item does not support deadband."),
ERR_DESCR(OPC_E_NOBUFFERING, "The server does not support buffering of data items "
          "that are collected at a faster rate than the group update rate."),
ERR_DESCR(OPC_E_INVALIDCONTINUATIONPOINT, "The continuation point is not valid."),
ERR_DESCR(OPC_S_DATAQUEUEOVERFLOW, "Not every detected change has been returned since "
          "the server's buffer reached its limit and had to purge out the oldest data."),
ERR_DESCR(OPC_E_RATENOTSET, "There is no sampling rate set for the specified item."),
ERR_DESCR(OPC_E_NOTSUPPORTED, "The server does not support writing of quality "
          "and/or timestamp."),
#endif

/**************** common codes ***************************************/
ERR_DESCR(E_FAIL, "The operation failed."),
ERR_DESCR(E_UNEXPECTED, "Catastrophic failure."),
ERR_DESCR(E_OUTOFMEMORY, "Not enough memory."),
ERR_DESCR(E_INVALIDARG, "An argument to the function was invalid."),
ERR_DESCR(E_NOINTERFACE, "The interface (riid) asked for is not supported by server."),
ERR_DESCR(E_NOTIMPL, "The requested method is not implemented."),
ERR_DESCR(E_POINTER, "Invalid pointer."),
ERR_DESCR(DISP_E_BADINDEX, "The specified index is invalid."),
ERR_DESCR(DISP_E_BADVARTYPE, "The input parameter is not a valid type of variant."),
ERR_DESCR(DISP_E_OVERFLOW, "The data pointed to by the output parameter "
                           "does not fit in the destination type."),
ERR_DESCR(DISP_E_TYPEMISMATCH, "The argument could not be coerced to the specified type."),
/*<olectl.h>*/
ERR_DESCR(CONNECT_E_NOCONNECTION, "The specified CONNECTION is not a valid connection."),
ERR_DESCR(CONNECT_E_ADVISELIMIT, "Advise limit exceeded for this object."),
ERR_DESCR(CONNECT_E_CANNOTCONNECT, "The SINK does not support the interface required "
                                   "by this connection point."),
ERR_DESCR(OLE_E_NOCONNECTION, "Cannot Unadvise - there is no such connection."),
/*<winerror.h>*/
ERR_DESCR(DV_E_FORMATETC, "Invalid or unregistered Format specified in FORMATEC."),

ERR_DESCR(S_FALSE, "The operation partially successed."),
ERR_DESCR(S_OK, "The operation successed."),
{ -1, ERR_TEXT("<UNKNOWN ERROR>") } /* MANDATORY TERMINATOR */
};


const char *loStrError(HRESULT ecode)
{
 const err_descr *ed = descr;
 while(ecode != (HRESULT)ed->hresult && ed->hresult != -1) ed++;
 return ed->text;
}

unsigned loGetErrorString(loWchar *buf, unsigned wcsize,
                          HRESULT ecode, LCID locale)
{
 const err_descr *ed; 
 char *smsg = 0;
 loWchar *wmsg = 0;
 unsigned mlen = 0;

 for(ed = descr; ed->hresult != -1; ed++)
   if (ecode == (HRESULT)ed->hresult) break;

 mlen = ed->size - 1;
 if (ed->hresult != -1) goto Finish;

#define FMT_MSG_ARG(ecode,locale,str) FORMAT_MESSAGE_FROM_SYSTEM|\
                                      FORMAT_MESSAGE_IGNORE_INSERTS| \
                                      FORMAT_MESSAGE_ALLOCATE_BUFFER, \
                                      NULL, ecode, locale, str, 0, NULL

 mlen = FormatMessageW(FMT_MSG_ARG(ecode, locale, (LPWSTR)&wmsg));
 if ((!mlen || !wmsg) && locale)
   {
    if (wmsg) LocalFree(wmsg);
    wmsg = 0;
    mlen = FormatMessageW(FMT_MSG_ARG(ecode, 0/*safe locale*/, (LPWSTR)&wmsg));
   }

 if (wmsg)
   {           /* are we sure the wchar_t is unsigned? */
    while(mlen && wmsg[mlen-1] <= L' ' && 
                  wmsg[mlen-1] >= 0) mlen--;
    if (mlen) goto Finish;
    LocalFree(wmsg);
   }
 wmsg = 0; mlen = 0; /* Failed to get a wide string */
/* 2nd try: On w95/98 we haven't FormatMessageW()... */
/* for narrow strings a locale may be useless */
 mlen = FormatMessageA(FMT_MSG_ARG(ecode, locale, (LPSTR)&smsg));
 if ((!mlen || !smsg) && locale)
   {
    if (smsg) LocalFree(smsg);
    smsg = 0;
    mlen = FormatMessageA(FMT_MSG_ARG(ecode, 0/*safe locale*/, (LPSTR)&smsg));
   }

 if (smsg)
   {
    while(mlen && ' ' >= (unsigned char)smsg[mlen-1]) mlen--;
    if (mlen) goto Finish;
    LocalFree(smsg); 
   }
 smsg = 0; mlen = 0;

Finish:

 if (buf && wcsize)
   {
    unsigned tlen = mlen < wcsize? mlen: wcsize - 1;

    if (wmsg) memcpy(buf, wmsg, tlen * sizeof(loWchar));  
    else 
      {
/* This is for w95 again */
        if (smsg)
          {
            unsigned slen = tlen;
            do tlen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, 
                                       smsg, slen, buf, wcsize-1);
            while(!tlen && --slen);
            if (mlen < tlen) mlen = tlen;
          }
        else tlen = 0;
        if (!tlen)
          {
            mlen = ed->size - 1;
            tlen = mlen < wcsize? mlen: wcsize - 1;
            tlen = lo_mbstowcs(buf, ed->text, tlen);
            if (0 > (int)tlen) tlen = 0;
          }
      }

    wcsize -= tlen;  /* clean line-breaks produced by FormatMessage() */
    for(; tlen--; buf++) 
      if (0 <= *buf && *buf <= L' ') *buf = L' ';
    *buf = 0;

    if (wcsize)
      {
//     ecode &= 0xffffffff;
       _snwprintf(buf, wcsize, L" =0x%lX(%ld)", (long)ecode, (long)ecode);
       buf[wcsize-1] = 0;
      }
   }

 if (wmsg) LocalFree(wmsg);
 if (smsg) LocalFree(smsg);

 return mlen + 
        sizeof(long) * 5 + /* 2 haxadec + 3 dec digits per byte */
        sizeof(" =0x()");  /* separators */
}

HRESULT loComErrorString(loService *se, const loCaller *cactx,
                         HRESULT dwError, LCID dwLocale, loWchar **ppString)
{
 loWchar buf[256];
 loWchar *abuf = 0;
 unsigned size;
 unsigned asize = 0;

 if (!ppString) return E_INVALIDARG;
 *ppString = 0;
 if (!loSERVICE_OK(se)) return LO_E_SHUTDOWN;
 if (!cactx) cactx = &se->cactx;
 
 buf[SIZEOF_ARRAY(buf)-1] = 0;
 if (!se->driver.ldGetErrorString ||
     0 == (size = se->driver.ldGetErrorString(cactx, dwError, dwLocale,
                                            buf, SIZEOF_ARRAY(buf)-1)) )
   size = loGetErrorString(buf, SIZEOF_ARRAY(buf), dwError, dwLocale);

 if (size >= SIZEOF_ARRAY(buf))
   if (abuf = (loWchar*)loComAlloc((size + 2) * sizeof(loWchar)))
     {
      if (se->driver.ldGetErrorString &&
          (asize = se->driver.ldGetErrorString(cactx, dwError, dwLocale,
                                               abuf, size + 1)) ||
          (asize = loGetErrorString(abuf, size + 1, dwError, dwLocale)))
        {
         goto Finish;
        }
     }
   else size = SIZEOF_ARRAY(buf) - 1; 
 else if (!size) size = SIZEOF_ARRAY(buf) - 1;

 if (!abuf &&
    !(abuf = (loWchar*)loComAlloc((size + 1) * sizeof(loWchar))))
   return E_OUTOFMEMORY;
 memcpy(abuf, buf, size * sizeof(loWchar));

Finish:
 abuf[size] = 0;
 *ppString = abuf;

 return S_OK;
}

/* end of geterr.cpp */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久只精品国产| 亚洲综合清纯丝袜自拍| 蜜臀av性久久久久蜜臀aⅴ | 国产福利91精品| 久久精品人人做人人综合| 欧美精品vⅰdeose4hd| 精品在线观看视频| 色综合久久99| 天天综合天天综合色| 日韩久久精品一区| 国产91在线观看| 亚洲精品精品亚洲| 日韩欧美一区在线| 成人少妇影院yyyy| 亚洲成人你懂的| 久久久久亚洲蜜桃| 97超碰欧美中文字幕| 亚洲电影视频在线| 久久久久国产精品麻豆| 91蜜桃免费观看视频| 久久精品国产亚洲一区二区三区| 久久免费看少妇高潮| 在线观看一区日韩| 国产一区二区三区电影在线观看 | 日韩欧美中文一区| 国产91精品露脸国语对白| 国产精品99久久久久久宅男| 欧美丝袜丝nylons| 日韩av电影天堂| 欧美区视频在线观看| 色哟哟一区二区| 日本一区二区三区dvd视频在线| 成人h动漫精品一区二| 亚洲影视在线播放| 中文字幕免费不卡| 91精品国产一区二区三区| 丁香天五香天堂综合| 毛片不卡一区二区| 一区二区激情视频| 国产性做久久久久久| 欧美美女喷水视频| 91免费国产在线观看| 久久er99精品| 婷婷成人综合网| 国产精品对白交换视频| 日韩欧美在线1卡| 在线观看国产一区二区| 国产福利精品一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 国产资源精品在线观看| 欧美夫妻性生活| 久久精品国产精品亚洲红杏| 亚洲精品久久嫩草网站秘色| 国产欧美日韩视频一区二区| 欧美一区二区三区喷汁尤物| 欧美电影免费观看高清完整版 | 午夜日韩在线观看| 一区二区中文视频| 久久精品夜色噜噜亚洲aⅴ| 91精品免费观看| 欧美亚洲日本国产| 日本乱人伦aⅴ精品| 成人精品gif动图一区| 国产九色精品成人porny| 蜜桃av一区二区三区| 天天操天天综合网| 亚洲精品视频一区| 国产精品理论片在线观看| 国产欧美日韩综合精品一区二区| 欧美videofree性高清杂交| 日韩午夜小视频| 日韩美女一区二区三区| 欧美mv日韩mv国产| 精品国产伦一区二区三区免费| 欧美精品乱码久久久久久按摩| 欧美日韩综合在线免费观看| 91成人在线精品| 欧美在线不卡一区| 精品视频色一区| 欧美一区二区三区在| 欧美成人aa大片| 国产日韩欧美高清| 亚洲欧洲另类国产综合| 亚洲男人的天堂网| 亚洲一区二区三区视频在线| 亚洲欧美韩国综合色| 夜夜嗨av一区二区三区四季av| 一二三区精品福利视频| 丝袜美腿亚洲一区| 麻豆精品久久精品色综合| 极品少妇一区二区三区精品视频| 国产一区二区三区四| 成人一区在线观看| 日本久久一区二区| 欧美日韩精品一区二区三区 | 精品久久久三级丝袜| 久久综合视频网| 欧美高清在线视频| 亚洲久草在线视频| 麻豆精品国产传媒mv男同| 国产九色sp调教91| 色哟哟国产精品免费观看| 欧美日韩欧美一区二区| 日韩免费电影一区| 中文欧美字幕免费| 午夜亚洲福利老司机| 精品在线观看免费| 91在线观看一区二区| 欧美日韩亚洲综合一区二区三区| 欧美一二三四区在线| 国产视频一区在线观看| 亚洲午夜一二三区视频| 国产一区二区影院| 91久久精品一区二区三区| 日韩精品一区在线| 亚洲三级久久久| 蜜臀久久久久久久| 99精品视频在线免费观看| 欧美精品乱码久久久久久| 国产人伦精品一区二区| 亚洲综合一二区| 国产成人午夜精品影院观看视频 | 精品久久人人做人人爱| 国产精品九色蝌蚪自拍| 秋霞电影网一区二区| 91在线精品一区二区三区| 精品处破学生在线二十三| 一区二区三区四区亚洲| 国产美女娇喘av呻吟久久| 欧美这里有精品| 国产精品妹子av| 麻豆视频观看网址久久| 色欧美乱欧美15图片| 欧美国产精品一区| 久久精品国产99久久6| 欧美性做爰猛烈叫床潮| 中文在线一区二区| 精品在线观看视频| 欧美剧情片在线观看| 亚洲女女做受ⅹxx高潮| 国产99久久久久| 2023国产精华国产精品| 天堂av在线一区| 在线影视一区二区三区| 国产精品视频九色porn| 国内精品国产成人国产三级粉色| 欧美系列在线观看| 亚洲丝袜另类动漫二区| 国产高清亚洲一区| 26uuu精品一区二区三区四区在线| 亚洲一区免费观看| 在线免费观看日本欧美| 亚洲色图欧美在线| 成人免费看片app下载| 国产日韩精品一区二区三区 | 欧美一级在线免费| 亚洲成人免费视| 欧美亚洲一区三区| 亚洲一区二区三区美女| 欧美影视一区在线| 亚洲一级电影视频| 欧美怡红院视频| 无码av免费一区二区三区试看| 91麻豆免费观看| 亚洲天堂久久久久久久| 91在线一区二区| 亚洲人精品午夜| 色久优优欧美色久优优| 亚洲精品国产视频| 欧美天堂一区二区三区| 婷婷丁香久久五月婷婷| 91精品国产综合久久精品性色 | 极品少妇一区二区三区精品视频| 91精品国产入口| 男人操女人的视频在线观看欧美| 日韩欧美综合一区| 国内精品免费在线观看| 久久综合色婷婷| 国产不卡在线一区| 中文av字幕一区| 97精品国产露脸对白| 亚洲国产欧美日韩另类综合| 欧美午夜不卡视频| 日韩制服丝袜先锋影音| 精品久久久久久久人人人人传媒| 精品在线播放免费| 国产精品久久久久毛片软件| 色哟哟一区二区在线观看| 五月天网站亚洲| 欧美精品一区二区三区一线天视频 | 91麻豆国产自产在线观看| 亚洲精品日日夜夜| 555夜色666亚洲国产免| 国产精品自产自拍| 亚洲人成在线播放网站岛国| 91精品国产综合久久国产大片| 久久99日本精品| 日韩理论在线观看| 欧美成va人片在线观看| 99久久精品国产观看|