我如何理解HRESULT -2003292276?

时间:2013-07-08 20:38:55

标签: bitmap msdn wic

如何解释HRESULT -2003292276

通过调用IWICFactory factory->CreateBitmapFromMemory()

返回
hr = m_factory->CreateBitmapFromMemory(
  m_format.imageWidthPels, 
  m_format.imageHeightPels, 
  GUID_WICPixelFormat32bppBGR, 
  m_format.strideSize,
  cbBitmapData,
  data,
  &pBitmap);

3 个答案:

答案 0 :(得分:1)

来自Wikipedia

  

winerror.h文件定义了一些通用的HRESULT值。硬编码的HRESULT值有时会编码在给定子系统的关联头文件(.h文件)中。这些值也在使用Microsoft Windows平台SDK或DDK的相应标头(.h)文件中定义。

     

要检查返回HRESULT的调用是否成功,请确保S字段为0(即数字为非负数)或使用FAILED()宏。要获取HRESULT的Code部分,请使用HRESULT_CODE()宏。您还可以使用名为ERR.EXE的工具获取值并将其转换为相应的错误字符串。另一个名为ERRLOOK.EXE的工具也可用于显示与给定HRESULT值关联的错误字符串。 ERRLOOK.EXE可以在Visual Studio命令提示符下运行。

     

Windows原生SetErrorInfoGetErrorInfo API用于将HRESULT返回代码与对应的IErrorInfo对象相关联。

     

FormatMessage API函数可用于将一些非IErrorInfo HRESULT转换为用户可读的字符串。

答案 1 :(得分:1)

  

Codec Error Codes

     

本文档包含Windows Imaging Component(WIC)定义的错误代码列表。

| Error Code                      | Error Value |
|---------------------------------|-------------|
| WINCODEC_ERR_INSUFFICIENTBUFFER | 0x88982f8C  |

你正在创建一个太大的图像。

答案 2 :(得分:0)

在网络上搜索HRESULT可能很棘手,因为您通常必须将大的负数转换为十六进制并进行搜索(大概是Ian在正确答案中所做的事情)。 Ted还描述了诸如ERRLOOK.exe这样的命令行工具(这是更好的命令行选项之一),它将把数字转换成定义或错误描述。

但是我们发现Web浏览器有时比cmd提示符更方便,因此我们创建了http://errorco.de,其中包含许多错误消息,您可以根据手头的数量进行搜索。

例如,将您的-2003292276带到http://errorco.de会给您:

This errorco.de is a pseudonym for winerror.h 0x88982F8C.
See that errorco.de for possible comments or remarks.

winerror.h -2003292276
#define WINCODEC_ERR_INSUFFICIENTBUFFER
The buffer allocated is insufficient.

Ian和Ted提到的所有信息都在一页上(并在需要时易于与他人共享)。也许您会发现它有用。