Tests show that injected input indeed wait on LL-hooks to be processed. However real hardware input isn't normally sent by the processes themselves like Wine does, and it is unnecessary to wait for the LL-hooks to be processed. The applications threads should instead return from the ProcessEvent call when input is received, and process their hooks later as needed, or do some other tasks application might expect them to.