Sorry for the late review here.
Do we actually need write access for anything that FILE_WRITE_ATTRIBUTES does? And if not, the condition from 3/3 seems a little odd.
I guess O_TRUNC implies write access, but then it shouldn't involve FILE_WRITE_ATTRIBUTES. (Put another way: can we create a file with FILE_SUPERSEDE and (only) FILE_READ_DATA, and is that then broken in current Wine?)
And from a quick reading of the documentation, I don't think O_CREAT requires POSIX write access? I guess it's here to make the file writable, but again, that seems like it'd be broken in cases unrelated to FILE_WRITE_ATTRIBUTES? In which case we should probably either fchmod() the file after creation, or fcntl() the handle to give it the right access. [Or is the latter even necessary? I don't remember how our access checking works.]