У меня есть функция в IUnknown
-обработанном COM-интерфейсе:
HRESULT GetPassword( [in] long bufferLength, [out] WCHAR* buffer );
, и контракт заключается в том, что реализация должна проверить, достаточно ли большой буфер для хранения извлекаемой строки.Если буфер достаточно велик, строка копируется и возвращается S_OK
, в противном случае функция вернет сообщение об ошибке.
Однако я не могу найти подходящее значение HRESULT
для этого.E_UNEXPECTED
кажется довольно глупым и бесполезным.Самое близкое, что я нашел, это DISP_E_BUFFERTOOSMALL
, но похоже, что это только для IDispatch
-обработанных интерфейсов.
Какой HRESULT
я должен вернуть, если предоставленный буфер слишком мал?