В чем разница между значениями HRESULT TYPE_E_BUFFERTOOSMALL и DISP_E_BUFFERTOOSMALL? - PullRequest
3 голосов
/ 18 февраля 2011

Просмотр WinError.h Я заметил, что есть два HRESULT значения:

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

утверждается, что оба они разрешают "буферизировать слишком маленький" текст, и оба имеют одинаковую часть "средства" и отличаются только частью "код".

В чем разница между этими двумя значениями?

1 Ответ

2 голосов
/ 18 февраля 2011

DISP_E_BUFFERTOOSMALL предназначен для общего использования в IDispatch интерфейсах.

Я считаю, что TYPE_E_* ошибки предназначены для ошибки преобразования типов.TYPE_E_BUFFERTOOSMALL, кажется, для проблем с преобразованием VARIANT с или PROPVARIANT с.Я огляделся и обнаружил, что он используется в контексте «пакетов свойств» (которые являются сериализуемой коллекцией);например, см. this .

В контексте вашего другого вопроса , DISP_E_BUFFERTOOSMALL лучше подходит.

...