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

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

查看 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 的问题。我环顾四周,发现它用于“属性(property)袋”(这是一个可序列化的集合)的上下文中;例如,参见 this .

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

关于windows - TYPE_E_BUFFERTOOSMALL 和 DISP_E_BUFFERTOOSMALL HRESULT 值之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040524/

相关文章:

windows - regsvr32 在当前文件夹中找不到dll

c++ - window操作系统下c控制台运行时禁用全键鼠

windows - Canvas 在 Windows Chrome 中不显示/绘制任何内容

visual-c++ - 如何清除vc++paint中所有以前绘制的图形?

c++ - 错误 LNK2001 : unresolved external symbol (C++)

.net - 将 char* 传递给 .Net 的最佳方式

windows - 在 mac os 上使用 vagrant 时如何打开 windows 桌面?

windows - 如何创建自己的 URL 协议(protocol)? (例如 ://. ..)

c++ - 如何使用 visual c++ 中的 strncpy_s 函数?

c# - 结果 : 0x80040154 (REGDB_E_CLASSNOTREG))