On 04.02.2016 12:31, Alistair Leslie-Hughes wrote:
+[
- object,
- uuid(0c733a11-2a1c-11ce-ade5-00aa0044773d),
- pointer_default(unique)
+] +interface IColumnsInfo : IUnknown +{
- [local]
- HRESULT GetColumnInfo([in, out] DBORDINAL *columns,[out, size_is(*columns)] DBCOLUMNINFO **colinfo,
[out] OLECHAR *stringsbuffer);
- [call_as(GetColumnInfo)]
- HRESULT RemoteGetColumnInfo([in, out] DBORDINAL *columns, [out, size_is((ULONG)*columns)] DBCOLUMNINFO **col_info,
[out, size_is((ULONG)*columns)] DBBYTEOFFSET **name_offsets,
[out, size_is((ULONG)*columns)] DBBYTEOFFSET **columnid_offsets,
[in, out] DBLENGTH *string_len, [in, out, unique, size_is((ULONG)*string_len)] OLECHAR **stringsbuffer,
[out] IErrorInfo **error);
ULONG in SDK comes from DBORDINAL being ULONGLONG vs ULONG depending on bitness, I agree we probably don't have to duplicate that, and can always use cast. In any case size_is attribute is used in a wrong way, and at least one method prototype does not match SDK.