回顾WinError.h我注意到有两个HRESULT
值:
#define DISP_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80020013L)
#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016L)
声称两者都解析为“缓冲太小”的文本,并且它们都具有相同的“设施”部分,并且仅在“代码”部分中有所不同。
这两个值有什么区别?
答案 0 :(得分:2)
DISP_E_BUFFERTOOSMALL
旨在用于IDispatch
接口。
我认为TYPE_E_*
错误是针对类型转换错误的。 TYPE_E_BUFFERTOOSMALL
似乎是转换VARIANT
或PROPVARIANT
的问题。我环顾四周,发现它用于“属性包”(这是一个可序列化的集合)的上下文中;例如,请参阅this。
在other question的上下文中,DISP_E_BUFFERTOOSMALL
更合适。