加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 当提供的缓冲区太小时返回哪个HRESULT?

发布时间:2020-12-14 01:37:14 所属栏目:Windows 来源:网络整理
导读:我在IUnknown派生的COM接口中有一个函数: HRESULT GetPassword( [in] long bufferLength,[out] WCHAR* buffer ); 并且合同是实现应该检查缓冲区是否足够大以存储被检索的字符串.如果缓冲区足够大,则复制字符串并返回S_OK,否则该函数将返回错误指示. 但是我
我在IUnknown派生的COM接口中有一个函数:

HRESULT GetPassword( [in] long bufferLength,[out] WCHAR* buffer );

并且合同是实现应该检查缓冲区是否足够大以存储被检索的字符串.如果缓冲区足够大,则复制字符串并返回S_OK,否则该函数将返回错误指示.

但是我找不到合适的HRESULT值. E_UNEXPECTED似乎相当愚蠢和无益.我找到的最接近的是DISP_E_BUFFERTOOSMALL,但看起来它只适用于IDispatch派生的接口.

如果提供的缓冲区太小,我应该返回哪个HRESULT?

解决方法

您无法返回DISP_E_ *错误,您没有实现IDispatch. E_INVALIDARG在这里是正确的,它甚至是明确的,不会经常发生.始终实现ISupportErrorInfo以生成良好的错误消息,ATL使用Error()方法使其变得微不足道.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读