And it doesn't work because `NtUserSetThreadDesktop` is not always called but threads still have an implicit desktop nonetheless.
OK, so we need the validation here after all. I still believe that it may be structured better.
For example, the suggested code (especially `validate_lock_object`) assumes that `object->id` does not change.
Right, it should validate against the cached id instead.