查看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似乎是由于转换VARIANTPROPVARIANT引起的问题。我环顾四周,发现它用于“属性包”(可序列化的集合)的上下文中;例如,请参见this

other question的上下文中,DISP_E_BUFFERTOOSMALL是更好的选择。

09-25 18:33