CHAINEDEIAPI HRESULT __stdcall CreateChainedErrorInfo(HRESULT hrInner, REFGUID guid,
LPCOLESTR pszSource, LPCOLESTR pszDescription,
LPCOLESTR pszHelpFile, DWORD dwHelpContext,
IErrorInfo** ppErrorInfo)
{
HRESULT hr;
if(ppErrorInfo == NULL) return E_POINTER;
*ppErrorInfo = NULL;
CComPtr<IErrorInfo> spErrorInfo;
hr = GetErrorInfo(0, &spErrorInfo);
if(FAILED(hr)) return hr;
CComObject< CErrorInfoImpl >* pErrorInfo = NULL;
hr = CComObject< CErrorInfoImpl >::CreateInstance(&pErrorInfo);
if(FAILED(hr)) return hr;
pErrorInfo->AddRef();
hr = pErrorInfo->Initialize(hrInner, guid, pszSource, pszDescription, pszHelpFile, dwHelpContext, spErrorInfo);
if(SUCCEEDED(hr))
{
hr = pErrorInfo->QueryInterface(ppErrorInfo);
}
pErrorInfo->Release();
return hr;
}