繁体   English   中英

COM:如何获取有关COM错误的更多详细信息?

[英]COM: how to get more details about COM errors?

映入眼帘,

使用DirectX时,你会得到一个名为DxErr9.h的#include这个很棒的标题,它有很多有用的函数,如:

DXGetErrorString9

DXGetErrorDescription9

他们会告诉您关于HR给出的错误所需要知道的一切。

但是现在使用COM和OLE,我发现自己对COM函数返回的HRESULTS有点自负。 在这一点上真的只是我和MSDN,还是在OLE DB中有类似的帮助函数,我还没有遇到过?

此外,您应该查看错误信息 COM系统的一部分是错误信息的概念,它是一个每线程的全局,可以在不同的时间设置和清除 您在响应错误时查询它 ,如果设置了错误,它将比仅查看HRESULT有更多有用的信息。

HRESULT hr=something();
if (FAILED(hr))
{
  CComPtr<IErrorInfo> err;
  ::GetErrorInfo(0, &err);
  if (err)
  {
    CComBSTR description;
    err->GetDescription(&description);

    // description will be a more descriptive error message than just formatting the 
    // HRESULT because it is set by the COM server code at the point of the error
  }
}

使用_com_error获取有意义的字符串:

#include <comdef.h>

HRESULT hr = SomeComFunc();
if ( FAILED(hr) )
{
  _com_error err(hr);
  LPTCSTR szErrMsg = err.ErrorMessage();
  // log szErrMsg or whatever 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM