查看WinError.h时,我注意到有两个HRESULT
值:
#define DISP_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80020013L)
#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016L)
两者都声称解析为“缓冲区太小”的文本,并且它们都具有相同的“功能”部分,只是“代码”部分不同。
这两个值有什么区别?
最佳答案
DISP_E_BUFFERTOOSMALL
旨在用于IDispatch
接口(interface)中。
我相信TYPE_E_*
错误旨在用于类型转换错误。 TYPE_E_BUFFERTOOSMALL
似乎是由于转换VARIANT
或PROPVARIANT
引起的问题。我环顾四周,发现它用于“属性包”(可序列化的集合)的上下文中;例如,请参见this。
在other question的上下文中,DISP_E_BUFFERTOOSMALL
是更好的选择。