• <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>

            大龍的博客

            常用鏈接

            統計

            最新評論

            CComPtr Class ---- 轉自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 大龍 閱讀(464) 評論(0)  編輯 收藏 引用

            国产精品久久久久久搜索| 久久婷婷五月综合97色直播| 国产麻豆精品久久一二三| 久久夜色精品国产欧美乱| 久久国产精品久久国产精品| 国产精品无码久久久久| 国内精品伊人久久久久777| 色综合久久天天综合| 久久久久亚洲精品日久生情 | 一本久久久久久久| 国产精品成人久久久| 日本三级久久网| 国产精品99久久免费观看| 亚洲人成无码www久久久| 国产ww久久久久久久久久| 香蕉久久夜色精品升级完成| 中文字幕无码av激情不卡久久| 亚洲国产精品久久久久久| 亚洲va中文字幕无码久久| 热RE99久久精品国产66热| 岛国搬运www久久| avtt天堂网久久精品| 久久久久亚洲av无码专区| 亚洲а∨天堂久久精品| 精品久久久久久无码国产| 久久久精品人妻一区二区三区四| 四虎影视久久久免费| 久久久久婷婷| 热久久国产欧美一区二区精品| 国产精品亚洲美女久久久| 狠狠色伊人久久精品综合网| 久久国产精品-久久精品| 精品熟女少妇a∨免费久久| 亚洲国产美女精品久久久久∴| 久久久久人妻一区二区三区| 东方aⅴ免费观看久久av| 色妞色综合久久夜夜| 一本色道久久99一综合| 亚洲午夜无码久久久久| 精品熟女少妇a∨免费久久| 91精品国产综合久久香蕉 |