Re: [openchange]Question on SPropValue vs. mapi_SPropValue
Milan Crha <mcrha <at> redhat.com>
2011-12-07 08:41:46 GMT
On Tue, 2011-12-06 at 14:04 -0500, Wolfgang Sourdeau wrote:
> Those structures correspond to different representations of the same
> datatypes, depending on where they are rendered or parsed in the protocol.
> For example, a PT_BINARY property will always be rendered as a
> mapi_SPropValue when transferred via a RopGetProperties or a
> RopQueryRows but as a SPropValue when transferred via the stream ROPs or
> the FastTransfer ROPs.
> Basically, the mapi_ ones are made to not take more than 32767 bytes
> while the non-mapi ones can be 2^32-1 bytes long, this does not apply to
> small values but will apply to string, binary and array values...
thanks for the answer. I see that GetProps takes struct SPropValue **
and GetPropsAll takes struct mapi_SPropValue_array *, still, if I recall
correctly, both will fail with PidTagBody or PidTagHtml larger than 4KB.
It's quite long time I played with this, thus it's possible I'm wrong
Anyway, OK, let's keep there mapi_SPropValue and SPropValue structs, but
join mapi_SPropValue_CTR and SPropValue_CTR into one structure seems to
me as a good step, feel free to call it a cleanup. I see that MSDN
doesn't distinguish between these two , though they have it done
slightly differently with compare to OpenChange. (Some values are
probably stored as PT_PTR, to avoid circular dependencies, seems to me).