Ken Thomases ken@codeweavers.com writes:
The way I envisioned this was that synthesis would be entirely a query-time phenomenon, perhaps with some caching within user32. So, CountClipboardFormats(), EnumClipboardFormats(), IsClipboardFormatAvailable(), and GetClipboardData() would call into the driver and get a list of the real formats. User32 would then add in any missing formats that are synthesized from those real formats and include them in the count/enumeration/availability check. And, of course, GetClipboardData() would actually synthesize the data, as necessary. None of this would be "stored" on the clipboard in the sense of SetClipboardData(). The drivers would not be informed of the synthesized formats or data.
Going beyond synthesized formats, the high-level vision is that there will be a fully functional clipboard implementation in user32, that should pass all the tests and allow copy/paste between apps inside the same prefix, even with no driver implementation at all.
Once this is working, I believe it will be possible to reimplement the driver side using only the exported Win32 clipboard APIs. I admit that I haven't finished that part yet, so there may turn out to be a need for some private hooks, but I'm hoping we can do without.