• <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)  編輯 收藏 引用

            久久久噜噜噜久久中文字幕色伊伊 | 久久亚洲精品无码aⅴ大香| 国内精品久久久久久中文字幕| 久久综合久久综合久久综合| 国产免费久久久久久无码| 亚洲国产综合久久天堂| 久久综合噜噜激激的五月天| 老司机国内精品久久久久| 久久AV无码精品人妻糸列| 精品国产综合区久久久久久| 久久免费看黄a级毛片| 久久婷婷五月综合97色一本一本 | 久久午夜电影网| 一本色道久久HEZYO无码| 66精品综合久久久久久久| 中文字幕日本人妻久久久免费 | 99久久国产热无码精品免费| 伊人色综合久久| 久久久久久精品免费免费自慰| 亚洲狠狠久久综合一区77777| 久久这里只有精品首页| 久久国产高清一区二区三区| 996久久国产精品线观看| 人人妻久久人人澡人人爽人人精品 | 99精品久久久久久久婷婷| 国产2021久久精品| 1000部精品久久久久久久久| 无码人妻少妇久久中文字幕蜜桃| 成人综合伊人五月婷久久| 狠狠色婷婷久久综合频道日韩 | 三级韩国一区久久二区综合 | 91亚洲国产成人久久精品网址| 亚洲精品乱码久久久久久蜜桃图片| 蜜臀久久99精品久久久久久| 26uuu久久五月天| 青青草原综合久久| 国产成人久久777777| 精品无码久久久久久久久久 | 久久亚洲精品无码VA大香大香| 亚洲国产日韩欧美久久| 国产精品久久婷婷六月丁香|