a single locking mechanism could protect both the object and its references
The locking mechanism would be same, yes, but it would have to be nested, since the two levels of indirection have different lifetimes.
In any case, this all seems quite hypothetical for now.
Probably. I wasn't really sure where to draw the line. For example, it would help to know which app requiess dynamically sized HCURSOR objects, or implementing IsWindow() without a NtUser*() syscall (which prompted this MR in the first place).
Maybe all of this is being communicated out of context or privately, which admittedly I don't have access to, but *personally* I'd appreciate the context as someone who had previously put great effort into reviewing the shared object infrastructure :')