TYPE_E_BUFFERTOOSMALL和DISP_E_BUFFERTOOSMALL HRESULT值之间有什么区别?

时间:2011-02-18 11:05:59

标签: windows visual-c++ com error-handling

回顾WinError.h我注意到有两个HRESULT值:

#define DISP_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80020013L)
#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016L)

声称两者都解析为“缓冲太小”的文本,并且它们都具有相同的“设施”部分,并且仅在“代码”部分中有所不同。

这两个值有什么区别?

1 个答案:

答案 0 :(得分:2)

DISP_E_BUFFERTOOSMALL旨在用于IDispatch接口。

我认为TYPE_E_*错误是针对类型转换错误的。 TYPE_E_BUFFERTOOSMALL似乎是转换VARIANTPROPVARIANT的问题。我环顾四周,发现它用于“属性包”(这是一个可序列化的集合)的上下文中;例如,请参阅this

other question的上下文中,DISP_E_BUFFERTOOSMALL更合适。