2011-02-18 34 views
3

回顧WinError.h中,我注意到這裏有兩種HRESULT值:TYPE_E_BUFFERTOOSMALL和DISP_E_BUFFERTOOSMALL HRESULT值有什麼區別?

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

兩者都宣稱決心「緩衝區太小」文本,他們都具有相同的「設施」的一部分,只有在不同的「代碼「部分。

這兩個值有什麼區別?

回答

2

DISP_E_BUFFERTOOSMALL旨在通用於IDispatch接口。

我認爲TYPE_E_*錯誤是用於類型轉換錯誤。 TYPE_E_BUFFERTOOSMALL似乎是轉換VARIANT s或PROPVARIANT s的問題。我環顧四周,發現它在「物業包」(這是一個可序列化的集合)的環境中使用;例如,請參見this

在您的other question的情況下,DISP_E_BUFFERTOOSMALL更合適。

+0

TYPE_E_ *是ITypeLib錯誤。 – 2011-02-19 04:57:39