• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            CComPtr Class ---- 轉(zhuǎn)自msdn

            A smart pointer class for managing COM interface pointers.

            template<
            class T
            >
            class CComPtr
            T

            A COM interface specifying the type of pointer to be stored.

            ATL uses CComPtr and CComQIPtr to manage COM interface pointers. Both are derived from CComPtrBase, and both perform automatic reference counting.

            The CComPtr and CComQIPtr classes can help eliminate memory leaks by performing automatic reference counting. The following functions both perform the same logical operations; however, note how the second version may be less error-prone by using the CComPtr class:

            Visual C++
            // Error-checking routine that performs manual lifetime management
            // of a COM IErrorInfo object
            HRESULT CheckComError_Manual()
            {
            HRESULT hr;
            CComBSTR bstrDescription;
            CComBSTR bstrSource;
            CComBSTR bstrHelpFile;
            IErrorInfo* pErrInfo = NULL; // naked COM interface pointer
            hr = ::GetErrorInfo(0, &pErrInfo);
            if(hr != S_OK)
            return hr;
            hr = pErrInfo->GetDescription(&bstrDescription);
            if(FAILED(hr))
            {
            pErrInfo->Release();   // must release interface pointer before returning
            return hr;
            }
            hr = pErrInfo->GetSource(&bstrSource);
            if(FAILED(hr))
            {
            pErrInfo->Release();   // must release interface pointer before returning
            return hr;
            }
            hr = pErrInfo->GetHelpFile(&bstrHelpFile);
            if(FAILED(hr))
            {
            pErrInfo->Release();   // must release interface pointer before returning
            return hr;
            }
            pErrInfo->Release();      // must release interface pointer before returning
            return S_OK;
            }
            
            Visual C++
            // Error-checking routine that performs automatic lifetime management
            // of a COM IErrorInfo object through a CComPtr smart pointer object
            HRESULT CheckComError_SmartPtr()
            {
            HRESULT hr;
            CComBSTR bstrDescription;
            CComBSTR bstrSource;
            CComBSTR bstrHelpFile;
            CComPtr<IErrorInfo> pErrInfo;
            hr = ::GetErrorInfo(0, &pErrInfo);
            if(hr != S_OK)
            return hr;
            hr = pErrInfo->GetDescription(&bstrDescription);
            if(FAILED(hr))
            return hr;
            hr = pErrInfo->GetSource(&bstrSource);
            if(FAILED(hr))
            return hr;
            hr = pErrInfo->GetHelpFile(&bstrHelpFile);
            if(FAILED(hr))
            return hr;
            return S_OK;
            }   // CComPtr will auto-release underlying IErrorInfo interface pointer as needed
            

            In Debug builds, link atlsd.lib for code tracing.

             Requirements

            Header: atlbase.h

            posted on 2008-09-04 00:12 大龍 閱讀(456) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品免费久久久久久久久| 国产精品一区二区久久精品涩爱| 精品国际久久久久999波多野| 久久精品中文无码资源站| 久久久久久夜精品精品免费啦| 久久免费精品一区二区| 久久综合九色欧美综合狠狠 | 波多野结衣久久| 一本久久a久久精品综合夜夜| 久久影视综合亚洲| 99久久人妻无码精品系列 | 影音先锋女人AV鲁色资源网久久| 国内精品九九久久久精品| 久久无码人妻精品一区二区三区| 久久99久久99精品免视看动漫 | 欧洲成人午夜精品无码区久久| 婷婷综合久久中文字幕| 蜜臀av性久久久久蜜臀aⅴ| 精品国产91久久久久久久a | 精品久久久久久无码专区| 无码8090精品久久一区| 99久久综合国产精品二区| 新狼窝色AV性久久久久久| 亚洲人成网站999久久久综合| 久久精品www| 2021久久国自产拍精品| 五月丁香综合激情六月久久| 亚洲精品久久久www| 久久精品国产免费一区| 久久精品国产亚洲AV无码偷窥| 久久精品国产亚洲av麻豆图片| 欧美激情精品久久久久久| 久久精品无码专区免费| 婷婷综合久久狠狠色99h| 国产精品9999久久久久| 国产成人无码久久久精品一| AV色综合久久天堂AV色综合在| 97精品国产91久久久久久| 久久se精品一区二区| 久久精品国产亚洲一区二区| 婷婷综合久久狠狠色99h|