Nikolay Sivov wrote:
On 14.07.2015 22:47, Jonas Kümmerlin wrote:
+@ stdcall wine_WritePropertyToBuffer(ptr ptr long ptr long long) +@ stdcall wine_SerializedPropertySize(ptr ptr long long) +@ stdcall wine_ReadProperty(ptr ptr long ptr long long ptr ptr)
We avoid custom exports, unless there's absolutely no way to go without them. If you're sure public API is not enough, you should consider duplication of relevant parts.
The problem at hand: * propsys.dll has to do property serialization/deserialization, at least for getting Stg(De)SerializePropVariant() to work. * Implementing it twice is not really appealing since it amounts to >1000 lines of code. * The only interface to property (de)serialization provided by ole32.dll, the StgConvertVariantToProperty()/ StgConvertPropertyToVariant() functions, are poorly documented, hard to implement (HRESULTs need to be converted to NTSTATUS exceptions) and even more unpleasant to use (because one would need to catch the NTSTATUS exception and convert it back to a HRESULT). This is rather crazy and cumbersome.
How about moving Stg(De)SerializePropVariant() into OLE32.dll and reexporting it from propsys.dll? That could solve the problem without introducing a completely new API.