CComPtr sınıfı
com arabirim işaretçilerine yönetmek için bir akıllı işaretçi sınıf.
template<
class T
>
class CComPtr
Parametreler
- T
Depolanmak üzere işaretçi türünü belirleyen bir com arabirimi.
Üyeler
Ortak Oluşturucusu
Ad |
Description |
---|---|
Oluşturucu. |
Ortak İşleçler
Ad |
Description |
---|---|
Üye İşaretçi İşaretçi atar. |
Notlar
atl kullanan CComPtr ve CComQIPtr com arabirim işaretçilerine yönetmek için.Her ikisi de, türetilmiştir CComPtrBase, ve her ikisi de otomatik başvuru sayım gerçekleştirin.
CComPtr ve CComQIPtr sınıfları otomatik başvuru sayımı gerçekleştirerek bellek sızıntıları ortadan kaldırmak yardımcı olabilir.Aşağıdaki işlevleri hem mantıksal işlemlerin aynısını gerçekleştirir; Ancak, nasıl ikinci sürümü kullanarak daha az hataya olabileceğine dikkat edin CComPtr sınıfı:
// 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;
}
// 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
Hata ayıklama yapılarında kod izleme atlsd.lib bağlantı.
Devralma hiyerarşisi
CComPtr
Gereksinimler
Başlık: atlbase.h