You are trying to use a direct I/O write with something that is not an I/O mapped device. This would be completely unworkable, except when trapped by operating system protection (or virtualization) mechanisms and proxied to the more distantly connected hardware. However, that is not the real problem which you face.
More problematically, most USB-printer adapters are not statically addressable as GPIOs in the manner that local bus parallel ports were, even if you write a custom USB driver for them. You may be able to gain control of the control signals, but probably not set values on the data pins the way many became used to doing.
You'd be better off with a more generic USB I/O device, either based on a general purpose microcontroller or something intended for GPIO usage such as an FT245.
However, this will have higher latency, so for anything timing critical your options generally are either switching to an "old computer" with a real parallel port, or else offloading the entire timing critical subsystem to an external microcontroller, and making higher level requests over the USB for it to accomplish complete tasks, rather than simply to set this line or that line to a level.