本文整理汇总了C++中CComQIPtr::GetErrorInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ CComQIPtr::GetErrorInfo方法的具体用法?C++ CComQIPtr::GetErrorInfo怎么用?C++ CComQIPtr::GetErrorInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CComQIPtr
的用法示例。
在下文中一共展示了CComQIPtr::GetErrorInfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _Init
void COledbErrors::_Init(HRESULT Hr)
{
m_lCount = 0;
CComPtr<IErrorInfo> spErrorInfo;
::GetErrorInfo(0, &spErrorInfo);
if( spErrorInfo == NULL ) {
// No error object
m_p[0]._Init(Hr, CComBSTR(L"System"), CComBSTR(L"Function failed."));
m_lCount = 1;
return;
}
CComQIPtr<IErrorRecords> spErrorRecs = spErrorInfo;
if( spErrorRecs != NULL ) {
// Provider supports IErrorRecords
ULONG nCount = 0;
spErrorRecs->GetRecordCount(&nCount);
for( ULONG i = 0; i < nCount; i++ ) {
HRESULT Hr;
ERRORINFO ErrorInfo;
Hr = spErrorRecs->GetBasicErrorInfo(i, &ErrorInfo);
if( FAILED(Hr) ) break;
CComPtr<IErrorInfo> spErrorInfoRec;
Hr = spErrorRecs->GetErrorInfo(i, ::GetUserDefaultLCID(), &spErrorInfoRec);
if( FAILED(Hr) ) break;
CComBSTR bstrSource;
spErrorInfoRec->GetSource(&bstrSource);
CComBSTR bstrMsg;
spErrorInfoRec->GetDescription(&bstrMsg);
m_p[m_lCount]._Init(ErrorInfo.hrError, bstrSource, bstrMsg);
m_lCount++;
if( m_lCount >= MAX_ERRORS ) break;
}
}
if( m_lCount == 0 ) {
// Provider only supports IErrorInfo
CComBSTR bstrSource;
spErrorInfo->GetSource(&bstrSource);
CComBSTR bstrMsg;
spErrorInfo->GetDescription(&bstrMsg);
m_p[m_lCount]._Init(Hr, bstrSource, bstrMsg);
m_lCount++;
}
}